从 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。如果您有任何反馈,请随时提出问题,或者如果您在迁移过程中遇到困难,请开始讨论。