Z v6 do v7
Ten poradnik jest dla osób, które nadal używają v6
WebdriverIO i chcą przejść na v7
. Jak wspomniano w naszym wpisie na blogu o wydaniu, zmiany są głównie pod maską, a aktualizacja powinna być prostym procesem.
Jeśli używasz WebdriverIO v5
lub starszej wersji, najpierw zaktualizuj do v6
. Zapoznaj się z naszym przewodnikiem migracji do v6.
Chociaż chcielibyśmy mieć w pełni zautomatyzowany proces, rzeczywistość wygląda inaczej. Każdy ma inną konfigurację. Każdy krok powinien być traktowany jako wskazówka, a nie jako szczegółowa instrukcja. Jeśli masz problemy z migracją, nie wahaj się skontaktować z nami.
Konfiguracja
Podobnie jak w przypadku innych migracji, możemy użyć codemod WebdriverIO. W tym poradniku używamy projektu boilerplate przesłanego przez członka społeczności i całkowicie migrujemy go z v6
do v7
.
Aby zainstalować codemod, uruchom:
npm install jscodeshift @wdio/codemod
Commity:
- install codemod deps [6ec9e52]
Aktualizacja zależności WebdriverIO
Biorąc pod uwagę, że wszystkie wersje WebdriverIO są ze sobą ściśle powiązane, najlepiej zawsze aktualizować do konkretnego taga, np. latest
. W tym celu kopiujemy wszystkie zależności związane z WebdriverIO z naszego package.json
i ponownie je instalujemy za pomocą:
npm i --save-dev @wdio/allure-reporter@7 @wdio/cli@7 @wdio/cucumber-framework@7 @wdio/local-runner@7 @wdio/spec-reporter@7 @wdio/sync@7 wdio-chromedriver-service@7 wdio-timeline-reporter@7 webdriverio@7
Zazwyczaj zależności WebdriverIO są częścią zależności deweloperskich, ale w zależności od projektu może to się różnić. Po tej operacji twój package.json
i package-lock.json
powinny zostać zaktualizowane. Uwaga: to są zależności używane przez przykładowy projekt, twoje mogą się różnić.
Commity:
- updated dependencies [7097ab6]
Transformacja pliku konfiguracyjnego
Dobrym pierwszym krokiem jest rozpoczęcie od pliku konfiguracyjnego. W WebdriverIO v7
nie wymagamy już ręcznego rejestrowania żadnych kompilatorów. W rzeczywistości muszą one zostać usunięte. Można to zrobić automatycznie za pomocą codemod:
npx jscodeshift -t ./node_modules/@wdio/codemod/v7 ./wdio.conf.js
Codemod nie obsługuje jeszcze projektów TypeScript. Zobacz @webdriverio/codemod#10
. Pracujemy nad wprowadzeniem wsparcia dla niego wkrótce. Jeśli używasz TypeScript, zapraszamy do współpracy!
Commity:
- transpile config file [6015534]
Aktualizacja definicji kroków
Jeśli używasz Jasmine lub Mocha, to już koniec. Ostatnim krokiem jest aktualizacja importów Cucumber.js z cucumber
na @cucumber/cucumber
. Można to również zrobić automatycznie za pomocą codemod:
npx jscodeshift -t ./node_modules/@wdio/codemod/v7 ./src/e2e/*
To wszystko! Nie ma więcej potrzebnych zmian 🎉
Commity:
- transpile step definitions [8c97b90]
Podsumowanie
Mamy nadzieję, że ten poradnik pomoże ci nieco w procesie migracji do WebdriverIO v7
. Społeczność nadal ulepsza codemod, testując go z różnymi zespołami w różnych organizacjach. Nie wahaj się zgłosić problemu, jeśli masz uwagi lub rozpocząć dyskusję, jeśli napotkasz trudności podczas procesu migracji.