Depuração
A depuração é significativamente mais difícil quando vários processos geram dezenas de testes em múltiplos navegadores.
Para começar, é extremamente útil limitar o paralelismo definindo maxInstances como 1, e direcionando apenas as especificações e navegadores que precisam ser depurados.
Em wdio.conf:
export const config = {
// ...
maxInstances: 1,
specs: [
'**/myspec.spec.js'
],
capabilities: [{
browserName: 'firefox'
}],
// ...
}
O Comando Debug
Em muitos casos, você pode usar browser.debug() para pausar seu teste e inspecionar o navegador.
Sua interface de linha de comando também mudará para o modo REPL. Este modo permite que você experimente comandos e elementos na página. No modo REPL, você pode acessar o objeto browser—ou as funções $ e $$—como você pode em seus testes.
Ao usar browser.debug(), você provavelmente precisará aumentar o timeout do test runner para evitar que ele falhe o teste por demorar muito. Por exemplo:
Em wdio.conf:
jasmineOpts: {
defaultTimeoutInterval: (24 * 60 * 60 * 1000)
}
Veja timeouts para mais informações sobre como fazer isso usando outros frameworks.
Para prosseguir com os testes após a depuração, no shell use o atalho ^C ou o comando .exit.
Configuração dinâmica
Observe que o wdio.conf.js pode conter Javascript. Como você provavelmente não quer alterar permanentemente seu valor de timeout para 1 dia, muitas vezes pode ser útil alterar essas configurações a partir da linha de comando usando uma variável de ambiente.
Usando esta técnica, você pode alterar dinamicamente a configuração:
const debug = process.env.DEBUG
const defaultCapabilities = ...
const defaultTimeoutInterval = ...
const defaultSpecs = ...
export const config = {
// ...
maxInstances: debug ? 1 : 100,
capabilities: debug ? [{ browserName: 'chrome' }] : defaultCapabilities,
execArgv: debug ? ['--inspect'] : [],
jasmineOpts: {
defaultTimeoutInterval: debug ? (24 * 60 * 60 * 1000) : defaultTimeoutInterval
}
// ...
}
Você pode então prefixar o comando wdio com a flag debug:
$ DEBUG=true npx wdio wdio.conf.js --spec ./tests/e2e/myspec.test.js
...e depurar seu arquivo de especificação com o DevTools!
Depurando com Visual Studio Code (VSCode)
Se você quiser depurar seus testes com pontos de interrupção no VSCode mais recente, você tem duas opções para iniciar o depurador, das quais a opção 1 é o método mais fácil:
- anexar automaticamente o depurador
- anexar o depurador usando um arquivo de configuração
VSCode Toggle Auto Attach
Você pode anexar automaticamente o depurador seguindo estas etapas no VSCode:
- Pressione CMD + Shift + P (Linux e Macos) ou CTRL + Shift + P (Windows)
- Digite "attach" no campo de entrada
- Selecione "Debug: Toggle Auto Attach"
- Selecione "Only With Flag"
É isso! Agora, quando você executar seus testes (lembre-se de que precisará da flag --inspect definida em sua configuração, como mostrado anteriormente), ele iniciará automaticamente o depurador e parará no primeiro ponto de interrupção que encontrar.