如何在 Jest 中使用 Puppeteer 进行浏览器端测试

阅读时长 7 分钟读完

随着前端技术的不断发展,越来越多的应用实现了在浏览器端运行的功能。在进行前端开发时,我们需要对所开发的应用进行测试,包括 UI 测试、交互测试等等。其中,浏览器端的测试相对复杂,在很长一段时间内,开发人员需要手工通过浏览器插件,或者是 Selenium 等自动化测试工具进行测试。

而对于 Jest 使用者而言,使用 Jest 中自带的 Puppeteer 进行浏览器端测试是一种更为方便和高效的方式。本文将详细介绍如何在 Jest 中使用 Puppeteer 进行浏览器端测试,从而帮助大家更加高效地进行前端端测试。

Puppeteer 简介

Puppeteer 是一个提供了 Chrome 或 Chromium 浏览器所提供的大部分功能 API 的 Node.js 库。利用 Puppeteer,可以模拟用户在浏览器上的行为,例如点击、输入、选择等。同时,Puppeteer 也提供了 Chrome DevTools Protocol API,可以获取浏览器相关的信息,如执行性能分析、截取网页截图等。

在 Jest 中使用 Puppeteer

下面,我们将详细讲解在 Jest 中如何使用 Puppeteer 进行浏览器端测试。

安装与配置

首先,我们需要安装 Jest 和 Puppeteer。在安装 Puppeteer 时,为了避免下载 Chromium 浏览器过程慢的情况,我们可以通过以下命令使用淘宝镜像进行安装:

安装完成后,我们需要在 Jest 的配置文件 jest.config.js 中进行如下配置:

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

其中,globals.URL 指定测试的 url 地址,testMatch 指定 Jest 检索测试文件的规则,verbose 为 true 时会显示测试过程中所有的 log 信息,testURL 指定运行测试的域名,setupFilesAfterEnv 指定在每次测试前需要执行的脚本文件。

编写测试用例

在编写测试用例前,我们需要先编写一个简单的 web 应用来进行测试。在本文中,我们以一个简单的计数器应用为例。

index.html 文件中添加以下内容:

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

index.js 中添加以下内容:

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

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

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

这个应用实现了一个简单的记数器功能,包括一个 h1 标签用于显示计数器的值,以及两个按钮用于增加或减少计数器的值。

接下来,我们编写一个测试用例文件 Counter.test.js

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

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

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

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

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

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

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

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

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

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

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

这个测试用例包含了三个测试,分别测试了在页面加载时计数器显示为 0,点击增加按钮后计数器值为 1,以及点击减少按钮后计数器值为 -1。

在这个测试用例中,我们首先通过 await global.__BROWSER__.newPage() 方法创建了一个浏览器页面。然后通过 await page.goto(URL) 方法访问我们要测试的应用地址。在每个测试开始前,我们通过 beforeAll 方法打开页面,并通过 afterAll 方法在测试结束后关闭页面。

在具体的测试中,我们先通过 await page.$("#xxx") 方法获取元素,再通过 await page.evaluate() 方法获取元素的文本值,判断测试结果是否符合预期。

启动测试

测试代码编写完成后,我们就可以开始执行测试了。在终端中,使用以下命令执行测试:

如果一切正常,我们应该会看到测试结果如下:

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

总结

在本文中,我们介绍了如何在 Jest 中使用 Puppeteer 进行浏览器端测试。通过 Puppeteer,我们可以模拟用户在浏览器上的行为,例如点击、输入、选择等,从而实现自动化测试。希望这篇文章能够帮助读者更加高效地进行前端端测试。

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

纠错
反馈