Modules
WebdriverIO publie divers modules sur NPM et d'autres registres que vous pouvez utiliser pour créer votre propre framework d'automatisation. Voir 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 attachées qui vous permettent de lancer des sessions :
newSession(options, modifier, userPrototype, customCommandWrapper)
Démarre une nouvelle session avec des fonctionnalités spécifiques. Sur la base de la session, des commandes de réponse provenant de différents protocoles seront fournies.
Paramètres
options
: Options WebDrivermodifier
: fonction qui permet de modifier l'instance client avant qu'elle ne soit renvoyéeuserPrototype
: objet de propriétés qui permet d'étendre le prototype d'instancecustomCommandWrapper
: fonction qui permet d'envelopper la fonctionnalité autour des appels de fonction
Retours
- Browser objet
Exemple
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})
attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)
Attache à une session WebDriver ou DevTools en cours d'exécution.
Paramètres
attachInstance
: instance pour attacher une session à 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 renvoyéeuserPrototype
: objet de propriétés qui permet d'étendre le prototype d'instancecustomCommandWrapper
: fonction qui permet d'envelopper la fonctionnalité autour des appels de fonction
Retours
- Browser object
Exemple
const client = await WebDriver.newSession({...})
const clonedClient = await WebDriver.attachToSession(client)
reloadSession(instance)
Recharge une session en fonction 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 à l'aide de import { remote, attach, multiremote } depuis 'webdriverio
et contiennent les fonctionnalités suivantes :
remote(options, modifier)
Démarre une session WebdriverIO. L'instance contient toutes les commandes en tant que package de protocole mais avec des fonctions supplémentaires d'ordre supérieur, voir docs API.
Paramètres
options
: Options WebDrivermodifier
: fonction qui permet de modifier l'instance client avant qu'elle ne soit renvoyée
Retours
- Browser objet
Exemple
import { remote } from 'webdriverio'
const browser = await remote({
capabilities: { browserName: 'chrome' }
})
attach(attachOptions)
Attache à une session WebDriver ou DevTools en cours d'exécution.
Paramètres
attachInstance
: instance pour attacher une session à au moins un objet avec une propriétésessionId
(par exemple{ sessionId: 'xxx' }
)
Retours
- Browser objet
Exemple
import { remote, attach } from 'webdriverio'
const browser = await remote({...})
const newBrowser = await attach(browser)
multiremote(multiremoteOptions)
Initie une instance multidistant 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 ses options WebdriverIO.
Retours
- Browser objet
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 lanceur de test en tant que module et l'exécuter dans un environnement arbitraire. Pour cela, vous aurez besoin du package @wdio/cli
comme 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 écraseront ceux du fichier config.
Paramètres
configPath
: chemin vers lewdio.conf.js
à exécuteropte
: arguments (<RunCommandArguments>
) pour écraser 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 promesse . Il est résolu si les tests ont réussi ou échoué, et il est rejeté si le lanceur n'a pas pu démarrer l'exécution des tests.
@wdio/browser-runner
Lors de l'exécution de tests unitaires ou de composants à l'aide du navigateur de WebdriverIO vous pouvez importer des utilitaires factices pour vos tests, par exemple :
import { fn, spyOn, mock, unmock } from '@wdio/browser-runner'
Les exports nommés suivants sont disponibles :
fn
Fonction simulée, voir plus dans les docs officiels Vitest.
spyOn
Fonction espion, voir plus dans les docs officiels Vitest.
mock
Méthode pour simuler un fichier ou un module de dépendance.
Paramètres
moduleName
: soit un chemin relatif vers le fichier à simuler soit un nom de module.factory
: fonction pour retourner la valeur simulée (facultatif)
Exemple
mock('../src/constants.ts', () => ({
SOME_DEFAULT: 'mocked out'
}))
mock('lodash', (origModuleFactory) => {
const origModule = await origModuleFactory()
return {
...origModule,
pick: fn()
}
})
unmock
Démoquez la dépendance définie dans le répertoire manual mock (__mocks__
).
Paramètres
moduleName
: nom du module à démoquer.
Exemple
unmock('lodash')