Configuration
Selon le type de configuration (par exemple, en utilisant les liaisons de protocole brut, WebdriverIO comme package autonome ou le testrunner WDIO), il existe un ensemble différent d'options disponibles pour contrôler l'environnement.
Options WebDriver
Les options suivantes sont définies lors de l'utilisation du package de protocole webdriver
:
protocol
Protocole à utiliser lors de la communication avec le serveur de pilote.
Type: String
Par défaut: http
hostname
Hôte de votre serveur de pilote.
Type: String
Par défaut: 0.0.0.0
port
Port sur lequel se trouve votre serveur de pilote.
Type: Number
Par défaut: undefined
path
Chemin vers le point de terminaison du serveur de pilote.
Type: String
Par défaut: /
queryParams
Paramètres de requête qui sont propagés au serveur de pilote.
Type: Object
Par défaut: undefined
user
Votre nom d'utilisateur du service cloud (fonctionne uniquement pour les comptes Sauce Labs, Browserstack, TestingBot ou LambdaTest). Si défini, WebdriverIO définira automatiquement les options de connexion pour vous. Si vous n'utilisez pas de fournisseur cloud, cela peut être utilisé pour authentifier tout autre backend WebDriver.
Type: String
Par défaut: undefined
key
Votre clé d'accès ou clé secrète du service cloud (fonctionne uniquement pour les comptes Sauce Labs, Browserstack, TestingBot ou LambdaTest). Si défini, WebdriverIO définira automatiquement les options de connexion pour vous. Si vous n'utilisez pas de fournisseur cloud, cela peut être utilisé pour authentifier tout autre backend WebDriver.
Type: String
Par défaut: undefined
capabilities
Définit les capacités que vous souhaitez exécuter dans votre session WebDriver. Consultez le Protocole WebDriver pour plus de détails. Si vous exécutez un pilote plus ancien qui ne prend pas en charge le protocole WebDriver, vous devrez utiliser les capacités JSONWireProtocol pour exécuter avec succès une session.
Outre les capacités basées sur WebDriver, vous pouvez appliquer des options spécifiques au navigateur et au fournisseur qui permettent une configuration plus approfondie du navigateur ou de l'appareil distant. Celles-ci sont documentées dans les documents du fournisseur correspondant, par exemple :
goog:chromeOptions
: pour Google Chromemoz:firefoxOptions
: pour Mozilla Firefoxms:edgeOptions
: pour Microsoft Edgesauce:options
: pour Sauce Labsbstack:options
: pour BrowserStackselenoid:options
: pour Selenoid
De plus, un utilitaire utile est le Configurateur de tests automatisés de Sauce Labs, qui vous aide à créer cet objet en cliquant sur vos capacités souhaitées.
Type: Object
Par défaut: null
Exemple:
{
browserName: 'chrome', // options: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // version du navigateur
platformName: 'Windows 10' // plateforme OS
}
Si vous exécutez des tests web ou natifs sur des appareils mobiles, les capabilities
diffèrent du protocole WebDriver. Consultez les Docs Appium pour plus de détails.
logLevel
Niveau de verbosité de la journalisation.
Type: String
Par défaut: info
Options: trace
| debug
| info
| warn
| error
| silent
outputDir
Répertoire pour stocker tous les fichiers journaux du testrunner (y compris les journaux du reporter et les journaux wdio
). Si non défini, tous les journaux sont transmis à stdout
. Étant donné que la plupart des reporters sont conçus pour enregistrer dans stdout
, il est recommandé de n'utiliser cette option que pour des reporters spécifiques où il est plus logique de pousser le rapport dans un fichier (comme le reporter junit
, par exemple).
En mode autonome, le seul journal généré par WebdriverIO sera le journal wdio
.
Type: String
Par défaut: null
connectionRetryTimeout
Délai d'attente pour toute requête WebDriver à un pilote ou à une grille.
Type: Number
Par défaut: 120000
connectionRetryCount
Nombre maximum de tentatives de requête au serveur Selenium.
Type: Number
Par défaut: 3
agent
Vous permet d'utiliser un http
/https
/http2
agent personnalisé pour effectuer des requêtes.
Type: Object
Par défaut:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
Spécifiez des headers
personnalisés à transmettre dans chaque requête WebDriver. Si votre grille Selenium nécessite une authentification de base, nous vous recommandons de passer un en-tête Authorization
via cette option pour authentifier vos requêtes WebDriver, par exemple :
import { Buffer } from 'buffer';
// Read the username and password from environment variables
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// Combine the username and password with a colon separator
const credentials = `${username}:${password}`;
// Encode the credentials using Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
Type: Object
Par défaut: {}
transformRequest
Fonction interceptant les options de requête HTTP avant qu'une requête WebDriver ne soit effectuée
Type: (RequestOptions) => RequestOptions
Par défaut: aucun
transformResponse
Fonction interceptant les objets de réponse HTTP après l'arrivée d'une réponse WebDriver. La fonction reçoit l'objet de réponse original comme premier argument et les RequestOptions
correspondantes comme second argument.
Type: (Response, RequestOptions) => Response
Par défaut: aucun
strictSSL
Indique s'il ne nécessite pas que le certificat SSL soit valide.
Il peut être défini via des variables d'environnement comme STRICT_SSL
ou strict_ssl
.
Type: Boolean
Par défaut: true
enableDirectConnect
Indique s'il faut activer la fonctionnalité de connexion directe Appium. Cela ne fait rien si la réponse n'a pas les clés appropriées lorsque le drapeau est activé.
Type: Boolean
Par défaut: true
cacheDir
Le chemin vers la racine du répertoire de cache. Ce répertoire est utilisé pour stocker tous les pilotes qui sont 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()
maskingPatterns
Pour une journalisation plus sécurisée, les expressions régulières définies avec maskingPatterns
peuvent masquer les informations sensibles du journal.
- Le format de chaîne est une expression régulière avec ou sans drapeaux (par exemple
/.../i
) et séparé par des virgules pour plusieurs expressions régulières. - Pour plus de détails sur les modèles de masquage, consultez la section Modèles de masquage dans le fichier README du Logger WDIO.
Type: String
Par défaut: undefined
Exemple:
{
maskingPatterns: '/--key=([^ ]*)/i,/RESULT (.*)/'
}
WebdriverIO
Les options suivantes (y compris celles listées ci-dessus) peuvent être utilisées avec WebdriverIO en mode autonome :
automationProtocol
Définissez le protocole que vous souhaitez utiliser pour votre automatisation de navigateur. Actuellement, seul webdriver
est pris en charge, car c'est la principale technologie d'automatisation de navigateur utilisée par WebdriverIO.
Si vous souhaitez automatiser le navigateur à l'aide d'une technologie d'automatisation différente, assurez-vous de définir cette propriété sur un chemin qui résout un module conforme à l'interface suivante :
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* Start a automation session and return a WebdriverIO [monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* with respective automation commands. See the [webdriver](https://www.npmjs.com/package/webdriver) package
* as a reference implementation
*
* @param {Capabilities.RemoteConfig} options WebdriverIO options
* @param {Function} hook that allows to modify the client before it gets released from the function
* @param {PropertyDescriptorMap} userPrototype allows user to add custom protocol commands
* @param {Function} customCommandWrapper allows to modify the command execution
* @returns a WebdriverIO compatible client instance
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* allows user to attach to existing sessions
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* Changes The instance session id and browser capabilities for the new session
* directly into the passed in browser object
*
* @optional
* @param {object} instance the object we get from a new browser session.
* @returns {string} the new session id of the browser
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
Type: String
Par défaut: webdriver
baseUrl
Raccourcissez les appels de commande url
en définissant une URL de base.
- Si votre paramètre
url
commence par/
, alorsbaseUrl
est ajouté au début (sauf le cheminbaseUrl
, s'il en a un). - Si votre paramètre
url
commence sans schéma ni/
(commesome/path
), alors lebaseUrl
complet est ajouté directement au début.
Type: String
Par défaut: null
waitforTimeout
Délai d'attente par défaut pour toutes les commandes waitFor*
. (Notez le 'f' minuscule dans le nom de l'option.) Ce délai seulement affecte les commandes commençant par waitFor*
et leur temps d'attente par défaut.
Pour augmenter le délai d'attente pour un test, veuillez consulter la documentation du framework.
Type: Number
Par défaut: 5000
waitforInterval
Intervalle par défaut pour toutes les commandes waitFor*
pour vérifier si un état attendu (par exemple, la visibilité) a été modifié.
Type: Number
Par défaut: 100
region
Si vous utilisez Sauce Labs, vous pouvez choisir d'exécuter des tests entre différents centres de données : US ou EU.
Pour changer votre région en UE, ajoutez region: 'eu'
à votre configuration.
Remarque: Cela n'a d'effet que si vous fournissez les options user
et key
qui sont liées à votre compte Sauce Labs.
Type: String
Par défaut: us
(seulement pour les vm et/ou em/simulateurs)
Options Testrunner
Les options suivantes (y compris celles listées ci-dessus) sont définies uniquement pour l'exécution de WebdriverIO avec le testrunner WDIO :
specs
Définissez les spécifications pour l'exécution des tests. Vous pouvez soit spécifier un modèle glob pour correspondre à plusieurs fichiers à la fois, soit envelopper un glob ou un ensemble de chemins dans un tableau pour les exécuter dans un seul processus de travail. Tous les chemins sont considérés comme relatifs au chemin du fichier de configuration.
Type: (String | String[])[]
Par défaut: []
exclude
Exclure les spécifications de l'exécution des tests. Tous les chemins sont considérés comme relatifs au chemin du fichier de configuration.
Type: String[]
Par défaut: []
suites
Un objet décrivant diverses suites, que vous pouvez ensuite spécifier avec l'option --suite
sur l'interface de ligne de commande wdio
.
Type: Object
Par défaut: {}
capabilities
Identique à la section capabilities
décrite ci-dessus, mais avec la possibilité de spécifier soit un objet multiremote
, soit plusieurs sessions WebDriver dans un tableau pour une exécution parallèle.
Vous pouvez appliquer les mêmes capacités spécifiques au fournisseur et au navigateur que celles définies ci-dessus.
Type: Object
|Object[]
Par défaut: [{ 'wdio:maxInstances': 5, browserName: 'firefox' }]
maxInstances
Nombre maximum total de travailleurs parallèles en cours d'exécution.
Remarque: Cela peut être un nombre aussi élevé que 100
, lorsque les tests sont effectués sur des fournisseurs externes tels que les machines de Sauce Labs. Là, les tests ne sont pas testés sur une seule machine, mais plutôt sur plusieurs machines virtuelles. Si les tests doivent être exécutés sur une machine de développement locale, utilisez un nombre plus raisonnable, comme 3
, 4
ou 5
. Essentiellement, c'est le nombre de navigateurs qui seront démarrés simultanément et qui exécuteront vos tests en même temps, donc cela dépend de la quantité de RAM sur votre machine et du nombre d'autres applications en cours d'exécution sur votre machine.
Vous pouvez également appliquer maxInstances
dans vos objets de capacité en utilisant la capacité wdio:maxInstances
. Cela limitera le nombre de sessions parallèles pour cette capacité particulière.
Type: Number
Par défaut: 100
maxInstancesPerCapability
Nombre maximum total de travailleurs parallèles en cours d'exécution par capacité.
Type: Number
Par défaut: 100
injectGlobals
Insère les variables globales de WebdriverIO (par exemple, browser
, $
et $$
) dans l'environnement global.
Si vous définissez sur false
, vous devriez importer depuis @wdio/globals
, par exemple :
import { browser, $, $$, expect } from '@wdio/globals'
Remarque : WebdriverIO ne gère pas l'injection de variables globales spécifiques au framework de test.
Type: Boolean
Par défaut: true
bail
Si vous souhaitez que votre série de tests s'arrête après un nombre spécifique d'échecs de test, utilisez bail
.
(La valeur par défaut est 0
, ce qui exécute tous les tests quoi qu'il arrive.) Remarque : Un test dans ce contexte est l'ensemble des tests dans un seul fichier de spécification (lors de l'utilisation de Mocha ou Jasmine) ou toutes les étapes dans un fichier de fonctionnalités (lors de l'utilisation de Cucumber). Si vous souhaitez contrôler le comportement de bail dans les tests d'un seul fichier de test, consultez les options framework disponibles.
Type: Number
Par défaut: 0
(ne pas s'arrêter; exécuter tous les tests)
specFileRetries
Le nombre de fois pour réessayer un fichier de spécification entier lorsqu'il échoue dans son ensemble.
Type: Number
Par défaut: 0
specFileRetriesDelay
Délai en secondes entre les tentatives de réessai du fichier de spécification
Type: Number
Par défaut: 0
specFileRetriesDeferred
Si les fichiers de spécification réessayés doivent être réessayés immédiatement ou reportés à la fin de la file d'attente.
Type: Boolean
Par défaut: true
groupLogsByTestSpec
Choisissez la vue de sortie du journal.
Si défini sur false
, les journaux de différents fichiers de test seront imprimés en temps réel. Veuillez noter que cela peut entraîner le mélange des sorties de journaux de différents fichiers lors de l'exécution en parallèle.
Si défini sur true
, les sorties de journaux seront regroupées par Test Spec et imprimées uniquement lorsque le Test Spec est terminé.
Par défaut, il est défini sur false
afin que les journaux soient imprimés en temps réel.
Type: Boolean
Par défaut: false
autoAssertOnTestEnd
Contrôle si WebdriverIO affirme automatiquement toutes les assertions souples à la fin de chaque test. Lorsqu'il est défini sur true
, toutes les assertions souples accumulées seront automatiquement vérifiées et provoqueront l'échec du test si des assertions ont échoué. Lorsqu'il est défini sur false
, vous devez appeler manuellement la méthode d'assertion pour vérifier les assertions souples.
Type: Boolean
Par défaut: true
services
Les services prennent en charge un travail spécifique dont vous ne voulez pas vous occuper. Ils améliorent votre configuration de test avec presque aucun effort.
Type: String[]|Object[]
Par défaut: []