Frameworks
O WebdriverIO Runner tem suporte integrado para Mocha, Jasmine e Cucumber.js. Você também pode integrá-lo com frameworks de código aberto de terceiros, como Serenity/JS.
Para integrar o WebdriverIO com um framework de teste, você precisa de um pacote adaptador disponível no NPM. Observe que o pacote adaptador deve ser instalado no mesmo local onde o WebdriverIO está instalado. Portanto, se você instalou o WebdriverIO globalmente, certifique-se de instalar o pacote adaptador globalmente também.
Integrar o WebdriverIO com um framework de teste permite que você acesse a instância do WebDriver usando a variável global browser
em seus arquivos de especificação ou definições de passos.
Observe que o WebdriverIO também cuidará de instanciar e encerrar a sessão do Selenium, para que você não precise fazer isso
por conta própria.
Usando Mocha
Primeiro, instale o pacote adaptador do NPM:
- npm
- Yarn
- pnpm
npm install @wdio/mocha-framework --save-dev
yarn add @wdio/mocha-framework --dev
pnpm add @wdio/mocha-framework --save-dev
Por padrão, o WebdriverIO fornece uma biblioteca de asserções que está integrada e que você pode começar a usar imediatamente:
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')
})
})
O WebdriverIO suporta as interfaces BDD
(padrão), TDD
e QUnit
do Mocha interfaces.
Se você gosta de escrever suas especificações no estilo TDD, defina a propriedade ui
em sua configuração mochaOpts
como tdd
. Agora seus arquivos de teste devem ser escritos assim:
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')
})
})
Se você quiser definir outras configurações específicas do Mocha, pode fazê-lo com a chave mochaOpts
em seu arquivo de configuração. Uma lista de todas as opções pode ser encontrada no site do projeto Mocha.
Nota: O WebdriverIO não suporta o uso obsoleto de callbacks done
no Mocha:
it('should test something', (done) => {
done() // lança "done is not a function"
})
Opções do Mocha
As seguintes opções podem ser aplicadas em seu wdio.conf.js
para configurar seu ambiente Mocha. Nota: nem todas as opções são suportadas, por exemplo, aplicar a opção parallel
causará um erro pois o testrunner WDIO tem sua própria maneira de executar testes em paralelo. Você pode passar essas opções de framework como argumentos, por exemplo:
wdio run wdio.conf.ts --mochaOpts.grep "my test" --mochaOpts.bail --no-mochaOpts.checkLeaks
Isso passará as seguintes opções do Mocha:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
As seguintes opções do Mocha são suportadas:
require
A opção require
é útil quando você deseja adicionar ou estender alguma funcionalidade básica (opção do framework WebdriverIO).
Type: string|string[]
Default: []
compilers
Use os módulos fornecidos para compilar arquivos. Os compiladores serão incluídos antes dos requires (opção do framework WebdriverIO).
Type: string[]
Default: []
allowUncaught
Propaga erros não capturados.
Type: boolean
Default: false
bail
Interrompe após a primeira falha de teste.
Type: boolean
Default: false
checkLeaks
Verifica se há vazamentos de variáveis globais.
Type: boolean
Default: false
delay
Atrasa a execução da suíte raiz.
Type: boolean
Default: false
fgrep
Filtro de teste pela string fornecida.
Type: string
Default: null
forbidOnly
Testes marcados com only
falham na suíte.
Type: boolean
Default: false
forbidPending
Testes pendentes falham na suíte.
Type: boolean
Default: false
fullTrace
Rastreamento completo da pilha em caso de falha.
Type: boolean
Default: false
global
Variáveis esperadas no escopo global.
Type: string[]
Default: []
grep
Filtro de teste pela expressão regular fornecida.
Type: RegExp|string
Default: null
invert
Inverte as correspondências do filtro de teste.
Type: boolean
Default: false
retries
Número de vezes para tentar novamente testes com falha.
Type: number
Default: 0
timeout
Valor limite de tempo limite (em ms).
Type: number
Default: 30000
Usando Jasmine
Primeiro, instale o pacote adaptador do NPM:
- npm
- Yarn
- pnpm
npm install @wdio/jasmine-framework --save-dev
yarn add @wdio/jasmine-framework --dev
pnpm add @wdio/jasmine-framework --save-dev
Você pode então configurar seu ambiente Jasmine definindo uma propriedade jasmineOpts
em sua configuração. Uma lista de todas as opções pode ser encontrada no site do projeto Jasmine.
Opções do Jasmine
As seguintes opções podem ser aplicadas em seu wdio.conf.js
para configurar seu ambiente Jasmine usando a propriedade jasmineOpts
. Para mais informações sobre essas opções de configuração, consulte a documentação do Jasmine. Você pode passar essas opções de framework como argumentos, por exemplo:
wdio run wdio.conf.ts --jasmineOpts.grep "my test" --jasmineOpts.failSpecWithNoExpectations --no-jasmineOpts.random
Isso passará as seguintes opções do Mocha:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
As seguintes opções do Jasmine são suportadas:
defaultTimeoutInterval
Intervalo de Tempo Limite Padrão para operações do Jasmine.
Type: number
Default: 60000
helpers
Matriz de caminhos de arquivo (e globs) relativos a spec_dir para incluir antes das especificações do jasmine.
Type: string[]
Default: []
requires
A opção requires
é útil quando você deseja adicionar ou estender alguma funcionalidade básica.
Type: string[]
Default: []
random
Se deve randomizar a ordem de execução de especificações.
Type: boolean
Default: true