微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅针对最新浏览器版本进行 E2E 测试有什么好处 2021 年有哪些新变化?结论

如何解决仅针对最新浏览器版本进行 E2E 测试有什么好处 2021 年有哪些新变化?结论

在使用 Playwright、Puppeteer 和 Cypress 等工具执行端到端测试时,我相信所有这些(except the latter,如果我错了,请原谅我)您可以使用与每个版本一起捆绑的每个浏览器的最新版本。

在那种情况下,我想知道运行验收端到端测试的真正好处是什么,它只会针对更有限的场景验证功能,而不是例如确保您的应用程序仍然可以正常工作铬 70?

关于为什么只考虑最近的浏览器版本而忘记其他浏览器版本的任何见解都是一个好主意,通过使用 Playwright 而不是允许针对特定浏览器二进制文件进行定位测试的工具,例如,并使您的 E2E 测试结果如下:

PASS. Shopping-Cart (Modern)
FAIL. Shopping-Cart (chrome 70) 
// Refactor

代替

PASS. Shopping-Cart
// Yay! Release

解决方法

具有特定可执行文件的木偶戏、剧作家、赛普拉斯

首先,让我们澄清一下,在 Chrome/Chromium 的情况下,除了捆绑的可执行文件之外,还可以使用其他可执行文件启动 Puppeteer 和 Playwright,因此它不是特定于 Cypress。

const browser = await puppeteer.launch({ executablePath: '/path/to/Chrome70' });
const browser = await chromium.launch({ executablePath: '/path/to/Chrome70' });

其次,即使 PuppeteerPlaywright 的功能列表中有“测试”,它们也不是测试框架,而主要是 Cypress is a testing tool


仅针对最新浏览器版本进行 E2E 测试有什么好处?

几年前,在所有浏览器和大量用户使用的尽可能多的版本上进行测试至关重要。
随着时间的推移,它发生了变化。

2021 年有哪些新变化?

  • 只有 Google ChromeSafari (Webkit) 浏览器拥有 10% 以上的市场份额。 Statcounter.comWikpedia
  • 对于绝大多数人来说,甚至不需要 Firefox 支持(其 3.68% market share 在全球范围内)
  • “Windows 和 Mac 上的 Google Chrome 会定期自动更新。自动更新过程由基于开源奥马哈项目的 Google Update 执行。自动-更新提供了对有时关键问题的修复,限制了暴露。” chromium.org
  • 由于自动更新,使用非最新 Chrome 的用户数量非常有限。以前的版本(例如 last-but-one)会在 1-2 个月内停止流通,并且在消失之前的短时间内保持在 1% 以下的份额。 Desktop Browser Version Market Share Worldwide,Statcounter.com

Desktop Browser Version Market Share Worldwide

结论

I.) 这意味着对于大多数产品来说,它已经足够并且是针对最新浏览器版本进行测试的最佳选择。

您提到了 Chrome 70,它是一个相对较旧的版本,released in October 2018,对于大多数不需要支持它的产品,它们与 Internet Explorer 11 or legacy Edge 在同一个存储桶中。

II.) 对于某些产品,您可能需要支持特定的(旧的)浏览器版本,在这种情况下,使用特定的可执行文件会有所帮助。

顺便说一句,如果您决定针对多个浏览器版本运行测试,Puppeteer 或 Playwright 仍然可以,您只需要在迭代测试套件时提供正确的可执行文件(例如,在 Jest 的情况下) :describe.each() 可以使用不同的配置和测试数据运行相同的测试或测试套件)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?