puppeteer - 仅针对最新浏览器版本进行 E2E 测试有什么好处
问题描述
在使用 Playwright、Puppeteer 和 Cypress 等工具执行端到端测试时,我相信所有这些工具(除了后者,如果我错了,请原谅我)只允许您使用每个浏览器的最新版本,即与每个版本捆绑在一起。
在这种情况下,我想知道运行验收端到端测试的真正好处是什么,它只会针对更有限的场景验证功能,而不是确保您的应用程序仍然可以在 Chrome 70 上运行?
任何关于为什么只考虑最近的浏览器版本而忘记其余版本的见解都是一个好主意,通过使用 Playwright 而不是允许针对特定浏览器二进制文件进行目标测试的工具,例如并使您的 E2E 测试结果如下:
PASS. Shopping-Cart (Modern)
FAIL. Shopping-Cart (chrome 70)
// Refactor
代替
PASS. Shopping-Cart
// Yay! Release
解决方案
具有特定可执行文件的 Puppeteer、Playwright、Cypress
首先,让我们澄清一下,在 Chrome/Chromium 的情况下,除了捆绑的可执行文件之外,可以使用其他可执行文件启动 Puppeteer 和 Playwright,因此它不是赛普拉斯特有的。
const browser = await puppeteer.launch({ executablePath: '/path/to/Chrome70' });
const browser = await chromium.launch({ executablePath: '/path/to/Chrome70' });
其次,即使Puppeteer和Playwright的功能列表中有“测试” ,它们也不是测试框架,而Cypress主要是一个测试工具。
仅针对最新浏览器版本进行 E2E 测试有什么好处?
几年前,对所有浏览器和大量用户使用的版本进行测试至关重要。
随着时间的推移,它发生了变化。
2021年有什么新变化?
- 只有Google Chrome和Safari (Webkit) 浏览器拥有 10% 以上的市场份额。Statcounter.com ,维基百科
- 对于绝大多数人来说,甚至不需要 Firefox 支持(其全球市场份额为 3.68%)
- “Windows 和 Mac 上的 Google Chrome会定期自动更新。自动更新过程由基于开源 Omaha 项目的 Google Update 执行。自动更新有时会修复关键问题,限制曝光。” 铬.org
- 由于自动更新,使用非最新 Chrome 的用户数量非常少。以前的版本(例如最后一个版本)会在 1-2 个月内停止流通,并在短时间内保持低于 1% 的份额,然后消失。桌面浏览器版本全球市场份额,Statcounter.com
结论
I.)这意味着对于大多数产品来说,它已经足够了,并且是针对最新浏览器版本进行测试的最佳选择。
您提到了 Chrome 70,它是一个相对较旧的版本,于 2018 年 10 月发布,对于大多数产品不需要支持它,它们与Internet Explorer 11 或旧版 Edge位于同一桶中。
II.) 对于某些产品,您可能必须支持特定(旧)浏览器版本,在这种情况下,使用特定的可执行文件会有所帮助。
顺便说一句,如果您决定针对多个浏览器版本运行测试,它仍然可以使用 Puppeteer 或 Playwright,您只需要在迭代测试套件时提供正确的可执行文件(例如,在 Jest 的情况下:describe.each()
可以运行具有不同配置和测试数据的相同测试或测试套件)。
推荐阅读
- sql - 有效地从一个 ID 与另一张表匹配的表中删除
- scala - (Scala,Akka)在 Akka Flow 缓冲区上设置调度程序吞吐量 = 1 的效果
- flutter - Flutter - 任务':app:checkDebugAarMetadata'的执行失败
- relational-database - 这个规范化的表有什么问题?
- go - 如何使用 Gin 从动态子目录中提供文件?
- mysql - 带有打字稿的续集不能使用带有类型属性的 .create
- javascript - Service Worker onClick 事件 - 打开并将一些数据传递给 PWA
- python - 使用与列名值匹配的键创建新列
- python - pytorch 对索引子集进行矢量化
- mongodb - MongoDB - 如何在以下模式中提高查询性能?