npm 包 @bouzuya/screenshot-testing 使用教程

前言

前端开发中,我们经常需要进行界面测试。界面测试通常是手工完成的,这需要大量的人力和时间。在一些重复性比较高的场景下,使用自动化测试是非常有优势的。本文将介绍一种简单易用的自动化测试工具——@bouzuya/screenshot-testing,它可以用于生成和比较页面的截图。

安装和使用

安装

安装 @bouzuya/screenshot-testing 的命令如下:

--- ------- ---------------------------

使用

安装完毕后,我们需要创建自己的测试代码。首先,我们需在测试文件中引入模块:

----- ----------------- - ---------------------------------------

在使用 @bouzuya/screenshot-testing 时,我们需要指定以下几个参数:

  • pageUrl:需要截图的页面的 URL。
  • options:一些高级配置选项,比如指定比较结果的容差度、指定需要忽略的区域等等。
  • before:在运行测试前需要进行的操作,比如登录、设置 Cookie 等等。
  • after:测试结束后需要进行的操作,比如清理数据等等。
  • onBeforeFirstScreenshot:测试前需要进行的操作,比如刷新页面等等。
  • onBeforeNextScreenshot:每次截图前需要进行的操作,比如点击按钮、输入等等。

下面是一个简单例子:

--------------------- ---- ------ -- -- -
  ---------- -- --- ------ ----- -- -- -
    ----- ------ - ----- -------------------
      -------- -----------------------
      ----------------------- ----- ---- -- -
        ----- ------ - ----- -----------------
        ----- ---------------
      -
    ---
    --------------------------
  ---
---

在这个例子中,我们测试了 example.com 的主页,并在每次截图前点击了页面上的一个按钮。测试结果将返回一个布尔值,代表两次截图的结果是否一致。如果测试结果为 true,则表示测试通过;否则,测试未通过。

expect(result).to.be.true; 的语句是断言结果的代码,如果测试结果不是 true,则会抛出异常,测试将失败。

高级使用

容忍度

容忍度是指在两张截图比较时所容忍的不同程度。默认情况下,容忍度为 0.1。

我们可以通过传入 options 对象来指定容忍度参数:

----- ------ - ----- -------------------
  -------- -----------------------
  -------- -
    ---------- ---
  -
---

区域忽略

有时候我们需要忽略一些特殊区域的比较。比如一些时间戳或随机生成的元素,在两次截图时是不同的。我们可以通过传入 options 对象来指定忽略的区域:

----- ------ - ----- -------------------
  -------- -----------------------
  -------- -
    ------- -
      -
        -- --
        -- --
        ------ ----
        ------- ---
      -
    -
  -
---

在这个例子中,我们指定了一个以左上角为起点、宽和高均为 100 的矩形区域。在截图时,这个区域将被忽略掉。

生命周期

我们可以在测试运行前、运行后,以及每次进行截图前进行一些操作。这是指定 beforeafteronBeforeFirstScreenshotonBeforeNextScreenshot 参数的场景。

  • before:在测试运行前进行的操作。
  • after:在测试运行结束后进行的操作。
  • onBeforeFirstScreenshot:在每次进行测试前进行的操作。
  • onBeforeNextScreenshot:在每次进行截图前进行的操作。

这些生命周期都是异步执行的。我们可以使用 async/await 或 Promise 来实现代码。

------- ----- ---- -- -
  ----- ----------------------------------
  ----- ---------------------- ---------
  ----- ---------------------- ------------
  ----- ------ - ----- -----------------
  ----- ---------------
-

在这个例子中,我们在测试开始前通过登录表单登录了 example.com,登录过程是异步的。这里我们使用了 page.gotopage.typepage.$ 方法。这些方法是 Puppeteer 库提供的,可以模拟用户行为。

对于每次截图前需要进行的操作,我们可以这样实现:

----------------------- ----- ---- -- -
  ----- ------ - ----- -----------------
  ----- ---------------
-

在这个例子中,我们为每次截图前的操作加上了一个简单的点击按钮的操作。

总结

在本文中,我们介绍了一种方便快捷的界面测试工具——@bouzuya/screenshot-testing。它使用简单,支持一些高级配置,可以快速构建自己的测试用例。希望本文能够对大家在开发过程中使用自动化测试有所帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005726781e8991b448e89a0


猜你喜欢

  • npm 包 raml-definition-system-test 使用教程

    在前端开发中,使用 RESTful API 是一种常见的方式。为了确保 API 规范性和正确性,我们需要对它们进行测试。在这篇文章中,我将介绍一个使用 npm 包 raml-definition-sy...

    3 年前
  • npm 包 newman-reporter-text 使用教程

    介绍 newman-reporter-text 是 newman 的一个报告插件,它可将测试结果以文本形式输出。newman 是 Postman 开发的一款命令行工具,用于运行和测试 Postman ...

    3 年前
  • npm 包 raml-typesystem-test 使用教程

    随着前端开发的迅速发展,我们越来越依赖于各种工具来简化我们的开发流程。其中,npm 是最为流行的 JavaScript 包管理器之一,它提供了许多优秀的工具包供我们使用。

    3 年前
  • npm包 rand-perm使用教程

    简介 在前端开发中,我们经常需要对数组进行排序或洗牌等操作。这时候,rand-perm可以提供便捷的操作,其能够生成随机的数组排序,并且支持按照自定义规则进行排序。

    3 年前
  • npm 包 starwars-names-egghead 使用教程

    在前端开发中,时常需要使用到一些测试数据,例如测试用户名、邮箱等等。为了不占用更多的时间去构建测试数据,我们可以使用 npm 包来获取一些具有特定意义的测试数据。而 starwars-names-eg...

    3 年前
  • npm包 naf-passport-wxwork 使用教程

    在前端开发中,我们经常会使用各种npm包来帮助我们快速完成开发。今天,我们将介绍一款npm包——naf-passport-wxwork,这是一款用于管理企业微信企业号登录的包。

    3 年前
  • npm 包 ternrc 使用教程

    在前端开发中,我们经常需要进行代码补全、语法高亮等操作。npm 包 ternrc 就是一个非常方便的工具,它可以为我们提供更好的代码编辑体验。本文将详细介绍 ternrc 的使用方法,包括配置文件的下...

    3 年前
  • npm 包 assets-webpack-plugin-steamer 使用教程

    在前端开发中,构建工具的使用越来越重要,Webpack 作为最常用的打包工具之一,已经成为前端开发的必备技能。而 assets-webpack-plugin-steamer 是一个非常实用的 Webp...

    3 年前
  • npm 包 ng2-canvas-whiteboard-compit 使用教程

    介绍 ng2-canvas-whiteboard-compit 是一个 Angular2 的 npm 包,它封装了 Canvas 画布,并提供了一组简单的 API,用于在网页中创建白板、画图、标注等功...

    3 年前
  • npm 包 react-svg-atlas 使用教程

    介绍 react-svg-atlas 是一款可以优雅地管理 SVG 图标集合的 React 组件库,适用于在 React 应用程序中使用矢量图标。 本文将向您介绍如何在 React 应用中安装和使用 ...

    3 年前
  • npm 包 fike 使用教程

    前言 在前端开发中,我们经常需要处理上传、下载文件等操作。这些操作都需要经过一定的编写代码来实现。为了提高开发效率,我们可以使用 npm 包 fike 来简化文件操作。

    3 年前
  • npm 包 ember-blog-engine-by-vothaison 使用教程

    简介 ember-blog-engine-by-vothaison 是一个基于 Ember.js 框架的博客引擎 npm 包。使用它,你可以轻松地在你的 Ember.js 应用中添加一个博客系统,提供...

    3 年前
  • npm 包 nativescript-swipe-layout 使用教程

    引言 在移动端应用程序开发中,许多应用程序都需要滑动操作来实现更好的用户交互体验。然而,在开发中使用滑动布局并不是一件简单的事情。因为移动设备上的API和WebAPI的差异,在这个方面的开发往往需要更...

    3 年前
  • npm包 touchui-template-compiler使用教程

    简介 touchui-template-compiler是一种前端模板编译器,能够将touchui模板语言编译成HTML。 touchui-template-compiler有以下几个特点: 简单易...

    3 年前
  • npm 包 d3-sankey-alluvial 使用教程

    在前端开发中,数据可视化是非常重要的一个环节。而 d3.js 是一款十分优秀的数据可视化工具库。其中,sankey 图和 alluvial chart 是两种常用的数据可视化方式,它们可以清晰地展示数...

    3 年前
  • npm包kui-pixi使用教程

    Pixi.js 是一个开源的 HTML5 游戏引擎,它可以让你使用 JavaScript 轻松实现 HTML5 动画和交互效果。kui-pixi 是一个基于 Pixi.js 的 UI 库,它提供了一些...

    3 年前
  • npm 包 redux-state-save 使用教程

    redux-state-save 是一个在 Redux 应用中实现状态本地存储的 npm 包。通过使用该包,我们可以实现在用户关闭应用程序之后,下次打开应用程序时将应用程序的状态恢复到上次关闭时的状态...

    3 年前
  • npm 包 dm-file-uploader 使用教程

    npm 是目前前端开发中最流行的包管理器,它提供了丰富的 npm 包供开发者使用,而 dm-file-uploader 就是其中一个非常实用的 npm 包,它可以帮助我们实现上传文件的功能。

    3 年前
  • npm 包 gulp-uglify-es-scoped 使用教程

    什么是 gulp-uglify-es-scoped gulp-uglify-es-scoped 是一个用于前端项目的 npm 包。它的主要功能是压缩 JavaScript 代码和修改 JavaScri...

    3 年前
  • npm 包 metamarkdown 使用教程

    在前端开发中,我们经常需要使用 Markdown 进行文档编辑和格式化。而 metamarkdown 是一个基于 Markdown 构建的强大工具,可以将 Markdown 文件转换为具有JSON格式...

    3 年前

相关推荐

    暂无文章