Playwright JS 如何将 Jest 测试代码/目录迁移到 Playwright Test Runner
Jest+Playwright项目迁移至Playwright Test Runner解决方案
针对你遇到的4个问题,可按以下步骤处理,无需强行修改现有项目结构和代码即可完成迁移:
1. 测试文件命名不匹配问题
Playwright Test Runner 并未强制要求必须使用.spec.js后缀,可通过修改配置适配现有命名规则:
- 在配置文件中添加
testMatch配置项,匹配你的.test.js文件:testMatch: ["**/?(*.)+(test).js"] - 如需统一改成
.spec.js后缀,可使用批量重命名命令:- Linux/Mac 终端:
rename 's/\.test\.js$/.spec.js/' **/*.test.js - Windows PowerShell:
Get-ChildItem -Recurse -Filter *.test.js | Rename-Item -NewName { $_.Name -replace '\.test\.js$','.spec.js' }
- Linux/Mac 终端:
2. 目录结构不匹配问题
无需调整现有组件目录结构,修改配置中的testDir项指定测试文件根目录即可:
- 如果你所有测试文件都放在组件目录下,直接设置
testDir: "./"即可,配合上面的testMatch规则可自动扫描所有符合规则的测试文件,不需要强行迁移到tests/目录。
3. Jest关键字不兼容问题
两种方案可选,优先推荐自动迁移工具:
- 官方提供codemod工具可自动转换Jest语法为Playwright Test语法,执行命令即可完成全量代码转换:
npx @playwright/test/codemod jest <你的测试文件根目录路径>
工具会自动把describe替换为test.describe、兼容test/expect等Jest常用API。 - 如需保留原有Jest语法不修改业务代码,可在全局配置中注入全局变量:
新增全局初始化脚本,在配置的globalSetup配置项指向该脚本,脚本内添加:const { test, expect } = require('@playwright/test'); global.describe = test.describe; global.test = test; global.expect = expect;
4. 配置文件模块格式报错问题
Playwright Test完全支持CommonJS格式的配置文件,不需要强制使用ES Module:
- 把配置文件中的
export default替换为module.exports - 如果你的项目package.json中设置了
"type": "module",可把配置文件重命名为playwright.config.cjs,明确指定为CommonJS格式即可正常读取。
内容的提问来源于stack exchange,提问作者Mairaj Ali
相关产品推荐
相关产品推荐

