Frameworks
WebdriverIO Runner prend en charge nativement Mocha, Jasmine et Cucumber.js. Vous pouvez également l'intégrer avec des frameworks open-source tiers, comme Serenity/JS.
Pour intégrer WebdriverIO avec un framework de test, vous avez besoin d'un package adaptateur disponible sur NPM. Notez que le package adaptateur doit être installé au même endroit que WebdriverIO. Donc, si vous avez installé WebdriverIO globalement, assurez-vous d'installer également le package adaptateur globalement.
L'intégration de WebdriverIO avec un framework de test vous permet d'accéder à l'instance WebDriver en utilisant la variable globale browser
dans vos fichiers de spécification ou définitions d'étapes.
Notez que WebdriverIO prendra également en charge l'instanciation et la fin de la session Selenium, vous n'avez donc pas à le faire
vous-même.
Utilisation de Mocha
Tout d'abord, installez le package adaptateur depuis NPM :
- npm
- Yarn
- pnpm
npm install @wdio/mocha-framework --save-dev
yarn add @wdio/mocha-framework --dev
pnpm add @wdio/mocha-framework --save-dev
Par défaut, WebdriverIO fournit une bibliothèque d'assertion intégrée que vous pouvez utiliser immédiatement :
describe('mon site web génial', () => {
it('devrait faire des assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
WebdriverIO prend en charge les interfaces BDD
(par défaut), TDD
et QUnit
de Mocha interfaces.
Si vous souhaitez écrire vos spécifications en style TDD, définissez la propriété ui
dans votre configuration mochaOpts
sur tdd
. Maintenant, vos fichiers de test doivent être écrits comme ceci :
suite('mon site web génial', () => {
test('devrait faire des assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
Si vous souhaitez définir d'autres paramètres spécifiques à Mocha, vous pouvez le faire avec la clé mochaOpts
dans votre fichier de configuration. Une liste de toutes les options se trouve sur le site web du projet Mocha.
Remarque : WebdriverIO ne prend pas en charge l'utilisation obsolète des callbacks done
dans Mocha :
it('devrait tester quelque chose', (done) => {
done() // génère "done is not a function"
})
Options de Mocha
Les options suivantes peuvent être appliquées dans votre wdio.conf.js
pour configurer votre environnement Mocha. Remarque : toutes les options ne sont pas prises en charge, par exemple, l'application de l'option parallel
provoquera une erreur car le testrunner WDIO a sa propre façon d'exécuter des tests en parallèle. Vous pouvez passer ces options de framework comme arguments, par exemple :
wdio run wdio.conf.ts --mochaOpts.grep "mon test" --mochaOpts.bail --no-mochaOpts.checkLeaks
Cela transmettra les options Mocha suivantes :
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
Les options Mocha suivantes sont prises en charge :
require
L'option require
est utile lorsque vous souhaitez ajouter ou étendre des fonctionnalités de base (option de framework WebdriverIO).
Type: string|string[]
Défaut: []
compilers
Utilisez le(s) module(s) donné(s) pour compiler des fichiers. Les compilateurs seront inclus avant les requires (option de framework WebdriverIO).
Type: string[]
Défaut: []
allowUncaught
Propager les erreurs non capturées.
Type: boolean
Défaut: false
bail
Arrêter après le premier échec de test.
Type: boolean
Défaut: false
checkLeaks
Vérifier les fuites de variables globales.
Type: boolean
Défaut: false
delay
Retarder l'exécution de la suite racine.
Type: boolean
Défaut: false
fgrep
Filtre de test pour une chaîne donnée.
Type: string
Défaut: null
forbidOnly
Les tests marqués only
échouent la suite.
Type: boolean
Défaut: false
forbidPending
Les tests en attente échouent la suite.
Type: boolean
Défaut: false
fullTrace
Trace complète de la pile lors d'un échec.
Type: boolean
Défaut: false
global
Variables attendues dans la portée globale.
Type: string[]
Défaut: []
grep
Filtre de test pour une expression régulière donnée.
Type: RegExp|string
Défaut: null
invert
Inverser les correspondances du filtre de test.
Type: boolean
Défaut: false
retries
Nombre de fois pour réessayer les tests échoués.
Type: number
Défaut: 0
timeout
Valeur de seuil de délai d'attente (en ms).
Type: number
Défaut: 30000
Utilisation de Jasmine
Tout d'abord, installez le package adaptateur depuis NPM :
- npm
- Yarn
- pnpm
npm install @wdio/jasmine-framework --save-dev
yarn add @wdio/jasmine-framework --dev
pnpm add @wdio/jasmine-framework --save-dev
Vous pouvez ensuite configurer votre environnement Jasmine en définissant une propriété jasmineOpts
dans votre configuration. Une liste de toutes les options se trouve sur le site web du projet Jasmine.
Options de Jasmine
Les options suivantes peuvent être appliquées dans votre wdio.conf.js
pour configurer votre environnement Jasmine en utilisant la propriété jasmineOpts
. Pour plus d'informations sur ces options de configuration, consultez la documentation Jasmine. Vous pouvez passer ces options de framework comme arguments, par exemple :
wdio run wdio.conf.ts --jasmineOpts.grep "mon test" --jasmineOpts.failSpecWithNoExpectations --no-jasmineOpts.random
Cela transmettra les options Mocha suivantes :
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
Les options Jasmine suivantes sont prises en charge :
defaultTimeoutInterval
Intervalle de délai d'attente par défaut pour les opérations Jasmine.
Type: number
Défaut: 60000
helpers
Tableau de chemins de fichiers (et globs) relatifs à spec_dir à inclure avant les spécifications jasmine.
Type: string[]
Défaut: []
requires
L'option requires
est utile lorsque vous souhaitez ajouter ou étendre des fonctionnalités de base.
Type: string[]
Défaut: []
random
Indique s'il faut randomiser l'ordre d'exécution des spécifications.
Type: boolean
Défaut: true
seed
Graine à utiliser comme base de randomisation. Null fait en sorte que la graine soit déterminée aléatoirement au début de l'exécution.
Type: Function
Défaut: null
failSpecWithNoExpectations
Indique s'il faut faire échouer la spécification si elle n'a exécuté aucune attente. Par défaut, une spécification qui n'a exécuté aucune attente est signalée comme réussie. Définir cette option sur true signalera une telle spécification comme un échec.
Type: boolean
Défaut: false
oneFailurePerSpec
Indique s'il faut faire en sorte que les spécifications n'aient qu'un seul échec d'attente.
Type: boolean
Défaut: false
specFilter
Fonction à utiliser pour filtrer les spécifications.
Type: Function
Défaut: (spec) => true
grep
Exécuter uniquement les tests correspondant à cette chaîne ou expression régulière. (Applicable uniquement si aucune fonction specFilter
personnalisée n'est définie)
Type: string|Regexp
Défaut: null
invertGrep
Si vrai, inverse les tests correspondants et n'exécute que les tests qui ne correspondent pas à l'expression utilisée dans grep
. (Applicable uniquement si aucune fonction specFilter
personnalisée n'est définie)
Type: boolean
Défaut: false
Utilisation de Cucumber
Tout d'abord, installez le package adaptateur depuis NPM :
- npm
- Yarn
- pnpm
npm install @wdio/cucumber-framework --save-dev
yarn add @wdio/cucumber-framework --dev
pnpm add @wdio/cucumber-framework --save-dev
Si vous souhaitez utiliser Cucumber, définissez la propriété framework
sur cucumber
en ajoutant framework: 'cucumber'
au fichier de configuration.
Les options pour Cucumber peuvent être données dans le fichier de configuration avec cucumberOpts
. Consultez la liste complète des options ici.
Pour démarrer rapidement avec Cucumber, jetez un œil à notre projet cucumber-boilerplate
qui est livré avec toutes les définitions d'étapes dont vous avez besoin pour commencer, et vous écrirez des fichiers de fonctionnalités immédiatement.
Options de Cucumber
Les options suivantes peuvent être appliquées dans votre wdio.conf.js
pour configurer votre environnement Cucumber en utilisant la propriété cucumberOpts
:
Les cucumberOpts
, comme les tags
personnalisés pour filtrer les tests, peuvent être spécifiés via la ligne de commande. Cela se fait en utilisant le format cucumberOpts.{optionName}="value"
.
Par exemple, si vous souhaitez exécuter uniquement les tests qui sont tagués avec @smoke
, vous pouvez utiliser la commande suivante :
# Lorsque vous souhaitez exécuter uniquement les tests qui portent le tag "@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.tags="@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.name="nom de scénario" --cucumberOpts.failFast
Cette commande définit l'option tags
dans cucumberOpts
sur @smoke
, garantissant que seuls les tests avec ce tag sont exécutés.
backtrace
Afficher la trace complète pour les erreurs.
Type: Boolean
Défaut: true
requireModule
Requérir des modules avant de requérir des fichiers de support.
Type: string[]
Défaut: []
Exemple:
cucumberOpts: {
requireModule: ['@babel/register']
// ou
requireModule: [
[
'@babel/register',
{
rootMode: 'upward',
ignore: ['node_modules']
}
]
]
}
failFast
Abandonner l'exécution au premier échec.
Type: boolean
Défaut: false
name
Exécuter uniquement les scénarios dont le nom correspond à l'expression (répétable).
Type: RegExp[]
Défaut: []
require
Requérir des fichiers contenant vos définitions d'étapes avant d'exécuter les fonctionnalités. Vous pouvez également spécifier un glob pour vos définitions d'étapes.
Type: string[]
Défaut: []
Exemple:
cucumberOpts: {
require: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}
import
Chemins vers votre code de support, pour ESM.
Type: String[]
Défaut: []
Exemple:
cucumberOpts: {
import: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}
strict
Échouer s'il y a des étapes non définies ou en attente.
Type: boolean
Défaut: false
tags
Exécuter uniquement les fonctionnalités ou scénarios avec des tags correspondant à l'expression. Veuillez consulter la documentation Cucumber pour plus de détails.
Type: String
Défaut: ``
timeout
Délai d'attente en millisecondes pour les définitions d'étapes.
Type: Number
Défaut: 30000
retry
Spécifiez le nombre de fois pour réessayer les cas de test échoués.
Type: Number
Défaut: 0
retryTagFilter
Réessaye uniquement les fonctionnalités ou scénarios avec des tags correspondant à l'expression (répétable). Cette option nécessite que '--retry' soit spécifié.
Type: RegExp
language
Langue par défaut pour vos fichiers de fonctionnalités
Type: String
Défaut: en
order
Exécuter les tests dans un ordre défini / aléatoire
Type: String
Défaut: defined
format
Nom et chemin du fichier de sortie du formateur à utiliser. WebdriverIO prend principalement en charge uniquement les Formateurs qui écrivent la sortie dans un fichier.
Type: string[]
formatOptions
Options à fournir aux formateurs
Type: object
tagsInTitle
Ajouter des tags cucumber au nom de la fonctionnalité ou du scénario
Type: Boolean
Défaut: `false