npm 包 Mugshot-js使用教程

阅读时长 9 分钟读完

在前端开发中,我们经常需要进行页面截屏和测试,并将结果保存在持续集成/测试平台,同时还需要与团队成员分享。这时候,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

纠错
反馈