前言:
Playwright 真是太好用了,越用越觉得好用,还没用过的朋友可以移步这里了解 Playwright使用指南
用过的朋友,我们继续往下看。
初始化一个新的Playwright项目,安装好所有的依赖,然后就可以开始了,确实非常简单快捷,今天我在这篇文章中分享5个我最喜欢的Playwright技巧。
技巧 1:使用 --last-failed 只运行失败的test
想想这个场景:你辛辛苦苦等了1个小时,所有 test 终于都运行完了,结果有很多失败的 test,你根据错误提示改了代码,想重新测试,但,运行完所有 test 又得等1个小时,怎么办?
这时候 --last-failed 命令就起作用了,你只需要运行下面这个命令:
npx playwright test --last-failed
Playwright 就会只运行失败的 test,可以大大节省你的时间。
但是,如果你不想只运行失败的test,而只想运行你改过的test呢?那你可以继续往下看技巧2:
技巧 2:使用 --only-changed 只运行改变的test:
使用 npx playwright test --only-changed 这个命令,Playwright 将只会运行没有提交到Git版本控制的test,可以很方便你去测试修改过的test文件或者新的test文件,就像下面这样:
# new-feature.spec.ts 文件还没有提交Git
$ git status
On branch new-feature
Changes not staged for commit:
modified: tests/new-feature.spec.ts
# 只会运行还没有提交Git的文件
$ npx playwright test --only-changed
当你的Playwright项目是集成到Git时,仅运行改变的test文件和新的test文件是一种非常快捷的方式,测试结束后,可以快速提交到目标分支。
但是,如果你想只运行跨分支改变的代码呢?
Plywright也支持这种场景。如果你仅运行了--only-changed命令,Plywright 将运行所有未提交Git的更改。但是当你传入了参数,就像这样 --only-changed=master, Plywright将只会运行两个分支比较后的差异部分。
像下面这段代码:
$ git status
On branch new-feature
nothing to commit, working tree clean
$ npx playwright test --only-changed=master
我们来解释下这段代码
master 是 Git 的分支,--only-changed=master 意味着,仅执行与 master 分支最近更改的文件相关的测试,具体来说:
- 如果
master分支上有代码更改,那么 Playwright 会自动检测那些与代码变更相关的测试文件,并仅运行它们。 - 这样可以加速测试流程,避免不必要的测试,尤其是当项目比较大,或者代码库中的测试用例很多时。
技巧 3:使用 --repeat-each 来确保测试稳定
每个人都不想自己提交了代码后,引起线上Bug是吧?
但是,不幸的是,测试用例不稳定的问题是很难确定的,你可能会经常遇到那种偶尔失败的测试。测试了100个文件,有一个文件偶尔失败,问题很难排查,很头疼,怎么办?
--repeat-each 可以派上用场了,它可以让你把每个test文件都运行固定的次数,像这段代码:
npx playwright test --repeat-each 100
意思是,可以让每个测试用例都执行 100次。如果一个测试用例很少失败但偶尔会失败,通过多次重复执行,可以更容易地发现并修复这些间歇性失败的问题。
如果你的测试用例运行了100次,并且整个过程中都通过了,那可以肯定,你这是一个稳定的测试了。
技巧 4:使用 --forbid-only 去永远运行所有tests
这样的代码你应该也见到过吧?
test.only('Your test', async ({ page }) => {
// Your test code...
});
当你把这段代码提交到线上后,会发生什么事?
Playwright将 只运行你指定的这个测试,而跳过其他所有的测试用例。而且如果你不经常检查运行日志,可能这个问题很久才会被发现。
为了防止这种事情出现,你可以设置 --forbid-only ,如果项目中有 test.only 这样的代码,它会提醒你,就像这样:
$ npx playwright test --forbid-only
Error: item focused with '.only' is not allowed due to the '--forbid-only' CLI flag: "your-test.spec.ts your test
在开发环境,这个设置可能并不重要,但是到了线上,我建议一定要设置这段代码。
技巧 5:将UI模式和 --headed --workers 1 结合起来提升调试效率
下面这段代码应该是大家在写test时经常用的命令npx playwright test --ui
它可以帮你打开UI模式,获取更多的调试信息,但是,还有个办法会让你的调试更加简单,就像这段代码:
npx playwright test --ui --headed --workers 1
其中,--headed 会启动有头模式,意味着 Playwright 会启动一个可视化的浏览器窗口,你可以非常方便的调试和查看测试的全过程。
--workers 1 可以指定Playwright 使用 1个工作线程 来运行测试。因为Playwright默认会启动多个工作线程来并行运行所有测试,从而加速执行顺序,但也同时会弹出多个窗口,影响你调试。
通过设置 --workers 1,所有测试都会依次运行,而不是并行运行。方便你观察测试的执行过程,避免多线程并发造成干扰。
最后:
上面这5个都是我比较喜欢的使用技巧,大家如果有其他的技巧,也欢迎在评论区聊聊。