简介

关于使用 Nightwatch 进行 Web 测试的系列文章

欢迎来到我们关于使用 Nightwatch 在真实浏览器中测试网站和 Web 应用程序的博客系列文章。我们将逐步了解测试学习。

  • 入门 (您现在所处的位置)
  • 复杂场景 和网站测试
  • 侧重于页面对象模型 (POM) 的测试编写模式
  • 生成HTML 报告,并包含DOM 历史记录,以便进行全面分析
  • 使用 Nightwatch 创建自定义命令

此外,我们将探索 Nightwatch 的两个强大功能

  • 检查器工具,使您能够使用图形界面编写测试,以及
  • Chrome Recorder,使您能够在不编写代码的情况下创建测试。我们将指导您有效地使用这些工具。

为了确保全面测试,我们还将讨论

  • CI 上运行测试 – GitHub Actions
  • 使用 BrowserStack 进行跨浏览器测试
  • 移动浏览器上运行测试

在本系列文章结束时,您将拥有使用 Nightwatch 进行 Web 测试的坚实基础,使您能够确保 Web 项目的质量和可靠性。

在本篇博文中,我们将重点介绍 Nightwatch 入门。从设置 Nightwatch 到编写第一个测试和生成报告,我们将提供分步指南,帮助您使用 Nightwatch 开始 Web 测试之旅。您还可以观看本博文的视频教程

关于测试空间的简要说明

软件测试涵盖各种类型的测试,以确保应用程序的质量和可靠性。单元测试验证单个代码单元,集成测试检查组件交互,API 测试侧重于 API 功能。视觉回归测试检测视觉变化,而端到端测试涵盖整个应用程序流程。可访问性测试确保包容性的用户体验。跨浏览器测试保证跨不同浏览器的一致性,移动测试确保在移动设备上的最佳性能。每种类型的测试都具有特定的用途,并有助于确保高质量的软件产品。

关于 Nightwatch 🦉 的简要说明

Nightwatch 是一个无妥协的测试自动化框架,它简化了开发人员的 Web 和移动测试。Nightwatch 附带一套强大的工具,用于在 Web 和原生移动应用程序中编写、运行和调试测试。它与流行的测试工具和服务无缝集成,实现高效的测试执行和结果分析。

设置 Nightwatch

让我们开始吧。首先,我们需要在开发环境中设置 Nightwatch。无论您是启动新项目还是将 Nightwatch 集成到现有项目中,我们都可以为您提供帮助。

npm init nightwatch <project-name>

如果您已经有一个现有的 Web 应用程序,请进入根文件夹并运行以下命令。

npm init nightwatch

Nightwatch 随后会问一系列问题。请回答以下问题。

? Select testing type to setup for your project 
    ❯◉ End-to-End testing
? Select language + test runner variant 
    ❯ JavaScript / default
? Select target browsers 
    ❯◉ Chrome
? Enter source folder where test files are stored 
    test
? Enter the base_url of the project 
    https://nightwatch.node.org.cn/
? Select where to run Nightwatch tests On 
    ❯ localhost
? Allow Nightwatch to collect completely anonymous usage metrics? 
    ❯ Yes
? Setup testing on Mobile devices as well? 
    ❯ No, skip for now
💡
注意: Nightwatch 默认支持 TypeScript、不同类型的测试、其他测试运行器以及所有主流浏览器。在本教程的范围内,我们将保持简单,专注于在 Chrome 上使用 JavaScript 进行端到端测试,不使用任何测试运行器。

设置 Nightwatch 就是这么简单!回答完问题后,Nightwatch 会安装所有必要的依赖项,并为编写测试准备开发环境。对于新项目和现有项目,它们的过程完全相同。您可以在我们的 指南 中了解更多关于安装的信息。

您的第一个测试

现在是激动人心的部分 - 编写您的第一个测试!我们将指导您完成使用 Nightwatch 创建测试脚本的基础知识。

Nightwatch 支持流行的 BDD 接口来编写测试 - describeit 格式。让我们从定义第一个测试的规范开始。在本测试中,我们将访问 Nightwatch 的致敬页面,并检查标题是否正确 - “Introducing Nightwatch v3”。

/test 文件夹下创建一个名为 home.spec.js 的文件,并包含以下代码。

describe('Nighwatch homepage', function() {
  it('Should have the correct title', function(browser) {
    browser.navigateTo('/').assert.textEquals('h1', 'Introducing Nightwatch v3')
  })
})

解释

browser.navigateTo('/') - 我们要求浏览器从安装期间定义的启动 URL 中访问路径 '/'。您可以在配置文件中对其进行编辑 - nightwatch.conf.js

.assert.textEquals('h1', 'Introducing Nightwatch v3') - 我们使用 textEquals 函数验证选择器为 h1 的元素中的文本是否等于 “Introducing Nightwatch v3”。

运行

保存测试脚本后,是时候使用 Nightwatch 执行它了。进入命令行并输入以下命令。

npx nightwatch test

您应该会看到 Chrome 浏览器打开,导航到 Nightwatch 主页并关闭。命令行应该显示以下内容。

恭喜!👏👏 您已成功运行第一个测试。

报告和调试

执行测试后,Nightwatch 会生成详细的报告,提供宝贵的见解。复制 HTML 报告文件路径,并在浏览器中粘贴,并在前缀 file://,您将看到以下报告。在编写复杂测试并遇到问题时,我们可以检查此报告来调试测试。

下一步

探索复杂测试用例和高级技术

您已学习如何使用 Nightwatch 设置测试环境并成功编写端到端测试。在我们接下来的博文中,我们将更深入地探讨网站测试领域 - 处理复杂测试场景的策略,例如多标签交互、复杂选择器、iFrames、复制/粘贴、属性断言、使用 async/await、与 DOM 元素交互、执行客户端 JS 等。敬请关注我们即将发布的关于“网站的复杂测试场景”的博文。

加入我们的社区 💬

如果您有任何问题,请随时访问我们的 Discord 服务器并打个招呼。我们的社区随时为您提供支持、分享见解,并帮助您解决可能遇到的任何与测试相关的疑问。我们欢迎您的积极参与,并期待在我们的 Discord 社区中与您联系。

测试愉快!🎉

视频教程

Get Started with Web Testing using Nightwatch - Video Tutorial
使用 Nightwatch 开始 Web 测试 - 视频教程