Capacités
Une capacité est une définition pour une interface distante. Elle aide WebdriverIO à comprendre dans quel environnement de navigateur ou mobile vous souhaitez exécuter vos tests. Les capacités sont moins cruciales lors du développement de tests en local, car vous les exécutez généralement sur une seule interface distante, mais elles deviennent plus importantes lors de l'exécution d'un grand ensemble de tests d'intégration dans un environnement CI/CD.
Le format d'un objet de capacité est bien défini par la spécification WebDriver. Le testrunner WebdriverIO échouera rapidement si les capacités définies par l'utilisateur ne respectent pas cette spécification.
Capacités personnalisées
Bien que le nombre de capacités définies de manière fixe soit très faible, chacun peut fournir et accepter des capacités personnalisées spécifiques au pilote d'automatisation ou à l'interface distante :
Extensions de capacités spécifiques aux navigateurs
goog:chromeOptions
: extensions Chromedriver, applicables uniquement pour les tests dans Chromemoz:firefoxOptions
: extensions Geckodriver, applicables uniquement pour les tests dans Firefoxms:edgeOptions
: EdgeOptions pour spécifier l'environnement lors de l'utilisation d'EdgeDriver pour tester Chromium Edge
Extensions de capacités des fournisseurs cloud
sauce:options
: Sauce Labsbstack:options
: BrowserStacktb:options
: TestingBot- et bien d'autres...
Extensions de capacités des moteurs d'automatisation
Capacités WebdriverIO pour gérer les options du pilote de navigateur
WebdriverIO gère l'installation et l'exécution du pilote de navigateur pour vous. WebdriverIO utilise une capacité personnalisée qui vous permet de transmettre des paramètres au pilote.
wdio:chromedriverOptions
Options spécifiques transmises à Chromedriver lors de son démarrage.
wdio:geckodriverOptions
Options spécifiques transmises à Geckodriver lors de son démarrage.
wdio:edgedriverOptions
Options spécifiques transmises à Edgedriver lors de son démarrage.
wdio:safaridriverOptions
Options spécifiques transmises à Safari lors de son démarrage.
wdio:maxInstances
Nombre maximum total de travailleurs parallèles pour le navigateur/capacité spécifique. Prend la priorité sur maxInstances et maxInstancesPerCapability.
Type : number
wdio:specs
Définit les spécifications pour l'exécution des tests pour ce navigateur/capacité. Identique à l'option de configuration specs
régulière, mais spécifique au navigateur/capacité. Prend la priorité sur specs
.
Type : (String | String[])[]
wdio:exclude
Exclut les spécifications de l'exécution des tests pour ce navigateur/capacité. Identique à l'option de configuration exclude
régulière, mais spécifique au navigateur/capacité. Prend la priorité sur exclude
.
Type : String[]
wdio:enforceWebDriverClassic
Par défaut, WebdriverIO tente d'établir une session WebDriver Bidi. Si vous ne préférez pas cela, vous pouvez définir ce drapeau pour désactiver ce comportement.
Type : boolean
Options de pilote communes
Bien que tous les pilotes offrent différents paramètres de configuration, il existe certains paramètres communs que WebdriverIO comprend et utilise pour configurer votre pilote ou navigateur :
cacheDir
Le chemin vers la racine du répertoire de cache. Ce répertoire est utilisé pour stocker tous les pilotes téléchargés lors de la tentative de démarrage d'une session.
Type : string
Par défaut : process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
binary
Chemin vers un binaire de pilote personnalisé. Si défini, WebdriverIO ne tentera pas de télécharger un pilote mais utilisera celui fourni par ce chemin. Assurez-vous que le pilote est compatible avec le navigateur que vous utilisez.
Vous pouvez fournir ce chemin via les variables d'environnement CHROMEDRIVER_PATH
, GECKODRIVER_PATH
ou EDGEDRIVER_PATH
.
Type : string
Si le binary
du pilote est défini, WebdriverIO ne tentera pas de télécharger un pilote mais utilisera celui fourni par ce chemin. Assurez-vous que le pilote est compatible avec le navigateur que vous utilisez.
Options de pilote spécifiques au navigateur
Pour propager des options au pilote, vous pouvez utiliser les capacités personnalisées suivantes :
- Chrome ou Chromium :
wdio:chromedriverOptions
- Firefox :
wdio:geckodriverOptions
- Microsoft Edge :
wdio:edgedriverOptions
- Safari :
wdio:safaridriverOptions
- wdio:chromedriverOptions
- wdio:geckodriverOptions
- wdio:edgedriverOptions
- wdio:safaridriverOptions
adbPort
Le port sur lequel le pilote ADB doit s'exécuter.
Exemple : 9515
Type : number
urlBase
Préfixe de chemin URL de base pour les commandes, par exemple wd/url
.
Exemple : /
Type : string
logPath
Écrire le journal du serveur dans un fichier au lieu de stderr, augmente le niveau de journalisation à INFO
Type : string
logLevel
Définir le niveau de journalisation. Options possibles ALL
, DEBUG
, INFO
, WARNING
, SEVERE
, OFF
.
Type : string
verbose
Journalisation verbeuse (équivalent à --log-level=ALL
)
Type : boolean
silent
Ne rien journaliser (équivalent à --log-level=OFF
)
Type : boolean
appendLog
Ajouter au fichier journal au lieu de le réécrire.
Type : boolean
replayable
Journalisation verbeuse sans tronquer les longues chaînes pour que le journal puisse être rejoué (expérimental).
Type : boolean
readableTimestamp
Ajouter des horodatages lisibles au journal.
Type : boolean
enableChromeLogs
Afficher les journaux du navigateur (remplace les autres options de journalisation).
Type : boolean
bidiMapperPath
Chemin du mappeur bidi personnalisé.
Type : string
allowedIps
Liste d'adresses IP distantes autorisées à se connecter à EdgeDriver, séparées par des virgules.
Type : string[]
Par défaut : ['']
allowedOrigins
Liste d'origines de requêtes autorisées à se connecter à EdgeDriver, séparées par des virgules. L'utilisation de *
pour autoriser n'importe quelle origine d'hôte est dangereuse !
Type : string[]
Par défaut : ['*']
spawnOpts
Options à transmettre au processus du pilote.
Type : SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Par défaut : undefined
Consultez toutes les options de Geckodriver dans le package de pilote officiel.
Consultez toutes les options d'Edgedriver dans le package de pilote officiel.
Consultez toutes les options de Safaridriver dans le package de pilote officiel.
Capacités spéciales pour des cas d'utilisation spécifiques
Voici une liste d'exemples montrant quelles capacités doivent être appliquées pour atteindre un cas d'utilisation particulier.
Exécuter un navigateur en mode headless
Exécuter un navigateur en mode headless signifie exécuter une instance de navigateur sans fenêtre ni interface utilisateur. Cela est principalement utilisé dans les environnements CI/CD où aucun affichage n'est utilisé. Pour exécuter un navigateur en mode headless, appliquez les capacités suivantes :
- Chrome
- Firefox
- Microsoft Edge
- Safari
{
browserName: 'chrome', // ou 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
browserName: 'msedge',
'ms:edgeOptions': {
args: ['--headless']
}
Il semble que Safari ne prenne pas en charge l'exécution en mode headless.
Automatiser différents canaux de navigateur
Si vous souhaitez tester une version de navigateur qui n'est pas encore publiée en version stable, par exemple Chrome Canary, vous pouvez le faire en définissant des capacités et en pointant vers le navigateur que vous souhaitez démarrer, par exemple :
- Chrome
- Firefox
- Microsoft Edge
- Safari
Lors des tests sur Chrome, WebdriverIO téléchargera automatiquement la version de navigateur et le pilote souhaités en fonction du browserVersion
défini, par exemple :
{
browserName: 'chrome', // ou 'chromium'
browserVersion: '116' // ou '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' ou 'latest' (identique à 'canary')
}
Si vous souhaitez tester un navigateur téléchargé manuellement, vous pouvez fournir un chemin binaire vers le navigateur via :
{
browserName: 'chrome', // ou 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}
De plus, si vous souhaitez utiliser un pilote téléchargé manuellement, vous pouvez fournir un chemin binaire vers le pilote via :
{
browserName: 'chrome', // ou 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}
Lors des tests sur Firefox, WebdriverIO téléchargera automatiquement la version de navigateur et le pilote souhaités en fonction du browserVersion
défini, par exemple :
{
browserName: 'firefox',
browserVersion: '119.0a1' // ou 'latest'
}
Si vous souhaitez tester une version téléchargée manuellement, vous pouvez fournir un chemin binaire vers le navigateur via :
{
browserName: 'firefox',
'moz:firefoxOptions': {
binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
}
}
De plus, si vous souhaitez utiliser un pilote téléchargé manuellement, vous pouvez fournir un chemin binaire vers le pilote via :
{
browserName: 'firefox',
'wdio:geckodriverOptions': {
binary: '/path/to/geckodriver'
}
}
Lors des tests sur Microsoft Edge, assurez-vous d'avoir la version de navigateur souhaitée installée sur votre machine. Vous pouvez indiquer à WebdriverIO le navigateur à exécuter via :
{
browserName: 'msedge',
'ms:edgeOptions': {
binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
}
}
WebdriverIO téléchargera automatiquement la version de pilote souhaitée en fonction du browserVersion
défini, par exemple :
{
browserName: 'msedge',
browserVersion: '109' // ou '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}
De plus, si vous souhaitez utiliser un pilote téléchargé manuellement, vous pouvez fournir un chemin binaire vers le pilote via :
{
browserName: 'msedge',
'wdio:edgedriverOptions': {
binary: '/path/to/msedgedriver'
}
}