Webdriverio: A configuração do Bail não funciona com Jasmine na v5

Criado em 24 mai. 2019  ·  3Comentários  ·  Fonte: webdriverio/webdriverio

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):

  • Versão do WebdriverIO: ^ 5.0.0 [por exemplo, 4.13.2]
  • Modo: WDIO Testrunner [modo autônomo ou WDIO Testrunner]
  • Se WDIO Testrunner, executando sync / async: sync [por exemplo, sync / async]
  • Versão do Node.js: 10.15.3 [por exemplo, 8.11.2]
  • Versão NPM: 6.4.1 [por exemplo, 5.8.0]
  • Nome e versão do navegador: Chrome 74 [por exemplo, Chrome 68]
  • Nome e versão da plataforma: Mac OS X e Linux [por exemplo, Windows 10]
  • Pacotes wdio adicionais usados ​​(se aplicável): @ wdio / jasmine-framework, @ wdio / spec reporter, @ wdio / local-runner, @ wdio / cli, @ wdio / sync

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.

Bug🐛 good first pick help wanted

Comentários muito úteis

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.

Todos 3 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Windyq picture Windyq  ·  4Comentários

dahumadasg picture dahumadasg  ·  3Comentários

LaiaPR picture LaiaPR  ·  4Comentários

kiraLinden picture kiraLinden  ·  3Comentários

sarahdayan picture sarahdayan  ·  4Comentários