Frameworki
WebdriverIO Runner ma wbudowane wsparcie dla Mocha, Jasmine i Cucumber.js. Możesz również zintegrować go z zewnętrznymi frameworkami open-source, takimi jak Serenity/JS.
Aby zintegrować WebdriverIO z frameworkiem testowym, potrzebujesz pakietu adaptera dostępnego na NPM. Pamiętaj, że pakiet adaptera musi być zainstalowany w tym samym miejscu, gdzie jest zainstalowane WebdriverIO. Więc jeśli zainstalowałeś WebdriverIO globalnie, upewnij się, że również zainstalowałeś pakiet adaptera globalnie.
Integracja WebdriverIO z frameworkiem testowym pozwala na dostęp do instancji WebDrivera przy użyciu globalnej zmiennej browser
w plikach specyfikacji lub definicjach kroków.
Zauważ, że WebdriverIO zajmie się również tworzeniem i kończeniem sesji Selenium, więc nie musisz tego robić
samodzielnie.
Używanie Mocha
Najpierw zainstaluj pakiet adaptera z NPM:
- npm
- Yarn
- pnpm
npm install @wdio/mocha-framework --save-dev
yarn add @wdio/mocha-framework --dev
pnpm add @wdio/mocha-framework --save-dev
Domyślnie WebdriverIO dostarcza bibliotekę asercji, która jest wbudowana i z której możesz korzystać od razu:
describe('my awesome website', () => {
it('should do some assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
WebdriverIO obsługuje interfejsy Mocha BDD
(domyślny), TDD
i QUnit
interfaces.
Jeśli chcesz pisać swoje specyfikacje w stylu TDD, ustaw właściwość ui
w konfiguracji mochaOpts
na tdd
. Teraz twoje pliki testowe powinny być napisane w następujący sposób:
suite('my awesome website', () => {
test('should do some assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
Jeśli chcesz zdefiniować inne ustawienia specyficzne dla Mocha, możesz to zrobić za pomocą klucza mochaOpts
w pliku konfiguracyjnym. Listę wszystkich opcji można znaleźć na stronie projektu Mocha.
Uwaga: WebdriverIO nie wspiera przestarzałego używania callbacków done
w Mocha:
it('should test something', (done) => {
done() // wyrzuca "done is not a function"
})
Opcje Mocha
Poniższe opcje można zastosować w pliku wdio.conf.js
, aby skonfigurować środowisko Mocha. Uwaga: nie wszystkie opcje są obsługiwane, np. zastosowanie opcji parallel
spowoduje błąd, ponieważ testrunner WDIO ma własny sposób uruchamiania testów równolegle. Możesz przekazywać te opcje frameworka jako argumenty, np.:
wdio run wdio.conf.ts --mochaOpts.grep "my test" --mochaOpts.bail --no-mochaOpts.checkLeaks
To przekaże następujące opcje Mocha:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
Obsługiwane są następujące opcje Mocha:
require
Opcja require
jest przydatna, gdy chcesz dodać lub rozszerzyć podstawową funkcjonalność (opcja frameworka WebdriverIO).
Type: string|string[]
Default: []
compilers
Używaj podanego modułu (lub modułów) do kompilacji plików. Kompilatory zostaną dołączone przed wymogami (opcja frameworka WebdriverIO).
Type: string[]
Default: []
allowUncaught
Propagowanie nieobsłużonych błędów.
Type: boolean
Default: false
bail
Zakończ po pierwszym nieudanym teście.
Type: boolean
Default: false
checkLeaks
Sprawdź wycieki zmiennych globalnych.
Type: boolean
Default: false
delay
Opóźnij wykonanie głównego zestawu.
Type: boolean
Default: false
fgrep
Filtrowanie testów według danego ciągu znaków.
Type: string
Default: null
forbidOnly
Testy oznaczone jako only
powodują niepowodzenie zestawu.
Type: boolean
Default: false
forbidPending
Oczekujące testy powodują niepowodzenie zestawu.
Type: boolean
Default: false
fullTrace
Pełny ślad stosu przy niepowodzeniu.
Type: boolean
Default: false
global
Zmienne oczekiwane w globalnym zakresie.
Type: string[]
Default: []
grep
Filtrowanie testów za pomocą wyrażenia regularnego.
Type: RegExp|string
Default: null
invert
Odwróć dopasowania filtra testów.
Type: boolean
Default: false
retries
Liczba powtórzeń nieudanych testów.
Type: number
Default: 0
timeout
Wartość progu limitu czasu (w ms).
Type: number
Default: 30000
Używanie Jasmine
Najpierw zainstaluj pakiet adaptera z NPM:
- npm
- Yarn
- pnpm
npm install @wdio/jasmine-framework --save-dev
yarn add @wdio/jasmine-framework --dev
pnpm add @wdio/jasmine-framework --save-dev
Następnie możesz skonfigurować swoje środowisko Jasmine, ustawiając właściwość jasmineOpts
w konfiguracji. Listę wszystkich opcji można znaleźć na stronie projektu Jasmine.
Opcje Jasmine
Poniższe opcje można zastosować w pliku wdio.conf.js
, aby skonfigurować środowisko Jasmine za pomocą właściwości jasmineOpts
. Aby uzyskać więcej informacji na temat tych opcji konfiguracyjnych, sprawdź dokumentację Jasmine. Możesz przekazywać te opcje frameworka jako argumenty, np.:
wdio run wdio.conf.ts --jasmineOpts.grep "my test" --jasmineOpts.failSpecWithNoExpectations --no-jasmineOpts.random
To przekaże następujące opcje Mocha:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
Obsługiwane są następujące opcje Jasmine:
defaultTimeoutInterval
Domyślny interwał limitu czasu dla operacji Jasmine.
Type: number
Default: 60000
helpers
Tablica ścieżek plików (i wzorców glob) względem spec_dir do dołączenia przed specyfikacjami jasmine.
Type: string[]
Default: []
requires
Opcja requires
jest przydatna, gdy chcesz dodać lub rozszerzyć podstawową funkcjonalność.
Type: string[]
Default: []
random
Czy losować kolejność wykonywania specyfikacji.
Type: boolean
Default: true
seed
Ziarno do użycia jako podstawa losowości. Null powoduje, że ziarno jest określane losowo na początku wykonania.
Type: Function
Default: null
failSpecWithNoExpectations
Czy specyfikacja ma zakończyć się niepowodzeniem, jeśli nie uruchomiła żadnych oczekiwań. Domyślnie specyfikacja, która nie uruchomiła żadnych oczekiwań, jest raportowana jako zaliczona. Ustawienie tego na true spowoduje zgłoszenie takiej specyfikacji jako niepowodzenia.
Type: boolean
Default: false
oneFailurePerSpec
Czy specyfikacje mają mieć tylko jedno niepowodzenie oczekiwania.
Type: boolean
Default: false
specFilter
Funkcja do filtrowania specyfikacji.
Type: Function
Default: (spec) => true
grep
Uruchamiaj tylko testy pasujące do tego ciągu znaków lub wyrażenia regularnego. (Dotyczy tylko przypadków, gdy nie jest ustawiona niestandardowa funkcja specFilter
)
Type: string|Regexp
Default: null
invertGrep
Jeśli ma wartość true, odwraca dopasowywanie testów i uruchamia tylko testy, które nie pasują do wyrażenia użytego w grep
. (Dotyczy tylko przypadków, gdy nie jest ustawiona niestandardowa funkcja specFilter
)
Type: boolean
Default: false
Używanie Cucumber
Najpierw zainstaluj pakiet adaptera z NPM:
- npm
- Yarn
- pnpm
npm install @wdio/cucumber-framework --save-dev
yarn add @wdio/cucumber-framework --dev
pnpm add @wdio/cucumber-framework --save-dev
Jeśli chcesz używać Cucumber, ustaw właściwość framework
na cucumber
, dodając framework: 'cucumber'
do pliku konfiguracyjnego.
Opcje dla Cucumber można podać w pliku konfiguracyjnym za pomocą cucumberOpts
. Sprawdź pełną listę opcji tutaj.
Aby szybko rozpocząć pracę z Cucumber, zapoznaj się z naszym projektem cucumber-boilerplate
, który zawiera wszystkie definicje kroków, jakich potrzebujesz na start, i będziesz mógł od razu pisać pliki funkcji.
Opcje Cucumber
Poniższe opcje można zastosować w pliku wdio.conf.js
, aby skonfigurować środowisko Cucumber za pomocą właściwości cucumberOpts
:
Opcje cucumberOpts
, takie jak niestandardowe tags
do filtrowania testów, można określić za pomocą wiersza poleceń. Można to osiągnąć, używając formatu cucumberOpts.{nazwaOpcji}="wartość"
.
Na przykład, jeśli chcesz uruchomić tylko testy oznaczone tagiem @smoke
, możesz użyć następującego polecenia:
# Gdy chcesz uruchomić tylko testy z tagiem "@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.tags="@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.name="some scenario name" --cucumberOpts.failFast
To polecenie ustawia opcję tags
w cucumberOpts
na @smoke
, zapewniając, że tylko testy z tym tagiem są wykonywane.
backtrace
Pokaż pełny backtrace dla błędów.
Type: Boolean
Default: true
requireModule
Wymagaj modułów przed wymaganiem jakichkolwiek plików wsparcia.
Type: string[]
Default: []
Example:
cucumberOpts: {
requireModule: ['@babel/register']
// lub
requireModule: [
[
'@babel/register',
{
rootMode: 'upward',
ignore: ['node_modules']
}
]
]
}
failFast
Przerwij wykonywanie po pierwszym niepowodzeniu.
Type: boolean
Default: false
name
Wykonuj tylko scenariusze z nazwą pasującą do wyrażenia (powtarzalne).
Type: RegExp[]
Default: []
require
Wymagaj plików zawierających definicje kroków przed wykonaniem funkcji. Możesz również określić wzorzec glob dla swoich definicji kroków.
Type: string[]
Default: []
Example:
cucumberOpts: {
require: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}
import
Ścieżki do miejsc, gdzie znajduje się twój kod wsparcia, dla ESM.
Type: String[]
Default: []
Example:
cucumberOpts: {
import: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}
strict
Niepowodzenie, jeśli istnieją niezdefiniowane lub oczekujące kroki.
Type: boolean
Default: false
tags
Wykonuj tylko funkcje lub scenariusze z tagami pasującymi do wyrażenia. Więcej informacji znajdziesz w dokumentacji Cucumber.
Type: String
Default: ``
timeout
Limit czasu w milisekundach dla definicji kroków.
Type: Number
Default: 30000
retry
Określ liczbę ponownych prób nieudanych przypadków testowych.
Type: Number
Default: 0
retryTagFilter
Powtarzaj tylko funkcje lub scenariusze z tagami pasującymi do wyrażenia (powtarzalne). Ta opcja wymaga określenia '--retry'.
Type: RegExp
language
Domyślny język dla twoich plików funkcji
Type: String
Default: en
order
Uruchamiaj testy w zdefiniowanej / losowej kolejności
Type: String
Default: defined
format
Nazwa i ścieżka pliku wyjściowego formatera do użycia. WebdriverIO obsługuje głównie tylko Formatterów, którzy zapisują dane wyjściowe do pliku.
Type: string[]
formatOptions
Opcje do dostarczenia formatterom
Type: object
tagsInTitle
Dodaj tagi cucumber do nazwy funkcji lub scenariusza
Type: Boolean
Default: false
Proszę zauważyć, że jest to opcja specyficzna dla @wdio/cucumber-framework i nie jest rozpoznawana przez samego cucumber-js
ignoreUndefinedDefinitions
Traktuj niezdefiniowane definicje jako ostrzeżenia.
Type: Boolean
Default: false
Proszę zauważyć, że jest to opcja specyficzna dla @wdio/cucumber-framework i nie jest rozpoznawana przez samego cucumber-js
failAmbiguousDefinitions
Traktuj niejednoznaczne definicje jako błędy.
Type: Boolean
Default: false
Proszę zauważyć, że jest to opcja specyficzna dla @wdio/cucumber-framework i nie jest rozpoznawana przez samego cucumber-js
tagExpression
Wykonuj tylko funkcje lub scenariusze z tagami pasującymi do wyrażenia. Więcej informacji znajdziesz w dokumentacji Cucumber.
Type: String
Default: ``
Proszę zauważyć, że ta opcja będzie przestarzała w przyszłości. Zamiast tego użyj właściwości konfiguracyjnej tags
profile
Określ profil do użycia.
Type: string[]
Default: []
Uprzejmie zauważ, że tylko określone wartości (worldParameters, name, retryTagFilter) są obsługiwane w profilach, ponieważ cucumberOpts
ma pierwszeństwo. Dodatkowo, korzystając z profilu, upewnij się, że wymienione wartości nie są zadeklarowane w ramach cucumberOpts
.
Pomijanie testów w cucumber
Zauważ, że jeśli chcesz pominąć test za pomocą zwykłych funkcji filtrowania testów Cucumber dostępnych w cucumberOpts
, zrobisz to dla wszystkich przeglądarek i urządzeń skonfigurowanych w możliwościach. Aby móc pomijać scenariusze tylko dla określonych kombinacji możliwości bez konieczności rozpoczynania sesji, jeśli nie jest to konieczne, webdriverio zapewnia następującą specyficzną składnię tagów dla cucumber:
@skip([condition])
gdzie condition jest opcjonalną kombinacją właściwości capabilities z ich wartościami, które gdy wszystkie zostaną dopasowane, spowodują pominięcie oznaczonego scenariusza lub funkcji. Oczywiście możesz dodać kilka tagów do scenariuszy i funkcji, aby pomijać testy w różnych warunkach.
Możesz również użyć adnotacji '@skip' do pomijania testów bez zmiany tagExpression
. W tym przypadku pominięte testy będą wyświetlane w raporcie testowym.
Oto kilka przykładów tej składni:
@skip
lub@skip()
: zawsze pominie oznaczony element@skip(browserName="chrome")
: test nie zostanie wykonany na przeglądarkach chrome.@skip(browserName="firefox";platformName="linux")
: pominie test w wykonaniach firefox na linuxie.@skip(browserName=["chrome","firefox"])
: oznaczone elementy zostaną pominięte zarówno dla przeglądarek chrome, jak i firefox.@skip(browserName=/i.*explorer/)
: możliwości z przeglądarkami pasującymi do wyrażenia regularnego zostaną pominięte (jakiexplorer
,internet explorer
,internet-explorer
, ...).
Import pomocnika definicji kroków
Aby używać pomocnika definicji kroków, takiego jak Given
, When
lub Then
lub hooki, musisz je zaimportować z @cucumber/cucumber
, np. w ten sposób:
import { Given, When, Then } from '@cucumber/cucumber'
Teraz, jeśli używasz już Cucumber do innych rodzajów testów niezwiązanych z WebdriverIO, dla których używasz określonej wersji, musisz importować te pomocniki w swoich testach e2e z pakietu WebdriverIO Cucumber, np.:
import { Given, When, Then, world, context } from '@wdio/cucumber-framework'
Zapewnia to, że używasz właściwych pomocników w ramach frameworka WebdriverIO i pozwala używać niezależnej wersji Cucumber dla innych rodzajów testów.
Publikowanie raportu
Cucumber oferuje funkcję publikowania raportów z testów na stronie https://reports.cucumber.io/
, którą można kontrolować albo przez ustawienie flagi publish
w cucumberOpts
, albo przez skonfigurowanie zmiennej środowiskowej CUCUMBER_PUBLISH_TOKEN
. Jednak gdy używasz WebdriverIO
do wykonywania testów, istnieje ograniczenie w tym podejściu. Aktualizuje ono raporty osobno dla każdego pliku funkcji, co utrudnia przeglądanie skonsolidowanego raportu.
Aby rozwiązać to ograniczenie, wprowadziliśmy metodę opartą na promise o nazwie publishCucumberReport
w @wdio/cucumber-framework
. Ta metoda powinna być wywoływana w hooku onComplete
, który jest optymalnym miejscem do jej wywołania. publishCucumberReport
wymaga wprowadzenia katalogu raportu, w którym przechowywane są raporty komunikatów cucumber.
Możesz generować raporty cucumber message
poprzez skonfigurowanie opcji format
w cucumberOpts
. Zdecydowanie zaleca się podanie dynamicznej nazwy pliku w opcji formatu cucumber message
, aby zapobiec nadpisywaniu raportów i zapewnić dokładne rejestrowanie każdego przebiegu testu.
Przed użyciem tej funkcji upewnij się, że ustawione są następujące zmienne środowiskowe:
- CUCUMBER_PUBLISH_REPORT_URL: URL, pod którym chcesz opublikować raport Cucumber. Jeśli nie podano, zostanie użyty domyślny URL 'https://messages.cucumber.io/api/reports'.
- CUCUMBER_PUBLISH_REPORT_TOKEN: Token autoryzacyjny wymagany do publikacji raportu. Jeśli ten token nie jest ustawiony, funkcja zakończy działanie bez publikowania raportu.
Oto przykład niezbędnych konfiguracji i przykładów kodu do implementacji:
import { v4 as uuidv4 } from 'uuid'
import { publishCucumberReport } from '@wdio/cucumber-framework';
export const config = {
// ... Inne opcje konfiguracyjne
cucumberOpts: {
// ... Konfiguracja opcji Cucumber
format: [
['message', `./reports/${uuidv4()}.ndjson`],
['json', './reports/test-report.json']
]
},
async onComplete() {
await publishCucumberReport('./reports');
}
}
Proszę zauważyć, że ./reports/
to katalog, w którym będą przechowywane raporty cucumber message
.
Używanie Serenity/JS
Serenity/JS to framework open-source zaprojektowany, aby uczynić testowanie akceptacyjne i regresyjne złożonych systemów oprogramowania szybszym, bardziej współpracującym i łatwiejszym do skalowania.
Dla zestawów testowych WebdriverIO, Serenity/JS oferuje:
- Rozszerzone raportowanie - Możesz używać Serenity/JS jako zamiennika dla dowolnego wbudowanego frameworka WebdriverIO, aby tworzyć szczegółowe raporty z wykonania testów i żywą dokumentację Twojego projektu.
- API wzorców Screenplay - Aby twój kod testowy był przenośny i możliwy do ponownego użycia w różnych projektach i zespołach, Serenity/JS oferuje opcjonalną warstwę abstrakcji na natywnych API WebdriverIO.
- Biblioteki integracyjne - Dla zestawów testowych, które podążają za wzorcem Screenplay, Serenity/JS zapewnia również opcjonalne biblioteki integracyjne, aby pomóc Ci pisać testy API, zarządzać lokalnymi serwerami, przeprowadzać asercje i wiele więcej!
Instalacja Serenity/JS
Aby dodać Serenity/JS do istniejącego projektu WebdriverIO, zainstaluj następujące moduły Serenity/JS z NPM:
- npm
- Yarn
- pnpm
npm install @serenity-js/{core,web,webdriverio,assertions,console-reporter,serenity-bdd} --save-dev
yarn add @serenity-js/{core,web,webdriverio,assertions,console-reporter,serenity-bdd} --dev
pnpm add @serenity-js/{core,web,webdriverio,assertions,console-reporter,serenity-bdd} --save-dev
Dowiedz się więcej o modułach Serenity/JS:
@serenity-js/core
@serenity-js/web
@serenity-js/webdriverio
@serenity-js/assertions
@serenity-js/console-reporter
@serenity-js/serenity-bdd
Konfiguracja Serenity/JS
Aby włączyć integrację z Serenity/JS, skonfiguruj WebdriverIO w następujący sposób:
- TypeScript
- JavaScript
import { WebdriverIOConfig } from '@serenity-js/webdriverio';
export const config: WebdriverIOConfig = {
// Tell WebdriverIO to use Serenity/JS framework
framework: '@serenity-js/webdriverio',
// Serenity/JS configuration
serenity: {
// Configure Serenity/JS to use the appropriate adapter for your test runner
runner: 'cucumber',
// runner: 'mocha',
// runner: 'jasmine',
// Register Serenity/JS reporting services, a.k.a. the "stage crew"
crew: [
// Optional, print test execution results to standard output
'@serenity-js/console-reporter',
// Optional, produce Serenity BDD reports and living documentation (HTML)
'@serenity-js/serenity-bdd',
[ '@serenity-js/core:ArtifactArchiver', { outputDirectory: 'target/site/serenity' } ],
// Optional, automatically capture screenshots upon interaction failure
[ '@serenity-js/web:Photographer', { strategy: 'TakePhotosOfFailures' } ],
]
},
// Configure your Cucumber runner
cucumberOpts: {
// see Cucumber configuration options below
},
// ... or Jasmine runner
jasmineOpts: {
// see Jasmine configuration options below
},
// ... or Mocha runner
mochaOpts: {
// see Mocha configuration options below
},
runner: 'local',
// Any other WebdriverIO configuration
};
export const config = {
// Tell WebdriverIO to use Serenity/JS framework
framework: '@serenity-js/webdriverio',
// Serenity/JS configuration
serenity: {
// Configure Serenity/JS to use the appropriate adapter for your test runner
runner: 'cucumber',
// runner: 'mocha',
// runner: 'jasmine',
// Register Serenity/JS reporting services, a.k.a. the "stage crew"
crew: [
'@serenity-js/console-reporter',
'@serenity-js/serenity-bdd',
[ '@serenity-js/core:ArtifactArchiver', { outputDirectory: 'target/site/serenity' } ],
[ '@serenity-js/web:Photographer', { strategy: 'TakePhotosOfFailures' } ],
]
},
// Configure your Cucumber runner
cucumberOpts: {
// see Cucumber configuration options below
},
// ... or Jasmine runner
jasmineOpts: {
// see Jasmine configuration options below
},
// ... or Mocha runner
mochaOpts: {
// see Mocha configuration options below
},
runner: 'local',
// Any other WebdriverIO configuration
};
Dowiedz się więcej o:
- Opcjach konfiguracji Serenity/JS Cucumber
- Opcjach konfiguracji Serenity/JS Jasmine
- Opcjach konfiguracji Serenity/JS Mocha
- Pliku konfiguracyjnym WebdriverIO
Tworzenie raportów Serenity BDD i żywej dokumentacji
Raporty Serenity BDD i żywa dokumentacja są generowane przez Serenity BDD CLI,
program Java pobierany i zarządzany przez moduł @serenity-js/serenity-bdd
.
Aby tworzyć raporty Serenity BDD, twój zestaw testowy musi:
- pobrać Serenity BDD CLI, wywołując
serenity-bdd update
, co lokalnie buforuje CLIjar
- tworzyć pośrednie raporty Serenity BDD
.json
, rejestrującSerenityBDDReporter
zgodnie z instrukcjami konfiguracji - wywołać Serenity BDD CLI, gdy chcesz wygenerować raport, wywołując
serenity-bdd run
Wzorzec używany przez wszystkie szablony projektów Serenity/JS opiera się na użyciu:
- skryptu NPM
postinstall
do pobrania Serenity BDD CLI npm-failsafe
do uruchamiania procesu raportowania nawet jeśli sam zestaw testowy zakończył się niepowodzeniem (co jest dokładnie tym momentem, kiedy najbardziej potrzebujesz raportów testowych...).rimraf
jako wygodnej metody do usuwania raportów testów pozostałych z poprzedniego uruchomienia
{
"scripts": {
"postinstall": "serenity-bdd update",
"clean": "rimraf target",
"test": "failsafe clean test:execute test:report",
"test:execute": "wdio wdio.conf.ts",
"test:report": "serenity-bdd run"
}
}
Aby dowiedzieć się więcej o SerenityBDDReporter
, zapoznaj się z:
- instrukcjami instalacji w dokumentacji
@serenity-js/serenity-bdd
, - przykładami konfiguracji w dokumentacji API
SerenityBDDReporter
, - przykładami Serenity/JS na GitHubie.
Używanie API wzorca Screenplay w Serenity/JS
Wzorzec Screenplay to innowacyjne, skoncentrowane na użytkowniku podejście do pisania wysokiej jakości zautomatyzowanych testów akceptacyjnych. Kieruje Cię w kierunku efektywnego wykorzystania warstw abstrakcji, pomaga Twoim scenariuszom testowym uchwycić biznesowy żargon Twojej domeny i zachęca do dobrych nawyków w testowaniu i inżynierii oprogramowania w Twoim zespole.
Domyślnie, gdy rejestrujesz @serenity-js/webdriverio
jako swój framework
WebdriverIO,
Serenity/JS konfiguruje domyślną obsadę aktorów,
gdzie każdy aktor może:
Powinno to wystarczyć, aby pomóc Ci rozpocząć wprowadzanie scenariuszy testowych, które podążają za wzorcem Screenplay, nawet do istniejącego zestawu testów, na przykład:
import { actorCalled } from '@serenity-js/core'
import { Navigate, Page } from '@serenity-js/web'
import { Ensure, equals } from '@serenity-js/assertions'
describe('My awesome website', () => {
it('can have test scenarios that follow the Screenplay Pattern', async () => {
await actorCalled('Alice').attemptsTo(
Navigate.to(`https://webdriver.io`),
Ensure.that(
Page.current().title(),
equals(`WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO`)
),
)
})
it('can have non-Screenplay scenarios too', async () => {
await browser.url('https://webdriver.io')
await expect(browser)
.toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
Aby dowiedzieć się więcej o wzorcu Screenplay, sprawdź: