Nightwatch 还可以与 Selenium Server(也称为 Selenium Grid)一起用于大规模分布式跨浏览器端到端测试。Selenium Server 是一个用 Java 编写的开源项目,它管理一个 WebDriver 节点网络。

它旨在提供一种简单的方法来在多台机器上并行运行测试。

Selenium Server Operation

先决条件

  1. 确保系统上安装了 Node。本指南中使用的版本为 v16.14.2
  2. 确保系统上安装了 Java。本指南中使用的版本为 openjdk 11.0.14

设置 Nightwatch

创建一个新目录并在其中启动一个 Nightwatch 项目

mkdir <directory-name>
cd <directory-name>
npm init nightwatch@latest

或者直接使用单个命令在新目录中创建项目

npm init nightwatch <directory-name>

当您看到提示安装 create-nightwatch 时,按 y

❯ npm init nightwatch
Need to install the following packages:
  create-nightwatch
Ok to proceed? (y)

这将安装 Nightwatch,询问您的偏好并根据您的偏好设置 nightwatch.conf.js 文件,如下所示

Nightwatch setup using CLI Utility

偏好

测试运行器

Nightwatch 还支持其他测试运行器。除了 Nightwatch 之外,您还可以选择 Mocha 或 Cucumber JS 作为测试运行器。

语言 - Javascript/Typescript

Nightwatch 在 v1.6.0 之后支持用于测试文件的 typescript。因此,您可以选择在 Javascript 或 Typescript 中设置测试。

? What is your Language - Test Runner setup? (Use arrow keys)
❯ JavaScript - Nightwatch Test Runner
  JavaScript - Mocha Test Runner
  JavaScript - CucumberJS Test Runner
  TypeScript - Nightwatch Test Runner
  TypeScript - Mocha Test Runner

在本地/远程(云)上运行

您可以配置 Nightwatch 在您的机器上本地运行,在云机器上远程运行,或者两者都运行

? Where do you want to run your e2e tests? (Use arrow keys)
❯ On my local machine
  On a remote machine (cloud)
  Both

对于远程测试,如果您选择 BrowserStackSauce Labs,则主机和端口详细信息将自动添加。但是,如果您选择在您自己的远程 selenium 服务器或任何其他云提供商上运行,则必须在 nightwatch.conf.js 文件中手动配置主机和端口详细信息。

浏览器选择

您可以选择将在其上进行测试的浏览器,配置将自动为它们创建。我们提供多选选项,因此您可以选择任意数量的浏览器进行测试。您也可以在本地机器上测试时使用 selenium-server。

? Where you'll be testing on? (Press <space> to select, <a> to toggle all, <i> to invert selection,
 and <enter< to proceed)
❯◯ Firefox
 ◯ Chrome
 ◯ Edge
 ◯ Safari
 ◯ Local selenium-server

从选中浏览器的顶部列表中选中 Local selenium-server 选项。

测试文件夹名称

接下来,您可以命名要存放测试的文件夹。默认值为 tests。

? Where do you plan to keep your end-to-end tests? (tests)

基本 URL

添加测试将针对其运行的基本 URL。此偏好将默认为 https://127.0.0.1

? What is the base_url of your project? (https://127.0.0.1)

选择此偏好后,Nightwatch 设置将开始。它还会为您生成示例测试,以便您开始使用。

如果您从 Mac 运行,则 safaridriver 默认存在,但必须启用。您将看到以下选项。

? Enable safaridriver (requires sudo password)? (Use arrow keys)
 ❯Yes
  No, I'll do that later.

运行测试

设置完成后,可以使用以下命令运行测试

Firefox
npx nightwatch tests/specs/basic/ecosia.js --env selenium.firefox
Chrome
npx nightwatch tests/specs/basic/ecosia.js --env selenium.chrome
Safari
npx nightwatch tests/specs/basic/ecosia.js --env selenium.safari

输出应类似于以下内容


[Ecosia.org Demo] Test Suite
============================
ℹ Connected to localhost on port 4444 (2153ms).
  Using: firefox (94.0.1) on mac 20.6.0 platform.

✔ Running Demo test ecosia.org:

✔ Element <body> was visible after 24 milliseconds.
✔ Testing if the page title contains 'Ecosia' (10ms)
✔ Testing if element <input[type=search]> is visible (51ms)
✔ Testing if element <button[type=submit]> is visible (12ms)
✔ Testing if element <.mainline-results> contains text 'Nightwatch.js' (197ms)

OK. 5 assertions passed. (1.838s)
如果您需要更多帮助,可以加入我们的 Discord 服务器