Service Browserstack
Un service WebdriverIO qui gère le tunnel local et les métadonnées des tâches pour les utilisateurs de BrowserStack.
Installation
La façon la plus simple est de garder @wdio/browserstack-service
comme devDependency dans votre package.json
, via :
npm install @wdio/browserstack-service --save-dev
Les instructions sur la façon d'installer WebdriverIO
peuvent être trouvées ici.
Configuration
WebdriverIO prend en charge BrowserStack nativement. Vous devez définir user
et key
dans votre fichier wdio.conf.js
. Ce plugin de service fournit un support pour BrowserStack Tunnel. Définissez également browserstackLocal: true
pour activer cette fonctionnalité.
Le reporting du statut de session sur BrowserStack respectera le paramètre strict
des options Cucumber.
// wdio.conf.js
export const config = {
// ...
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
services: [
['browserstack', {
testObservability: true,
testObservabilityOptions: {
projectName: "Your project name goes here",
buildName: "The static build job name goes here e.g. Nightly regression"
},
browserstackLocal: true
}]
],
// ...
};
Options
Pour s'authentifier auprès du service BrowserStack, votre configuration doit contenir une option user
et key
.
testObservability
Test Observability est un outil avancé de reporting de tests qui donne des informations pour améliorer vos tests d'automatisation et vous aide à déboguer plus rapidement. Il est activé par défaut en définissant le drapeau testObservability
à true
pour tous les utilisateurs du service browserstack. Vous pouvez le désactiver en définissant le drapeau testObservability
à false
.
Une fois vos tests terminés, vous pouvez visiter Test Observability pour déboguer vos builds avec des informations supplémentaires comme l'analyse des erreurs uniques, la détection automatique des tests instables, et plus encore.
Vous pouvez utiliser Test Observability même si vous n'exécutez pas vos tests sur l'infrastructure BrowserStack. Même si vous exécutez vos tests sur un CI, une machine locale, ou même sur d'autres fournisseurs de services cloud, Test Observability peut toujours générer des rapports de test intelligents et des analyses avancées sur vos tests.
Si vous souhaitez utiliser Test Observability sans exécuter vos tests sur l'infrastructure BrowserStack, vous pouvez définir votre configuration comme suit :
// wdio.conf.js
export const config = {
// ...
services: [
['browserstack', {
testObservability: true,
testObservabilityOptions: {
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
projectName: "Your project name goes here",
buildName: "The static build job name goes here e.g. Nightly regression"
}
}]
],
// ...
};
Vous pouvez explorer toutes les fonctionnalités de Test Observability dans ce bac à sable ou en savoir plus à ce sujet ici.
browserstackLocal
Définissez ceci à true pour permettre le routage des connexions depuis le cloud BrowserStack via votre ordinateur.
Type: Boolean
Défaut: false
forcedStop
Définissez ceci à true pour tuer le processus BrowserStack Local à la fin, sans attendre que le callback d'arrêt de BrowserStack Local soit appelé. Ceci est expérimental et ne devrait pas être utilisé par tous. Principalement nécessaire comme solution de contournement pour ce problème.
Type: Boolean
Défaut: false
app
Appium définissez ceci avec le chemin de fichier d'application disponible localement sur votre machine pour utiliser l'application comme application à tester pour les sessions Appium.
Type: String
ou JsonObject
Défaut: undefined
Liste des valeurs d'application disponibles :
path
Utilisez le chemin de fichier d'application disponible localement comme application à tester pour Appium.
services: [
['browserstack', {
app: '/path/to/local/app.apk'
// OU
app: {
path: '/path/to/local/app.apk'
}
}]
]
Passez custom_id lors du téléchargement de l'application.
services: [
['browserstack', {
app: {
path: '/path/to/local/app.apk',
custom_id: 'custom_id'
}
}]
]
id
Utilisez l'URL de l'application retournée après avoir téléchargé l'application sur BrowserStack.
services: [
['browserstack', {
app: 'bs://<app-id>'
// OU
app: {
id: 'bs://<app-id>'
}
}]
]
custom_id
utilisez custom_id des applications déjà téléchargées
services: [
['browserstack', {
app: 'custom_id'
// OU
app: {
custom_id: 'custom_id'
}
}]
]
shareable_id
utilisez shareable_id des applications déjà téléchargées
services: [
['browserstack', {
app: 'username/custom_id'
// OU
app: {
shareable_id: 'username/custom_id'
}
}]
]
preferScenarioName
Cucumber uniquement. Définissez le nom de la session BrowserStack Automate sur le nom du scénario si un seul scénario a été exécuté. Utile lors de l'exécution en parallèle avec wdio-cucumber-parallel-execution.
Type: Boolean
Défaut: false
sessionNameFormat
Personnalisez le format du nom de session BrowserStack Automate.
Type: Function
Défaut (Cucumber/Jasmine): (config, capabilities, suiteTitle) => suiteTitle
Défaut (Mocha): (config, capabilities, suiteTitle, testTitle) => suiteTitle + ' - ' + testTitle
sessionNameOmitTestTitle
Mocha uniquement. N'ajoutez pas le titre du test au nom de la session BrowserStack Automate.
Type: Boolean
Défaut: false
sessionNamePrependTopLevelSuiteTitle
Mocha uniquement. Ajoutez le titre de la suite de premier niveau au début du nom de la session BrowserStack Automate.
Type: Boolean
Défaut: false
setSessionName
Définir automatiquement le nom de la session BrowserStack Automate.
Type: Boolean
Défaut: true
setSessionStatus
Définir automatiquement le statut de la session BrowserStack Automate (réussi/échoué).
Type: Boolean
Défaut: true
buildIdentifier
buildIdentifier est un identifiant unique pour différencier chaque exécution qui est ajouté au buildName. Choisissez votre format de buildIdentifier parmi les expressions disponibles :
BUILD_NUMBER
: Génère un compteur incrémental à chaque exécutionDATE_TIME
: Génère un horodatage à chaque exécution. Ex. 05-Nov-19:30
services: [
['browserstack', {
buildIdentifier: '#${BUILD_NUMBER}'
}]
]
Build Identifier prend en charge l'utilisation de l'une ou l'autre expression ou des deux, ainsi que tout autre caractère permettant des options de formatage personnalisées.
opts
Options BrowserStack Local.
Type: Object
Défaut: {}
Liste des modificateurs de test local disponibles à passer en tant qu'opts:
Local Identifier
Si vous effectuez plusieurs connexions de test local simultanées, définissez-le de manière unique pour différents processus -
opts = { localIdentifier: "randomstring" };
Verbose Logging
Pour activer la journalisation détaillée -
opts = { verbose: "true" };
Note - Les valeurs possibles pour le modificateur 'verbose' sont '1', '2', '3' et 'true'
Force Local
Pour acheminer tout le trafic via la machine locale (votre) -
opts = { forceLocal: "true" };
Folder Testing
Pour tester un dossier local plutôt qu'un serveur interne, fournissez le chemin vers le dossier comme valeur de cette option -
opts = { f: "/my/awesome/folder" };
Force Start
Pour tuer les autres instances BrowserStack Local en cours d'exécution -
opts = { force: "true" };
Only Automate
Pour désactiver les tests locaux pour Live et Screenshots, et activer uniquement Automate -
opts = { onlyAutomate: "true" };
Proxy
Pour utiliser un proxy pour les tests locaux -
- proxyHost: Nom d'hôte/IP du proxy, les autres options de proxy sont ignorées si cette option est absente
- proxyPort: Port pour le proxy, par défaut à 3128 lorsque -proxyHost est utilisé
- proxyUser: Nom d'utilisateur pour se connecter au proxy (Basic Auth uniquement)
- proxyPass: Mot de passe pour USERNAME, sera ignoré si USERNAME est vide ou non spécifié
opts = {
proxyHost: "127.0.0.1",
proxyPort: "8000",
proxyUser: "user",
proxyPass: "password",
};
Local Proxy
Pour utiliser un proxy local dans les tests locaux -
- localProxyHost: Nom d'hôte/IP du proxy, les autres options de proxy sont ignorées si cette option est absente
- localProxyPort: Port pour le proxy, par défaut à 8081 lorsque -localProxyHost est utilisé
- localProxyUser: Nom d'utilisateur pour se connecter au proxy (Basic Auth uniquement)
- localProxyPass: Mot de passe pour USERNAME, sera ignoré si USERNAME est vide ou non spécifié
opts = {
localProxyHost: "127.0.0.1",
localProxyPort: "8000",
localProxyUser: "user",
localProxyPass: "password",
};
PAC (Proxy Auto-Configuration)
Pour utiliser PAC (Proxy Auto-Configuration) dans les tests locaux -
- pac-file: Chemin absolu du fichier PAC (Proxy Auto-Configuration)
opts = { "pac-file": "<pac_file_abs_path>" };
Binary Path
Par défaut, les wrappers locaux BrowserStack essaient de télécharger et d'exécuter la dernière version du binaire BrowserStack dans ~/.browserstack ou le répertoire de travail actuel ou le dossier tmp par ordre. Mais vous pouvez remplacer cela en passant l'argument -binarypath. Chemin pour spécifier le chemin binaire local -
opts = { binarypath: "/path/to/binary" };
Logfile
Pour enregistrer les journaux dans le fichier lors de l'exécution avec l'argument '-v', vous pouvez spécifier le chemin du fichier. Par défaut, les journaux sont enregistrés dans le fichier local.log dans le répertoire de travail actuel. Pour spécifier le chemin du fichier où les journaux seront enregistrés -
opts = { verbose: "true", logFile: "./local.log" };
Pour plus d'informations sur WebdriverIO, consultez la page d'accueil.