Descreva sua pergunta com o máximo de detalhes possível
Recentemente, atualizei o wdio de v3 para v5. Tudo está funcionando muito bem, exceto a opção de fiança. Anteriormente na v3, funcionava com a configuração de bail: 1
e stopOnSpecFailure: true
em jasmineNodeOpts
. No entanto, não está funcionando como tal na v5.
P: Algo mudou na funcionalidade aqui?
Acompanhamento P: Eu também gostaria de usar a funcionalidade de bail e specFileRetries para tentar novamente o teste até 3 vezes na primeira falha. Isso será alcançável? Pelo que me lembro de ter lido algo onde specFileRetries e configuração de fiança podem entrar em conflito uma com a outra.
Se for sobre uma parte específica do código, tente incluir uma parte dele para dar suporte à sua pergunta.
[...]
Ambiente (por favor, preencha as seguintes informações):
Configuração do WebdriverIO
// ====================
// Runner Configuration
// ====================
//
// WebdriverIO allows it to run your tests in arbitrary locations (e.g. locally or
// on a remote machine).
runner: 'local',
//
// ==================
// Specify Test Files
// ==================
//
suites: suites,
// Specs to include/exclude.
// specs: ,
// exclude: ,
//
// ============
// Capabilities
// ============
//
maxInstances: 10,
//
capabilities: [
{
maxInstances: 5,
//
browserName: 'chrome',
'goog:chromeOptions': {
// to run chrome headless the following flags are required
// (see https://developers.google.com/web/updates/2017/04/headless-chrome)
// args: ['--headless', '--disable-gpu'],
}
// If outputDir is provided WebdriverIO can capture driver session logs
// it is possible to configure which logTypes to include/exclude.
// excludeDriverLogs: ['*'], // pass '*' to exclude all driver session logs
// excludeDriverLogs: ['bugreport', 'server'],
}
],
//
// ===================
// Test Configurations
// ===================
// Define all options that are relevant for the WebdriverIO instance here
//
// Level of logging verbosity: trace | debug | info | warn | error | silent
logLevel: 'trace',
//
// Set directory to store all logs into
outputDir: `${path.output}`,
// If you only want to run your tests until a specific amount of tests have failed use
// bail (default is 0 - don't bail, run all tests).
bail: 1,
//
baseUrl: url.base,
//
// Default timeout for all waitFor* commands.
waitforTimeout: waitTimeout,
//
// Default timeout in milliseconds for request
// if Selenium Grid doesn't send response
connectionRetryTimeout: 90000,
//
// Default request retries count
connectionRetryCount: 3,
//
// Make sure you have the wdio adapter package for the specific framework installed
// before running any tests.
framework: 'jasmine',
//
// The number of times to retry the entire specfile when it fails as a whole
specFileRetries: 0,
//
reporters: ['spec'],
//
// Options to be passed to Jasmine.
jasmineNodeOpts: {
//
// Jasmine default timeout
defaultTimeoutInterval: parameter.testTimeout,
//
stopOnSpecFailure: true,
// The Jasmine framework allows interception of each assertion in order to log the state of the application
// or website depending on the result. For example, it is pretty handy to take a screenshot every time
// an assertion fails.
expectationResultHandler: function(passed, assertion) {
/**
* only take screenshot if assertion failed
*/
if (passed) {
return;
}
}
},
Contexto adicional
Contexto na pergunta de acompanhamento: Como alguns arquivos de especificações são grandes, seria ótimo se eu pudesse usar o fiança para economizar tempo. A opção de fiança não está funcionando com e sem specFileRetries.
Também estou tendo o mesmo problema ao atualizar do wdio v4-> v5
Eu tentei permutações dessas opções:
bail: 1,
stopSpecOnExpectationFailure: true,
stopOnSpecFailure: true,
Com um único teste, ele é repetido cerca de 8 vezes (95s), quando a primeira falha ocorre por volta dos 20s. Isso pode nos economizar muito tempo ao depurar nossos testes.
Para as pessoas que ainda enfrentam esse problema, minha solução alternativa foi definir failFast: true
em JasmineNodeOpts, além de bail: 1
. Ele agora interrompe a execução na primeira falha e tenta novamente com specFileRetries.
Como alguns arquivos de especificações são grandes, seria ótimo se eu pudesse usar fiança para economizar tempo. A opção de fiança não está funcionando com e sem specFileRetries.
Ah, eu entendo o problema agora. A opção WebdriverIO bail
está apenas olhando para os arquivos de especificações wdio. Conforme declarado na documentação :
Se você deseja executar seus testes apenas até que uma quantidade específica de testes falhe, use bail (o padrão é 0 - não cancele, execute todos os testes). Nota: Esteja ciente de que ao usar um executor de teste de terceiros, como o Mocha, pode ser necessária configuração adicional.
Se você quiser se livrar dos arquivos de especificação, precisará usar opções específicas do framework.
Comentários muito úteis
Também estou tendo o mesmo problema ao atualizar do wdio v4-> v5
Eu tentei permutações dessas opções:
Com um único teste, ele é repetido cerca de 8 vezes (95s), quando a primeira falha ocorre por volta dos 20s. Isso pode nos economizar muito tempo ao depurar nossos testes.