Modules
WebdriverIO publie divers modules sur NPM et d'autres registres que vous pouvez utiliser pour créer votre propre framework d'automatisation. Consultez plus de documentation sur les types de configuration WebdriverIO ici.
webdriver
et devtools
Les packages de protocole (webdriver
et devtools
) exposent une classe avec les fonctions statiques suivantes qui vous permettent d'initier des sessions :
newSession(options, modifier, userPrototype, customCommandWrapper)
Démarre une nouvelle session avec des capacités spécifiques. Selon la réponse de session, des commandes de différents protocoles seront fournies.
Paramètres
options
: Options WebDrivermodifier
: fonction qui permet de modifier l'instance client avant qu'elle ne soit retournéeuserPrototype
: objet de propriétés qui permet d'étendre le prototype de l'instancecustomCommandWrapper
: fonction qui permet d'envelopper des fonctionnalités autour des appels de fonction
Retourne
- Objet Browser
Exemple
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})
attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)
Se connecte à une session WebDriver ou DevTools en cours d'exécution.
Paramètres
attachInstance
: instance à laquelle se connecter ou au moins un objet avec une propriétésessionId
(par exemple{ sessionId: 'xxx' }
)modifier
: fonction qui permet de modifier l'instance client avant qu'elle ne soit retournéeuserPrototype
: objet de propriétés qui permet d'étendre le prototype de l'instancecustomCommandWrapper
: fonction qui permet d'envelopper des fonctionnalités autour des appels de fonction
Retourne
- Objet Browser
Exemple
const client = await WebDriver.newSession({...})
const clonedClient = await WebDriver.attachToSession(client)
reloadSession(instance)
Recharge une session à partir de l'instance fournie.
Paramètres
instance
: instance de package à recharger
Exemple
const client = await WebDriver.newSession({...})
await WebDriver.reloadSession(client)
webdriverio
Comme pour les packages de protocole (webdriver
et devtools
), vous pouvez également utiliser les API du package WebdriverIO pour gérer les sessions. Les API peuvent être importées en utilisant import { remote, attach, multiremote } from 'webdriverio'
et contiennent les fonctionnalités suivantes :
remote(options, modifier)
Démarre une session WebdriverIO. L'instance contient toutes les commandes du package de protocole mais avec des fonctions d'ordre supérieur supplémentaires, voir API docs.
Paramètres
options
: Options WebdriverIOmodifier
: fonction qui permet de modifier l'instance client avant qu'elle ne soit retournée
Retourne
- Objet Browser
Exemple
import { remote } from 'webdriverio'
const browser = await remote({
capabilities: { browserName: 'chrome' }
})
attach(attachOptions)
Se connecte à une session WebdriverIO en cours d'exécution.
Paramètres
attachOptions
: instance à laquelle se connecter ou au moins un objet avec une propriétésessionId
(par exemple{ sessionId: 'xxx' }
)
Retourne
- Objet Browser
Exemple
import { remote, attach } from 'webdriverio'
const browser = await remote({...})
const newBrowser = await attach(browser)
multiremote(multiremoteOptions)
Initie une instance multiremote qui vous permet de contrôler plusieurs sessions au sein d'une seule instance. Consultez nos exemples multiremote pour des cas d'utilisation concrets.
Paramètres
multiremoteOptions
: un objet avec des clés représentant le nom du navigateur et leurs Options WebdriverIO.
Retourne
- Objet Browser
Exemple
import { multiremote } from 'webdriverio'
const matrix = await multiremote({
myChromeBrowser: {
capabilities: { browserName: 'chrome' }
},
myFirefoxBrowser: {
capabilities: { browserName: 'firefox' }
}
})
await matrix.url('http://json.org')
await matrix.getInstance('browserA').url('https://google.com')
console.log(await matrix.getTitle())
// returns ['Google', 'JSON']
@wdio/cli
Au lieu d'appeler la commande wdio
, vous pouvez également inclure le test runner en tant que module et l'exécuter dans un environnement arbitraire. Pour cela, vous devrez importer le package @wdio/cli
en tant que module, comme ceci :
- EcmaScript Modules
- CommonJS
import Launcher from '@wdio/cli'
const Launcher = require('@wdio/cli').default
Après cela, créez une instance du lanceur et exécutez le test.
Launcher(configPath, opts)
Le constructeur de la classe Launcher
attend l'URL du fichier de configuration et un objet opts
avec des paramètres qui remplaceront ceux de la configuration.
Paramètres
configPath
: chemin vers lewdio.conf.js
à exécuteropts
: arguments (<RunCommandArguments>
) pour remplacer les valeurs du fichier de configuration
Exemple
const wdio = new Launcher(
'/path/to/my/wdio.conf.js',
{ spec: '/path/to/a/single/spec.e2e.js' }
)
wdio.run().then((exitCode) => {
process.exit(exitCode)
}, (error) => {
console.error('Launcher failed to start the test', error.stacktrace)
process.exit(1)
})
La commande run
renvoie une Promise. Elle est résolue si les tests ont été exécutés avec succès ou ont échoué, et elle est rejetée si le lanceur n'a pas pu démarrer l'exécution des tests.
@wdio/browser-runner
Lorsque vous exécutez des tests unitaires ou de composants à l'aide du browser runner de WebdriverIO, vous pouvez importer des utilitaires de simulation pour vos tests, par exemple :
import { fn, spyOn, mock, unmock } from '@wdio/browser-runner'
Les exports nommés suivants sont disponibles :
fn
Fonction mock, voir plus dans la documentation officielle de Vitest.
spyOn
Fonction d'espionnage, voir plus dans la documentation officielle de Vitest.
mock
Méthode pour mocker un fichier ou un module de dépendance.
Paramètres
moduleName
: soit un chemin relatif vers le fichier à mocker, soit un nom de module.factory
: fonction pour retourner la valeur mockée (optionnel)
Exemple
mock('../src/constants.ts', () => ({
SOME_DEFAULT: 'mocked out'
}))
mock('lodash', (origModuleFactory) => {
const origModule = await origModuleFactory()
return {
...origModule,
pick: fn()
}
})
unmock
Annule le mock d'une dépendance définie dans le répertoire de mock manuel (__mocks__
).
Paramètres
moduleName
: nom du module à démocker.
Exemple
unmock('lodash')