Zum Hauptinhalt springen

Von v5 zu v6

Dieses Tutorial richtet sich an Personen, die noch v5 von WebdriverIO verwenden und auf v6 oder die neueste Version von WebdriverIO migrieren möchten. Wie in unserem Release-Blogbeitrag erwähnt, können die Änderungen für dieses Versions-Upgrade wie folgt zusammengefasst werden:

  • Wir haben die Parameter für einige Befehle konsolidiert (z.B. newWindow, react$, react$$, waitUntil, dragAndDrop, moveTo, waitForDisplayed, waitForEnabled, waitForExist) und alle optionalen Parameter in ein einzelnes Objekt verschoben, z.B.

    // v5
    browser.newWindow(
    'https://webdriver.io',
    'WebdriverIO window',
    'width=420,height=230,resizable,scrollbars=yes,status=1'
    )
    // v6
    browser.newWindow('https://webdriver.io', {
    windowName: 'WebdriverIO window',
    windowFeature: 'width=420,height=230,resizable,scrollbars=yes,status=1'
    })
  • Konfigurationen für Services wurden in die Service-Liste verschoben, z.B.

    // v5
    exports.config = {
    services: ['sauce'],
    sauceConnect: true,
    sauceConnectOpts: { foo: 'bar' },
    }
    // v6
    exports.config = {
    services: [['sauce', {
    sauceConnect: true,
    sauceConnectOpts: { foo: 'bar' }
    }]],
    }
  • Einige Service-Optionen wurden zur Vereinfachung umbenannt

  • Wir haben den Befehl launchApp für Chrome WebDriver-Sitzungen in launchChromeApp umbenannt

Info

Wenn Sie WebdriverIO v4 oder niedriger verwenden, aktualisieren Sie bitte zuerst auf v5.

Obwohl wir gerne einen vollständig automatisierten Prozess dafür hätten, sieht die Realität anders aus. Jeder hat ein anderes Setup. Jeder Schritt sollte als Orientierungshilfe und weniger als Schritt-für-Schritt-Anleitung gesehen werden. Wenn Sie Probleme bei der Migration haben, zögern Sie nicht, uns zu kontaktieren.

Setup

Ähnlich wie bei anderen Migrationen können wir den WebdriverIO codemod verwenden. Um den Codemod zu installieren, führen Sie aus:

npm install jscodeshift @wdio/codemod

WebdriverIO-Abhängigkeiten aktualisieren

Da alle WebdriverIO-Versionen miteinander verbunden sind, ist es am besten, immer auf ein bestimmtes Tag zu aktualisieren, z.B. 6.12.0. Wenn Sie sich entscheiden, direkt von v5 auf v7 zu aktualisieren, können Sie das Tag weglassen und die neuesten Versionen aller Pakete installieren. Dazu kopieren wir alle WebdriverIO-bezogenen Abhängigkeiten aus unserer package.json und installieren sie neu über:

npm i --save-dev @wdio/allure-reporter@6 @wdio/cli@6 @wdio/cucumber-framework@6 @wdio/local-runner@6 @wdio/spec-reporter@6 @wdio/sync@6 wdio-chromedriver-service@6 webdriverio@6

Normalerweise sind WebdriverIO-Abhängigkeiten Teil der Entwicklungsabhängigkeiten, je nach Projekt kann dies jedoch variieren. Danach sollten Ihre package.json und package-lock.json aktualisiert sein. Hinweis: Dies sind Beispielabhängigkeiten, Ihre können abweichen. Stellen Sie sicher, dass Sie die neueste v6-Version finden, indem Sie z.B. aufrufen:

npm show webdriverio versions

Versuchen Sie, die neueste verfügbare Version 6 für alle WebdriverIO-Kernpakete zu installieren. Bei Community-Paketen kann dies von Paket zu Paket unterschiedlich sein. Hier empfehlen wir, das Changelog auf Informationen zu überprüfen, welche Version noch mit v6 kompatibel ist.

Konfigurationsdatei transformieren

Ein guter erster Schritt ist, mit der Konfigurationsdatei zu beginnen. Alle Breaking Changes können mit dem Codemod vollautomatisch behoben werden:

npx jscodeshift -t ./node_modules/@wdio/codemod/v6 ./wdio.conf.js
Vorsicht

Der Codemod unterstützt noch keine TypeScript-Projekte. Siehe @webdriverio/codemod#10. Wir arbeiten daran, die Unterstützung dafür bald zu implementieren. Wenn Sie TypeScript verwenden, beteiligen Sie sich bitte!

Spec-Dateien und Page Objects aktualisieren

Um alle Befehlsänderungen zu aktualisieren, führen Sie den Codemod für alle Ihre e2e-Dateien aus, die WebdriverIO-Befehle enthalten, z.B.:

npx jscodeshift -t ./node_modules/@wdio/codemod/v6 ./e2e/*

Das war's! Keine weiteren Änderungen erforderlich 🎉

Fazit

Wir hoffen, dass dieses Tutorial Sie ein wenig durch den Migrationsprozess zu WebdriverIO v6 führt. Wir empfehlen dringend, auf die neueste Version zu aktualisieren, da das Update auf v7 aufgrund fast keiner Breaking Changes trivial ist. Bitte schauen Sie sich den Migrationsleitfaden für das Upgrade auf v7 an.

Die Community verbessert den Codemod weiterhin, während sie ihn mit verschiedenen Teams in verschiedenen Organisationen testet. Zögern Sie nicht, ein Issue zu erstellen, wenn Sie Feedback haben, oder eine Diskussion zu starten, wenn Sie während des Migrationsprozesses Schwierigkeiten haben.

Welcome! How can I help?

WebdriverIO AI Copilot