前言
在网页提到 E2E 测试通常有 Cypress 与 Playwright 两种选项,而两种测试工具我都尝试过。整体开发体验上我更喜欢 Playwright,但还有更多要素需考虑,记录我会在意的细节与选择原因。
- Cypress:于 2017 年发布。不仅局限于测试框架,还扩展成为一个平台,提供测试性能的完整概览,并提供了一个一体化的监控仪表板(Cypress Cloud SasS)。
- Playwirght:于 2020 发布。Playwright 由微软支持,超越了 JavaScript 生态系统,支持更多编程语言。
我在意的 Cypress 与 Playwright 差异
- Cypress 并行化(Parallelization)执行测试功能被建立在他们的 Cypress Cloud SaaS 服务内,虽有些替代方案但都不是那么完美,而 Playwirght 测试是由外部 Node.js 处理,与浏览器隔离天生就容易并行化执行测试。
- Cypress 对 Safari 测试还是持续在测试阶段,相反 Playwright 天生支持任何浏览器。
- Cypress 通常是较慢的。
- Cypress 具备完善的生态系与社区,Playwright 较新较小但快速成长中。
背后细节
- Cypress 定位完全在自动化浏览器测试,而 Playwright 通常可用于 E2E 测试与爬虫用途。
- Cypress 基于 Electron App 并注入浏览器执行循环中而 Playwright 基于 Chrome DevTools Protocol
- Cypress 只限于 JavaScript 生态,而 Playwright 支持多语言。
总结
-
不是很喜欢 Cypress 把一些高级功能放在付费墙后,但看得出来他们专注于解决网页测试的问题,也在推出针对网页测试的额外付费功能。
-
虽然 Playwright 社区相对较小但根据 JavaScript Survey 2024 统计有很大的潜力,并且大多文章普遍结论为推荐 Playwright,就缺陷来说语法感觉些许冗长社区较小之外,没什么好挑剔的。
我有较多经验使用 Cypress 所以依此为出发点进行比较,除非想特别整合某些生态中的套件,否则我应该都会选择 Playwright,基于它快速良好的开发体验、开放性与社区成长趋势。
延伸阅读
- Cypress vs Playwright - reddit r/QualityAssurance
- Cypress vs Playwright: Which is best for E2E testing? - Everyday Frontend
- What a Google Search Can’t Tell You About These JS Testing Frameworks - tweak