npm 包 pixel-change 使用教程

阅读时长 5 分钟读完

什么是 pixel-change

pixel-change 是一个基于 node-canvas 的 npm 包,可用于检测两张图片是否完全一致。它可以用于前端自动化测试中,在比较页面是否发生变化时非常有用。

安装

使用 npm 安装:

使用

引入

API

pixelChange(options)

该方法用于比较两张图片是否完全一致。返回一个 Promise 对象,resolve 值为 true 表示两张图片一致,resolve 值为 false 表示两张图片不一致。

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

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

示例

在 Jest 中使用

首先,在项目根目录下创建一个 __tests__ 文件夹。

接着,我们可以创建一个 index.test.js 文件:

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

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

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

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

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

在这个文件中,我们使用了 jest-image-snapshot 包中提供的 toMatchImageSnapshot 方法,该方法会将当前页面截图与之前的快照进行比较。如果两者一致,则测试通过;否则,测试失败。

但是,有些情况下,页面上的变化(如某个元素的颜色变化、某个元素的位置变化等)可能不会被截图包含在内,因此我们需要使用 pixel-change 包来检测页面是否发生了变化。如果页面没有发生变化,则可以更新快照。

在 Cypress 中使用

安装依赖:

打开 cypress/plugins/index.js 文件,添加以下代码:

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

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

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

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

打开 cypress/support/commands.js 文件,添加以下代码:

接着,在 cypress/integration 目录下创建一个 example.spec.js 文件:

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

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

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

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

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

如果页面未发生变化,可以使用 cy.screenshot() 方法进行更新快照。如果页面发生了变化,需要对代码进行修改或修正样式表的问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672593660cf7123b363a2

纠错
反馈