Aller au contenu principal

Configuration TypeScript

Vous pouvez écrire des tests en utilisant TypeScript pour bénéficier de l'auto-complétion et de la sécurité des types.

Vous aurez besoin de tsx installé dans les devDependencies, via :

$ npm install tsx --save-dev

WebdriverIO détectera automatiquement si ces dépendances sont installées et compilera votre configuration et vos tests pour vous. Assurez-vous d'avoir un fichier tsconfig.json dans le même répertoire que votre configuration WDIO.

TSConfig personnalisé​

Si vous devez définir un chemin différent pour tsconfig.json, veuillez définir la variable d'environnement TSCONFIG_PATH avec votre chemin souhaité, ou utiliser le paramètre tsConfigPath de la configuration wdio.

Alternativement, vous pouvez utiliser la variable d'environnement pour tsx.

Vérification des types​

Notez que tsx ne prend pas en charge la vérification des types - si vous souhaitez vérifier vos types, vous devrez le faire dans une étape séparée avec tsc.

Configuration du framework​

Votre tsconfig.json doit contenir les éléments suivants :

tsconfig.json
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types"]
}
}

Veuillez éviter d'importer explicitement webdriverio ou @wdio/sync. Les types WebdriverIO et WebDriver sont accessibles de n'importe où une fois ajoutés à types dans tsconfig.json. Si vous utilisez des services WebdriverIO supplémentaires, des plugins ou le package d'automatisation devtools, veuillez également les ajouter à la liste types car beaucoup fournissent des typages supplémentaires.

Types de framework​

Selon le framework que vous utilisez, vous devrez ajouter les types de ce framework à la propriété types de votre tsconfig.json, ainsi qu'installer ses définitions de types. C'est particulièrement important si vous souhaitez avoir une prise en charge des types pour la bibliothèque d'assertions intégrée expect-webdriverio.

Par exemple, si vous décidez d'utiliser le framework Mocha, vous devez installer @types/mocha et l'ajouter comme ceci pour avoir tous les types disponibles globalement :

tsconfig.json
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types", "@wdio/mocha-framework"]
}
}

Services​

Si vous utilisez des services qui ajoutent des commandes à la portée du navigateur, vous devez également les inclure dans votre tsconfig.json. Par exemple, si vous utilisez le @wdio/lighthouse-service, assurez-vous de l'ajouter également aux types, par exemple :

tsconfig.json
{
"compilerOptions": {
"types": [
"node",
"@wdio/globals/types",
"@wdio/mocha-framework",
"@wdio/lighthouse-service"
]
}
}

L'ajout de services et de rapporteurs à votre configuration TypeScript renforce également la sécurité des types de votre fichier de configuration WebdriverIO.

Définitions de types​

Lors de l'exécution des commandes WebdriverIO, toutes les propriétés sont généralement typées afin que vous n'ayez pas à vous soucier d'importer des types supplémentaires. Cependant, il existe des cas où vous souhaitez définir des variables à l'avance. Pour garantir que celles-ci sont typées en toute sécurité, vous pouvez utiliser tous les types définis dans le package @wdio/types. Par exemple, si vous souhaitez définir l'option remote pour webdriverio, vous pouvez faire :

import type { Options } from '@wdio/types'

// Voici un exemple où vous pourriez vouloir importer les types directement
const remoteConfig: Options.WebdriverIO = {
hostname: 'http://localhost',
port: '4444' // Erreur : Le type 'string' n'est pas assignable au type 'number'.ts(2322)
capabilities: {
browserName: 'chrome'
}
}

// Pour d'autres cas, vous pouvez utiliser l'espace de noms `WebdriverIO`
export const config: WebdriverIO.Config = {
...remoteConfig
// Autres options de configuration
}

Conseils et astuces​

Compilation et Lint​

Pour être entièrement sûr, vous pouvez envisager de suivre les meilleures pratiques : compilez votre code avec le compilateur TypeScript (exécutez tsc ou npx tsc) et utilisez eslint sur un hook pre-commit.

Welcome! How can I help?

WebdriverIO AI Copilot