Usługa Browserstack
Usługa WebdriverIO, która zarządza lokalnym tunelem i metadanymi zadań dla użytkowników BrowserStack.
Instalacja
Najłatwiejszym sposobem jest utrzymanie @wdio/browserstack-service
jako devDependency w pliku package.json
, poprzez:
npm install @wdio/browserstack-service --save-dev
Instrukcje dotyczące instalacji WebdriverIO
można znaleźć tutaj.
Konfiguracja
WebdriverIO ma wbudowaną obsługę BrowserStack. Powinieneś ustawić user
i key
w swoim pliku wdio.conf.js
. Ta wtyczka usługi zapewnia wsparcie dla BrowserStack Tunnel. Ustaw browserstackLocal: true
, aby aktywować tę funkcję.
Raportowanie statusu sesji w BrowserStack będzie respektować ustawienie strict
w opcjach 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
}]
],
// ...
};
Opcje
Aby autoryzować się w usłudze BrowserStack, Twoja konfiguracja musi zawierać opcje user
i key
.
testObservability
Test Observability to zaawansowane narzędzie do raportowania testów, które dostarcza informacji poprawiających testy automatyczne i pomaga szybciej debugować. Jest domyślnie włączone poprzez ustawienie flagi testObservability
na true
dla wszystkich użytkowników browserstack-service. Możesz je wyłączyć, ustawiając flagę testObservability
na false
.
Po zakończeniu testów możesz odwiedzić Test Observability, aby debugować swoje buildy z dodatkowymi informacjami, takimi jak analiza unikalnych błędów, automatyczne wykrywanie niestabilnych testów i więcej.
Możesz korzystać z Test Observability nawet jeśli nie uruchamiasz testów na infrastrukturze BrowserStack. Nawet jeśli uruchamiasz testy na CI, lokalnej maszynie lub innych dostawcach usług w chmurze, Test Observability nadal może generować inteligentne raporty testowe i zaawansowane analizy twoich testów.
Jeśli chcesz korzystać z Test Observability bez uruchamiania testów na infrastrukturze BrowserStack, możesz ustawić konfigurację w następujący sposób:
// 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"
}
}]
],
// ...
};
Możesz eksplorować wszystkie funkcje Test Observability w tym sandboxie lub przeczytać więcej o tym tutaj.
browserstackLocal
Ustaw to na true, aby włączyć routowanie połączeń z chmury BrowserStack przez twój komputer.
Typ: Boolean
Domyślnie: false
forcedStop
Ustaw to na true, aby zabić proces BrowserStack Local po zakończeniu, bez czekania na wywołanie zwrotne zatrzymania BrowserStack Local. Jest to eksperymentalne i nie powinno być używane przez wszystkich. Głównie konieczne jako obejście dla tego problemu.
Typ: Boolean
Domyślnie: false
app
Appium ustaw to ze ścieżką pliku aplikacji dostępną lokalnie na twoim komputerze, aby użyć aplikacji jako testowanej aplikacji dla sesji Appium.
Typ: String
lub JsonObject
Domyślnie: undefined
Lista dostępnych wartości app:
path
Użyj lokalnie dostępnej ścieżki pliku aplikacji jako aplikacji testowanej dla Appium.
services: [
['browserstack', {
app: '/path/to/local/app.apk'
// OR
app: {
path: '/path/to/local/app.apk'
}
}]
]
Przekaż custom_id podczas przesyłania aplikacji.
services: [
['browserstack', {
app: {
path: '/path/to/local/app.apk',
custom_id: 'custom_id'
}
}]
]
id
Użyj URL aplikacji zwróconego po przesłaniu aplikacji do BrowserStack.
services: [
['browserstack', {
app: 'bs://<app-id>'
// OR
app: {
id: 'bs://<app-id>'
}
}]
]
custom_id
użyj custom_id już przesłanych aplikacji
services: [
['browserstack', {
app: 'custom_id'
// OR
app: {
custom_id: 'custom_id'
}
}]
]
shareable_id
użyj shareable_id już przesłanych aplikacji
services: [
['browserstack', {
app: 'username/custom_id'
// OR
app: {
shareable_id: 'username/custom_id'
}
}]
]
preferScenarioName
Tylko Cucumber. Ustaw nazwę sesji BrowserStack Automate na nazwę scenariusza, jeśli uruchomiono tylko jeden scenariusz. Przydatne przy równoległym uruchamianiu z wdio-cucumber-parallel-execution.
Typ: Boolean
Domyślnie: false
sessionNameFormat
Dostosuj format nazwy sesji BrowserStack Automate.
Typ: Function
Domyślnie (Cucumber/Jasmine): (config, capabilities, suiteTitle) => suiteTitle
Domyślnie (Mocha): (config, capabilities, suiteTitle, testTitle) => suiteTitle + ' - ' + testTitle
sessionNameOmitTestTitle
Tylko Mocha. Nie dołączaj tytułu testu do nazwy sesji BrowserStack Automate.
Typ: Boolean
Domyślnie: false
sessionNamePrependTopLevelSuiteTitle
Tylko Mocha. Dodaj tytuł najwyższego poziomu zestawu na początku nazwy sesji BrowserStack Automate.
Typ: Boolean
Domyślnie: false
setSessionName
Automatycznie ustaw nazwę sesji BrowserStack Automate.
Typ: Boolean
Domyślnie: true
setSessionStatus
Automatycznie ustaw status sesji BrowserStack Automate (powodzenie/niepowodzenie).
Typ: Boolean
Domyślnie: true
buildIdentifier
buildIdentifier to unikalny identyfikator odróżniający każde wykonanie, który zostaje dołączony do buildName. Wybierz format buildIdentifier spośród dostępnych wyrażeń:
BUILD_NUMBER
: Generuje przyrostowy licznik z każdym wykonaniemDATE_TIME
: Generuje znacznik czasu z każdym wykonaniem. Np. 05-Nov-19:30
services: [
['browserstack', {
buildIdentifier: '#${BUILD_NUMBER}'
}]
]
Build Identifier obsługuje użycie jednego lub obu wyrażeń wraz z innymi znakami, umożliwiając niestandardowe opcje formatowania.
opts
Opcje BrowserStack Local.
Typ: Object
Domyślnie: {}
Lista dostępnych modyfikatorów testów lokalnych do przekazania jako opts:
Local Identifier
Jeśli wykonujesz jednocześnie wiele połączeń lokalnych testów, ustaw to w sposób unikalny dla różnych procesów -
opts = { localIdentifier: "randomstring" };
Verbose Logging
Aby włączyć szczegółowe logowanie -
opts = { verbose: "true" };
Uwaga - Możliwe wartości dla modyfikatora 'verbose' to '1', '2', '3' i 'true'
Force Local
Aby przekierować cały ruch przez lokalną (Twoją) maszynę -
opts = { forceLocal: "true" };
Folder Testing
Aby testować lokalny folder zamiast wewnętrznego serwera, podaj ścieżk ę do folderu jako wartość tej opcji -
opts = { f: "/my/awesome/folder" };
Force Start
Aby zabić inne uruchomione instancje BrowserStack Local -
opts = { force: "true" };
Only Automate
Aby wyłączyć lokalne testowanie dla Live i Screenshots i włączyć tylko Automate -
opts = { onlyAutomate: "true" };
Proxy
Aby użyć proxy dla testów lokalnych -
- proxyHost: Nazwa hosta/IP proxy, pozostałe opcje proxy są ignorowane, jeśli ta opcja jest nieobecna
- proxyPort: Port dla proxy, domyślnie 3128, gdy używane jest -proxyHost
- proxyUser: Nazwa użytkownika do łączenia się z proxy (tylko Basic Auth)
- proxyPass: Hasło dla USERNAME, będzie ignorowane, jeśli USERNAME jest puste lub nieokreślone
opts = {
proxyHost: "127.0.0.1",
proxyPort: "8000",
proxyUser: "user",
proxyPass: "password",
};
Local Proxy
Aby użyć lokalnego proxy w testach lokalnych -
- localProxyHost: Nazwa hosta/IP proxy, pozostałe opcje proxy są ignorowane, jeśli ta opcja jest nieobecna
- localProxyPort: Port dla proxy, domyślnie 8081, gdy używane jest -localProxyHost
- localProxyUser: Nazwa użytkownika do łączenia się z proxy (tylko Basic Auth)
- localProxyPass: Hasło dla USERNAME, będzie ignorowane, jeśli USERNAME jest puste lub nieokreślone
opts = {
localProxyHost: "127.0.0.1",
localProxyPort: "8000",
localProxyUser: "user",
localProxyPass: "password",
};
PAC (Proxy Auto-Configuration)
Aby użyć PAC (Proxy Auto-Configuration) w testach lokalnych -
- pac-file: Bezwzględna ścieżka pliku PAC (Proxy Auto-Configuration)
opts = { "pac-file": "<pac_file_abs_path>" };
Binary Path
Domyślnie wrappery BrowserStack local próbują pobrać i wykonać najnowszą wersję binarki BrowserStack w ~/.browserstack lub bieżącym katalogu roboczym lub folderze tmp w kolejności. Ale możesz to nadpisać, przekazując argument -binarypath. Ścieżka do określenia lokalnej ścieżki binarki -
opts = { binarypath: "/path/to/binary" };
Logfile
Aby zapisać logi do pliku podczas uruchamiania z argumentem '-v', możesz określić ścieżkę pliku. Domyślnie logi są zapisywane w pliku local.log w bieżącym katalogu roboczym. Aby określić ścieżkę do pliku, w którym będą zapisywane logi -
opts = { verbose: "true", logFile: "./local.log" };
Więcej informacji o WebdriverIO znajdziesz na stronie głównej.