2017-10-18 6 views
0

Spectron est un cadre node.js pour l'automatisation des applications Electron. J'utilise Spectron avec AVA et Typescript pour effectuer des tests d'intégration automatisés. J'utilise AVA's suggest method pour rendre le type de contexte de test, mais je ne suis pas capable de comprendre comment obtenir la sécurité de type sur la propriété client de Spectron qui est un client webdriverio. Je suis seulement capable de voir quelques propriétés que le fichier de définition de tapuscrit de Spectron a fourni et ceci cause des erreurs de transpile de tapuscrit.Comment est-ce que j'implémente le webdriverio de Typescript pour le SpectronClient?

Ce sont les erreurs que je reçois:

src/pages/drive-shell.ts(7,34): error TS2339: Property 'waitForVisible' does not exist on type 'SpectronClient'. 
src/pages/login.ts(7,34): error TS2339: Property 'waitForVisible' does not exist on type 'SpectronClient'. 
src/pages/login.ts(11,21): error TS2339: Property 'setValue' does not exist on type 'SpectronClient'. 
src/pages/login.ts(12,21): error TS2339: Property 'setValue' does not exist on type 'SpectronClient'. 
src/pages/login.ts(13,21): error TS2339: Property 'click' does not exist on type 'SpectronClient'. 

Répondre

0

En fait, je résolu ce problème que je tapais la question, mais je pensais que depuis fait quelques recherches et ne pouvait pas trouver des solutions que je pensais que je pourrais répondre ma propre question afin d'aider les autres.

je devais obtenir les typages pour WebDriver io

npm i -S @types/webdriverio 

puis j'importer ce type dans mon script login.ts et l'utiliser comme SpectronClient

import * as WebdriverIO from 'webdriverio'; 
export class Login { 
    constructor(private client: WebdriverIO.Client<void>) { } 

    public async waitForPageToLoad() { 
     return await this.client.waitForVisible('#username'); 
    } 

    public login(username: string, password: string) { 
     this.client.setValue('#username', username); 
     this.client.setValue('#Password', password); 
     this.client.click('#login'); 
    } 
} 

et voici mon plein test.ts essai script