从v6迁移到v7
本教程适用于仍在使用WebdriverIO v6
并希望迁移到v7
的用户。正如我们在发布博客文章中提到的,变更主要是在底层,升级过程应该相对简单直接。
如果你正在使用WebdriverIO v5
或更低版本,请先升级到v6
。请查看我们的v6迁移指南。
虽然我们希望有一个完全自动化的迁移过程,但现实情况并非如此。每个人都有不同的设置。每个步骤应该被视为指导,而不是一步一步的指令。如果你在迁移过程中遇到问题,请不要犹豫联系我们。
设置
与其他迁移类似,我们可以使用WebdriverIO的codemod。在本教程中,我们使用社区成员提交的样板项目,并将其从v6
完全迁移到v7
。
要安装codemod,请运行:
npm install jscodeshift @wdio/codemod
提交记录:
- 安装codemod依赖 [6ec9e52]
升级WebdriverIO依赖
鉴于所有WebdriverIO版本都是相互关联的,最好始终升级到特定标签,例如latest
。为此,我们从package.json
中复制所有WebdriverIO相关的依赖项,并通过以下方式重新安装它们:
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
通常WebdriverIO依赖项是开发依赖项的一部分,不过这取决于你的项目。完成此操作后,你的package.json
和package-lock.json
应该已更新。__注意:__这些是示例项目使用的依赖项,你的可能不同。
提交记录:
- 更新依赖项 [7097ab6]
转换配置文件
一个好的第一步是从配置文件开始。在WebdriverIO v7
中,我们不再需要手动注册任何编译器。实际上,它们需要被移除。这可以通过codemod完全自动地完成:
npx jscodeshift -t ./node_modules/@wdio/codemod/v7 ./wdio.conf.js
codemod目前尚不支持TypeScript项目。请参见@webdriverio/codemod#10
。我们正在努力实现对它的支持。如果你正在使用TypeScript,请参与进来!
提交记录:
- 转译配置文件 [6015534]
更新步骤定义
如果你使用的是Jasmine或Mocha,那么到此为止你已经完成了迁移。最后一步是将Cucumber.js导入从cucumber
更新为@cucumber/cucumber
。这也可以通过codemod自动完成:
npx jscodeshift -t ./node_modules/@wdio/codemod/v7 ./src/e2e/*
就是这样!不需要更多更改了🎉
提交记录:
- 转译步骤定义 [8c97b90]
结论
我们希望本教程能够指导你完成WebdriverIO v7
的迁移过程。社区将继续改进codemod,同时在各种组织的各种团队中对其进行测试。如果你有反馈,请不要犹豫提出问题,或者如果你在迁移过程中遇到困难,请开始讨论。