随着前端技术的不断发展,Web 应用程序越来越复杂。在这个过程中,前端开发人员需要确保他们的应用程序在不同的浏览器和设备上保持一致。这通常需要进行回归测试以确保应用程序的维护和稳定。回归测试的目的是验证应用程序在进行大量代码修改后,依然能够保持稳定。而可视化回归测试追求的则是,能够通过录制用户界面操作后,自动化对应验证逻辑。
在此,我们将介绍使用 Cypress 在前端实现可视化回归测试的过程以及样例。
Cypress 简介
Cypress 是一个前端测试工具,它支持:应用程序交互测试、API 测试、端到端测试等。 Cypress 特点是大量使用可视化,以便于快速定位问题。同时, Cypress 的 API 命令也可以很方便的进行断言,比如说操纵控件,验证响应结果等等。
Cypress能够在浏览器中运行,并支持 Chrome、Firefox、Safari、IE 11等浏览器。Cypress 还可以通过插件支持非浏览器环境的测试,例如Electron和Node。
开始一个基础的测试
首先,我们需要为测试环境搭建一个简单的测试用例。 这个测试用例需要展示一个常用的场景,并简单说明如何通过 Cypress 操作来实现。
it('Should be able to open the google page', () => { cy.visit('https://www.google.com') cy.get('input[name="q"]') .type('Hello from Cypress') cy.get('div.FPdoLc > center > input[value="Google 搜索"]').click() })
在这个测试用例中,我们展示了如何使用 Cypress 打开 Google 主页并搜索一个值并点击查询。我们可以看到这个测试用例非常的简单,但我们可以从这个测试用例的执行中学到很多关于 Cypress 的使用的东西。
可视化回归测试
接下来,我们将探讨如何在 Cypress 中实现可视化回归测试。这将帮助我们了解我们经常会遇到的一些问题。假设我们有一个电商网站,我们需要在多种浏览器环境下执行回归测试,并获取每个浏览器/设备中的屏幕截图,并在后来可以轻松查看结果。
对于可视化回归测试,字符串匹配显然是不够的,因为我们可能会因为不同的屏幕分辨率或浏览器版本而导致问题。因此,我们需要跨多种浏览器环境、设备环境,记录每个页面的屏幕截图,并通过软件自动化测试审核这些截图。
我们可以从以下几个步骤来实现可视化回归测试:
- 提供一个页面 URL 以及每个浏览器/设备环境。
- 在我们的定位器中运行我们的测试脚本(例如 Cypress 脚本)。
- 定义条件以采集测试数据,并将其存储到媒体文件中。
- 对生成的屏幕截图进行比对,当图像的比对结果出现问题时,通过赞传回反馈结果。
下面,我们来看一下具体实现的技术细节:
用Cypress增加一个插件
Cypress 需要一个插件才能支持可视化回归测试。我们可以通过以下命令来操作安装插件:
npm install --save-dev cypress-plugin-snapshots
然后,我们需要通过将以下代码添加到我们的 Cypress 配置文件 cypress.json 中来启用插件:
{ "viewport-aliases": { "desktop": "macbook-15", "tablet": "ipad-2", "mobile": "iphone-6+" }, "pluginsFile": "cypress/plugins/index.js", "screenshotsFolder": "cypress/screenshots/"
为每个浏览器环境配置 Cypress Plugin
在每个浏览器环境中,我们都需要为 Cypress 配置插件。在此我们将默认配置的 plugins 文件更换为以下的配置项目:
const { addMatchImageSnapshotPlugin } = require('cypress-plugin-snapshots/plugin') module.exports = (on, config) => { addMatchImageSnapshotPlugin(on, config) return config }
这样,我们已经配置了插件,现在我们可以开始准备测试循环并采集屏幕截图了。下面的示例代码可以让我们了解整个过程:
-- -------------------- ---- ------- ----- ----- - - -------------- ----------- ---------- ---------- ------------- --------- - ------------------ -- - ---------- ----- ---------- ------------ -- -- - -------------------- ------------------------------- ------------ ----------------------- -- --
在上面的代码中,我们使用 Cypress 的 viewport()
方法来设置每个浏览器视图大小。我们通过循环正在测试的浏览器环境来遍历每个视口大小。然后,我们调用 matchImageSnapshot()
方法获取当前页面的屏幕截图,并通过比较之前存储的屏幕截图来验证结果。
结论
在前端开发中,浏览器兼容性通常是一个重要的问题。确保我们 VR 系统软件对输入输出设备的支持能够符合用户期许,对于整体纳入成员的效率非常重要。在这里,我们介绍了一个强大的前端测试工具,Cypress,可以使用其进行可视化回归测试,该工具支持通过可视化方法测试应用程序的某些方面。使用 Cypress,我们可以通过测试套件中的插件和 API 将其集成到我们的测试套件中。希望这篇文章能够帮助你学会如何使用 Cypress 实现可视化回归测试。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6704caa7d91dce0dc8503d8d