Webdriverio: La configuración de la fianza no funciona con Jasmine en v5

Creado en 24 may. 2019  ·  3Comentarios  ·  Fuente: webdriverio/webdriverio

Describe tu pregunta con el mayor detalle posible.
Recientemente actualicé wdio de v3 a v5. Todo funciona muy bien, excepto la opción de fianza. Anteriormente en v3, funcionaba con la configuración bail: 1 y stopOnSpecFailure: true en jasmineNodeOpts . Sin embargo, no funciona como tal en v5.

P: ¿Cambió algo en la funcionalidad aquí?

Seguimiento P: También me gustaría usar la funcionalidad de bail y specFileRetries para volver a intentar la prueba hasta 3 veces en la primera falla. ¿Será alcanzable? Como recuerdo haber leído algo donde specFileRetries y la configuración de la fianza pueden entrar en conflicto entre sí.

Si se trata de un código específico, intente incluir algo para respaldar su pregunta.
[...]

Medio ambiente (complete la siguiente información):

  • Versión de WebdriverIO: ^ 5.0.0 [por ejemplo, 4.13.2]
  • Modo: WDIO Testrunner [modo independiente o WDIO Testrunner]
  • Si WDIO Testrunner, ejecuta sync / async: sync [por ejemplo, sync / async]
  • Versión de Node.js: 10.15.3 [por ejemplo, 8.11.2]
  • Versión de NPM: 6.4.1 [por ejemplo, 5.8.0]
  • Nombre y versión del navegador: Chrome 74 [p. Ej., Chrome 68]
  • Nombre y versión de la plataforma: Mac OS X y Linux [por ejemplo, Windows 10]
  • Paquetes wdio adicionales utilizados (si corresponde): @ wdio / jasmine-framework, @ wdio / spec reporter, @ wdio / local-runner, @ wdio / cli, @ wdio / sync

Configuración de 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 de la pregunta de seguimiento: Como algunos archivos de especificaciones son grandes, sería genial si pudiera usar la fianza para ahorrar tiempo. La opción de fianza no funciona con y sin specFileRetries.

Bug🐛 good first pick help wanted

Comentario más útil

También estoy experimentando el mismo problema al actualizar desde wdio v4-> v5

He probado permutaciones de estas opciones:

        bail: 1,
        stopSpecOnExpectationFailure: true,
        stopOnSpecFailure: true,

Con una sola prueba, se vuelve a intentar ~ 8 veces (95 segundos) donde la primera falla ocurre alrededor de los 20 segundos. Esto puede ahorrarnos mucho tiempo al depurar nuestras pruebas.

Todos 3 comentarios

También estoy experimentando el mismo problema al actualizar desde wdio v4-> v5

He probado permutaciones de estas opciones:

        bail: 1,
        stopSpecOnExpectationFailure: true,
        stopOnSpecFailure: true,

Con una sola prueba, se vuelve a intentar ~ 8 veces (95 segundos) donde la primera falla ocurre alrededor de los 20 segundos. Esto puede ahorrarnos mucho tiempo al depurar nuestras pruebas.

Para las personas que aún enfrentan este problema, mi solución fue establecer failFast: true en JasmineNodeOpts, además de bail: 1 . Ahora detiene la ejecución en el primer error y vuelve a intentarlo también con specFileRetries.

Como algunos archivos de especificaciones son grandes, sería genial si pudiera usar la fianza para ahorrar tiempo. La opción de fianza no funciona con y sin specFileRetries.

Ah, ahora entiendo el problema. La opción WebdriverIO bail solo busca archivos de especificaciones wdio. Como se indica en la documentación :

Si solo desea ejecutar sus pruebas hasta que una cantidad específica de pruebas no hayan fallado, use la fianza (el valor predeterminado es 0; no fianza, ejecute todas las pruebas). Nota: Tenga en cuenta que cuando utilice un ejecutor de pruebas de terceros como Mocha, es posible que se requiera una configuración adicional.

Si desea rescatar dentro de los archivos de especificaciones, debe usar opciones específicas del marco.

¿Fue útil esta página
0 / 5 - 0 calificaciones