Webdriverio: Die Bail-Konfiguration funktioniert in Version 5 nicht mit Jasmine

Erstellt am 24. Mai 2019  ·  3Kommentare  ·  Quelle: webdriverio/webdriverio

Beschreiben Sie Ihre Frage so detailliert wie möglich
Ich habe kürzlich wdio von v3 auf v5 aktualisiert. Bis auf die Kaution funktioniert alles super. Zuvor funktionierte es in Version bail: 1 mit der Einstellung von stopOnSpecFailure: true in jasmineNodeOpts . In Version 5 funktioniert es jedoch nicht als solches.

F: Hat sich hier etwas an der Funktionalität geändert?

Follow-up F: Ich möchte auch die Funktionalität von Kaution und specFileRetries nutzen, um den Test beim ersten Fehler bis zu dreimal zu wiederholen. Wird das erreichbar sein? Wie ich mich erinnere, habe ich etwas gelesen, bei dem specFileRetries und Bail-Setup miteinander in Konflikt stehen können.

Wenn es sich um einen bestimmten Code handelt, versuchen Sie, einen Teil davon einzuschließen, um Ihre Frage zu unterstützen.
[...]

Umwelt (bitte folgende Angaben machen):

  • WebdriverIO-Version: ^ 5.0.0 [zB 4.13.2]
  • Modus: WDIO Testrunner [Standalone-Modus oder WDIO Testrunner]
  • Wenn WDIO Testrunner, Sync / Async ausführen: Sync [zB Sync / Async]
  • Node.js Version: 10.15.3 [zB 8.11.2]
  • NPM-Version: 6.4.1 [zB 5.8.0]
  • Browsername und Version: Chrome 74 [zB Chrome 68]
  • Plattformname und -version: Mac OS X und Linux [zB Windows 10]
  • Zusätzliche verwendete wdio-Pakete (falls zutreffend): @ wdio / jasmine-framework, @ wdio / spec Reporter, @ wdio / local-runder, @ wdio / cli, @ wdio / sync

Konfiguration von 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;
        }
    }
},

Zusätzlicher Kontext
Kontext zur Folgefrage: Da einige Spezifikationsdateien groß sind, wäre es großartig, wenn ich die Kaution verwenden könnte, um Zeit zu sparen. Die Bail-Option funktioniert nicht mit und ohne specFileRetries.

Bug🐛 good first pick help wanted

Hilfreichster Kommentar

Ich habe auch das gleiche Problem beim Upgrade von wdio v4-> v5

Ich habe Permutationen dieser Optionen ausprobiert:

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

Mit einem einzelnen Test wird es ~ 8 Mal (95 s) wiederholt, wobei der erste Fehler um die 20 s auftritt. Dies kann uns beim Debuggen unserer Tests viel Zeit sparen.

Alle 3 Kommentare

Ich habe auch das gleiche Problem beim Upgrade von wdio v4-> v5

Ich habe Permutationen dieser Optionen ausprobiert:

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

Mit einem einzelnen Test wird es ~ 8 Mal (95 s) wiederholt, wobei der erste Fehler um die 20 s auftritt. Dies kann uns beim Debuggen unserer Tests viel Zeit sparen.

Für Leute, die immer noch mit diesem Problem konfrontiert sind, bestand meine Problemumgehung darin, zusätzlich zu bail: 1 failFast: true in JasmineNodeOpts festzulegen. Es stoppt jetzt die Ausführung beim ersten Fehler und versucht es erneut mit specFileRetries.

Da einige Spezifikationsdateien groß sind, wäre es großartig, wenn ich die Kaution verwenden könnte, um Zeit zu sparen. Die Bail-Option funktioniert nicht mit und ohne specFileRetries.

Ah, ich verstehe das Problem jetzt. Die Option WebdriverIO bail nur wdio-Spezifikationsdateien. Wie in der Dokumentation angegeben :

Wenn Sie Ihre Tests nur ausführen möchten, bis eine bestimmte Anzahl von Tests fehlgeschlagen ist, verwenden Sie Kaution (Standard ist 0 - Nicht Kaution, führen Sie alle Tests aus). Hinweis: Bitte beachten Sie, dass bei Verwendung eines Testläufers eines Drittanbieters wie Mocha möglicherweise eine zusätzliche Konfiguration erforderlich ist.

Wenn Sie innerhalb von Spezifikationsdateien sichern möchten, müssen Sie Framework-spezifische Optionen verwenden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen