使用 jest-puppeteer 编写端到端测试的快速指南
本文提供了一个使用 jest-puppeteer 编写高效端到端测试的快速指南,重点介绍了设置过程、常用 API 以及使用一个简易待办事项应用作为示例进行实际测试的场景。
为了确保 Logto 的质量并持续改进产品,我们使用 jest-puppeteer 进行端到端自动化测试。这样可以让我们快速迭代 Logto 的开发过程而不受干扰。
在本文中,我们将分享使用一个简易待办事项应用作为示例编写高效 jest-puppeteer 测试脚本的经验。我们旨在帮助你快速入门,为自己的项目编写 jest-puppeteer 测试代码。
使用 jest-puppeteer 进行端到端测试简介
端到端测试是一种确保应用从用户角度正确运行的方法。为此,我们使用了两个基本工具:Jest 和 Puppeteer。
Jest 是一个广受欢迎的 JavaScript 测试框架,提供了一个用户友好的 API 用于编写测试和断言。它被广泛用于单元测试和集成测试。
Puppeteer 是由 Chrome 团队开发的 Node.js 库,提供了一个高层次的 API 用于控制无头 Chrome 或 Chromium 浏览器。使其成为在端到端测试中自动化浏览器操作的理想选择。
jest-puppeteer 是一个 Jest 预设,支持使用 Puppeteer 进行端到端测试。它提供了一个简单的 API 用于启动新的浏览器实例并通过它们与网页进行交互。
现在你对这些基本工具有了初步了解,让我们深入了解如何设置你的测试环境。
设置你的测试环境
使用 jest-puppeteer 进行端到端测试的环境设置是 一个简单的过程,包括三个主要步骤:
- 安装依赖
在你的项目中(或者创建一个新项目),打开终端并运行以下命令:
然后进入 node_modules/puppeteer
目录并安装 Chromium(Puppeteer 需要):
- 配置 Jest
接下来,你需要配置 Jest 以与 Puppeteer 无缝协作。
如果你的项目根目录中还没有 Jest 配置文件,请创建一个(例如,jest.config.js
)。在该配置文件中,将 jest-puppeteer 指定为预设:
你可以根据需要在此文件中自定义其他 Jest 设置。有关自定义 Jest 配置的更多信息,请参阅 Jest 配置。
- 编写你的测试
在你的项目中创建测试文件,通常使用 .test.js
作为文件扩展名。Jest 会自动发现并执行这些测试文件。
以下是来自 Jest 文档 的示例:
然后执行以下命令运行测试:
通过这三个步骤,你将拥有一个配置良好的测试环境,以使用 jest-puppeteer 进行端到端测试。
不过,请注意,这只是一个基本示例。有关环境配置的更多详细信息,请参阅相关文档:
常用 API
在接下 来的步骤中,我们将依赖 Jest、Puppeteer 和 jest-puppeteer 提供的 API 来帮助我们进行测试。
Jest 主要提供用于组织测试和断言预期结果的 API。你可以在 文档 中探索具体细节。
Puppeteer 的 API 主要用于与浏览器交互,并且它们对测试的支持可能不太直观。你可以参考 Puppeteer 文档 了解其提供的功能。在我们后续的测试示例中,我们将涵盖一些常见的用例。
由于 Puppeteer 的 API 最初并非针对测试设计,使用这些 API 编写测试可能具有一定挑战性。为简化编写 Puppeteer 测试的过程,jest-puppeteer 包含了一个内嵌库 expect-puppeteer
,它提供了一套简洁且用户友好的 API。该库的更多详情见其 文档,下面的示例展示了其一些有用功能:
在接下来的示例中,我们将结合这些库提供的 API 来完成我们的测试场景。
现在是时候开始学习如何使用我们简易待办事项应用编写测试代码了。
简易待办事项应用
假设我们有一个运行在 http://localhost:3000
的简易待办事项应用,其主要的 HTML 代码如下:
当进行端到端测试时,我们希望覆盖以下场景:
- 访问应用的 URL 时,应用及其数据应该正确加载。
- 项目的勾选按钮应该可以点击。
- 点击项目备注中的外部链接应该会在新标签页中打开链接。
- 可以从表单中添加一个项目。
接下来,我们将编写测试代码以验证这些场景。