npm 包 Mugshot-js使用教程

在前端开发中,我们经常需要进行页面截屏和测试,并将结果保存在持续集成/测试平台,同时还需要与团队成员分享。这时候,mugshot-js 就显得尤为重要了。

Mugshot-js 是一个基于 Puppeteer 的 npm 包,可以帮助我们轻松地获取网站或应用的视觉快照并进行比较,从而实现跨浏览器测试。

在本文中,我们将介绍如何使用 Mugshot-js 包来进行前端测试以及如何将结果保存到 CI/CD 平台。同时,我们还会深入探讨一些更高级的主题,例如如何处理异步操作,如何配置 Mugshot 和 Puppeteer,以及如何在不同的环境中运行测试。

安装 Mugshot-js

要使用 Mugshot-js,需要先安装它。使用 npm 来安装,运行以下命令

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

基础使用

我们首先来看看获取截屏的基本使用方式。在示例中,我们将使用 Jest 进行测试,Jest 是一个流行的 JavaScript 测试框架。在 tests 文件夹中,我们创建一个名为 test.js 的文件,:

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

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

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

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

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

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

在上述代码示例中,我们在 Jest 测试文件中创建了一个 Mugshot 实例,设置了 rootDirectorytestExtensionimageSuffix 等参数。

beforeAllafterAll 钩子函数中,我们分别在测试前和测试后进行必要的操作。在 afterEach 钩子函数中,我们调用了 mugshot.afterEach 函数,该函数用于清理 Mugshot 实例中的比较结果。

it 函数中,我们使用 await mugshot.start 函数和 await mugshot.end 函数来标记测试的开始和结束,之间调用 await mugshot.snap 函数来实现将所需要页面的截图进行比较。

处理异步操作

Mugshot-js 可以并不是为所有的应用程序都是异步的,因此,我们需要确保能够正确处理异步操作。要做到这一点,我们需要使用 Puppeteer 中的 page.waitFor 函数。

在下面的示例中,我们演示了如何等待元素在DOM中可用,如何等待一个 CSS 选择器加载完成,以及如何等待一个自定义函数返回。

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

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

配置 Mugshot-js

Mugshot-js 提供了许多自定义内容,以方便使用它。在本节中,我们将探讨如何配置 Mugshot-js,包括如何增加自定义的比较任务、如何自定义比较函数等。

自定义比较器

在 Mugshot-js 中,我们可以使用默认的比较器,也可以使用自定义的比较器来实现更精细的比较结果。在下面的示例中,我们演示了如何实现一个简单的相似性算法,该算法比较两张截屏的可见像素色值。

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

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

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

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

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

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

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

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

自定义比较任务

在 Mugshot-js 中,我们可以创建不同的比较任务,在不同的浏览器中进行测试。下面是一个演示如何在不同的浏览器中实现自定义比较任务的示例

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

  -- ---

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

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

Mugshot-js 的扩展

Mugshot-js 有很多扩展,可以更好地实现自动化测试。下面是一些常见的 Mugshot-js 扩展:

Mugshot-mocha

Mugshot-mocha 是一个用于测试 Web 界面的基于 Mocha 框架的扩展程序。它为 Mugshot-js 类提供了一个内置的 Mocha 插件。

Mugshot-jest

Mugshot-jest 是一个用于测试 Web 界面的 Jest 框架的扩展程序。它为 Mugshot-js 类提供了一个内置的 Jest 插件。

Mugshot-visual-regression

Mugshot-visual-regression 是一个基于 JavaScript 的视觉回归工具,可与 Mugshot-js 集成。它可用于自动化实现视觉测试,并确定网站被更改时是否发生了不当的事情。

结论

Mugshot-js 能够很好地完成前端测试的工作,特别是与 Puppeteer 集成。我们在本文中探索了其基本功能,如何处理异步操作,如何自定义比较器和比较任务,同时也介绍了一些扩展程序。

我们希望本文可以帮助读者更好地了解 Mugshot-js,并在自己的项目中实现前端自动化测试。欢迎在评论区留下你的想法和问题!

参考文献

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


猜你喜欢

  • npm 包 vue-carousel-3d-modified 使用教程

    随着 web 技术的不断发展,前端开发也变得越来越复杂。为了提高开发的效率和代码的可维护性,我们常常会使用一些常用的工具和框架来辅助开发。其中,npm 是一个非常常用的包管理工具,它可以让我们轻松地引...

    3 年前
  • npm 包 melektest 使用教程

    在前端开发中,我们经常需要进行单元测试。而 npm 上有很多开源的测试框架可以选择。今天我们来介绍一款名为 melektest 的 npm 包,它可以让我们更加轻松地进行单元测试。

    3 年前
  • npm 包 check-mate 使用教程

    前言 在前端开发中,我们经常需要对代码进行校验和规范性检查。而在代码量比较大时,这一过程手动校验将会变得非常耗时耗力。此时,一个好的 npm 包就能够帮助我们节约时间和提高开发效率。

    3 年前
  • npm 包 dtsgenerator-fork 使用教程

    引言 对于前端开发者来说,一个好的工具能够提高开发效率,减少开发成本。使用 TypeScript 作为编程语言能够保证代码的可维护性和稳定性,但是在使用 TypeScript 开发时,对于数据交互部分...

    3 年前
  • npm 包 js-namumark 使用教程

    前言 js-namumark 是一个可用于浏览器和 node.js 环境的 markdown 渲染器,设计用于韩国南都的 wiki,支持复杂的 wiki 语法及其扩展。

    3 年前
  • npm 包 swagger-vue-generator 使用教程

    前言 在开发 Web 应用和服务的过程中,接口文档是必不可少的一环。而 Swagger 是一个流行的 API 文档框架,在 API 定义中提供了一套规范,能够让开发者更轻松地创建、维护、测试和使用 R...

    3 年前
  • npm 包 wkj 使用教程

    在前端开发中,很多时候我们需要进行日期的操作。JavaScript 语言自带的 Date 对象可以满足大部分需求,但少数情况下我们希望进行更为精确的日期计算,这时候就需要使用 wkj 这个 npm 包...

    3 年前
  • npm 包 felicious 使用教程

    在前端开发中,我们常常需要使用各种各样的 npm 包来简化开发流程。其中有一款实用工具 felicious,可以帮助我们优雅地管理前端组件的复杂性和结构。本文将详细介绍 felicious 的使用方法...

    3 年前
  • 使用 agx-typeahead 的教程

    什么是 agx-typeahead agx-typeahead 是一个基于 jQuery 的自动补全插件,它可以根据用户的输入,动态地从给定的数据源中搜索相关的结果,并在下拉框中展示匹配的结果,帮助用...

    3 年前
  • 前端技术文章:npm 包 @cowtech/glamor 使用教程

    概述 @cowtech/glamor 是一款用于创建动态样式的 JavaScript 库。它能让你在创建高度可定制化的应用程序时,更加便捷地实现样式编写。 在本文中,我们将会深入介绍该库的使用方法,包...

    3 年前
  • npm 包 text-parser-url 使用教程

    在前端开发中,经常需要解析URL,从中提取出想要的信息,以便进行后续的处理。而 text-parser-url 包是一个轻量级的Node.js模块,它提供了一种简单易用的方式来解析URL,让我们可以更...

    3 年前
  • npm 包 ag2-completer 使用教程

    Npm 是前端开发过程中非常重要的包管理工具,它可以让我们方便地引用别人写的代码,减少了开发的工作量。在这篇文章中,我将介绍一个常用的 npm 包 ag2-completer,并给出一些使用示例。

    3 年前
  • npm 包 bs-confirmation 使用教程

    在 Web 开发中,常常需要通过弹框或提示框告知用户操作结果或需要用户确认某个操作。今天介绍一个优秀的 npm 包——bs-confirmation,它为开发者提供了便捷的弹框和提示框组件。

    3 年前
  • npm 包 first-letters 使用教程

    在前端开发中,我们经常需要对字符串进行某些操作,比如获取每个单词的首字母。而手动编写代码实现这一功能会比较繁琐,这时候我们可以使用 npm 包 first-letters,它可以帮助我们快速地获取字符...

    3 年前
  • npm 包 dbffile-th 的使用教程

    什么是 dbffile-th dbffile-th 是一个 Node.js 的 npm 包,可以帮助我们读取和修改 DBF 格式的文件,常常用于处理大量的数据库文件。

    3 年前
  • npm 包 angular-esri-loader 使用教程

    随着前端技术的发展,地图应用已经成为了 Web 应用中不可或缺的一部分。ESRI 是一个专注于地图和地理信息系统的公司,而 angular-esri-loader 就是一个开源的 npm 包,能够帮助...

    3 年前
  • npm 包 mydatepicker-th 使用教程

    在前端开发中,日期选择器是一个经常用到的组件。而 npm 包 mydatepicker-th 则提供了一个轻量级而强大的日期选择器,它支持英文和泰文两种语言,在本文中,我们将详细介绍如何使用 myda...

    3 年前
  • npm 包 pugify-html 使用教程

    前言 在前端开发中,我们经常需要将 Pug 的模板文件转换成对应的 HTML 文件,同时保留 Pug 的一些基本语法和特性。这时候,npm 包 pugify-html 就可以派上用场了。

    3 年前
  • npm 包 cordova-plugin-clipboard-fork 使用教程

    随着移动端应用的不断发展,复制粘贴功能已经成为了一个必不可少的特性。而在使用 Cordova 开发移动应用时,我们需要借助插件来实现复制粘贴功能。在这篇文章中,我们将介绍一个 npm 包 cordov...

    3 年前
  • npm 包 leaf-jts 使用教程

    简介 leaf-jts 是一个用于前端开发的 JavaScript 库,它提供了许多用于操作地图和地理数据的实用功能。它是基于 JTS (Java Topology Suite) 库构建的,可以让开发...

    3 年前

相关推荐

    暂无文章