网上充满了建议将 Playwright 和 Cucumber 结合起来以实现 BDD 测试的文章。结果通常是,Cucumber 作为测试运行器,而 Playwright 作为库使用。
听起来有点过于复杂和麻烦?如果我告诉你,有一种方法可以使用 Playwright 作为测试运行器,并以类似 Cucumber 的风格编写 BDD 测试呢?
但我们还是先从基础开始!
什么是 Playwright?
Playwright 是由微软开发的一个强大、开源的端到端(e2e)测试框架,它正在迅速成为 Web 自动化的新标准。
使用 Playwright 作为测试运行器有很多好处,例如页面元素的自动等待、并行测试执行、捕捉屏幕截图和视频、自动浏览器初始化等。
什么是行为驱动开发(BDD)测试?
行为驱动开发(BDD)是以一种即使是非开发人员也能理解的方式来编写测试。
这个想法是用简单的、日常的语言来描述应用程序的行为。这使团队能够更容易地协作开发功能,并及早发现漏洞,因为每个人都可以跟随测试的操作进行理解。
Cucumber 和 Gherkin 语言
Cucumber 是一个常用的 BDD 测试工具,它使用一种简单的语言,叫做 Gherkin。这让你可以用普通的英语编写测试,因此即使是非技术人员,测试也很容易阅读和理解。
使用 Gherkin 描述的测试用例示例:
Feature: 用户登录
Scenario: 成功登录
Given 用户在登录页面
When 用户输入有效凭据
And 用户点击登录按钮
Then 用户被重定向到仪表板
Playwright 支持 BDD 测试吗?
在撰写本文时,Playwright 本身并不支持 BDD 测试,尽管确实有很多人对此有需求。
正如我在文章开头提到的,很多教程建议你将 Playwright 和 Cucumber 结合使用,把 Cucumber 作为测试运行器,而 Playwright 作为库。
不幸的是,这种设置有几个缺点:它给你的项目添加了额外的依赖,阻碍你充分利用 Playwright 的潜力——尤其是在 Playwright 本身可以同时作为测试框架和运行器时。
如何使用 Playwright 编写 BDD 测试?
好消息是:多亏了 Playwright-BDD 工具,你实际上可以使用 Playwright 运行 BDD 测试!
Playwright-BDD 是由 Vitaliy Potapov 开发的一个开源项目,它可以自动将 BDD 场景转换为 Playwright 测试。这个工具文档详尽,受到了开发人员的欢迎。
在看到网上的多次推荐后,我偶然发现了它,并在工作中的一个重大项目中试用了它,效果非常好。我甚至在他们的 Discord 服务器上联系了 Vitaliy,他非常乐于帮助和响应。
文档中提供了许多不同用例的示例,并且还支持 NX。
如果你计划创建一个新的端到端测试套件(或使现有的测试现代化)并对 BDD 感兴趣,我强烈建议你尝试这个项目!
结论
- Playwright 正在迅速成为现代端到端测试的标准框架,提供了像元素自动等待这样的强大功能。
- 为了充分发挥 Playwright 的潜力,它也应该作为测试运行器使用。
- 如果你想以 BDD 风格编写测试而不依赖 Cucumber 作为测试运行器,请务必查看 Playwright-BDD 项目。