Aller au contenu principal

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.

Intégration de WebdriverIO avec des frameworks de test

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 install @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 install @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 install @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 :

Ajustement des options via la ligne de commande

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

Welcome! How can I help?

WebdriverIO AI Copilot