概述

环境位于配置文件中的 "test_settings" 字典下。始终需要一个 default 环境,其他环境将继承该环境的设置。您可以根据需要覆盖每个环境的任何测试设置。

在本指南中,我们将创建一个名为 "chrome-local" 的新测试环境,我们将使用它来针对 Google Chrome 浏览器运行测试。

创建一个新的测试项目

首先,让我们创建一个新的空项目并在其中安装 Nightwatch

mkdir ./test-project && cd ./test-project

从 NPM 安装 nightwatchchromedriverchromedriver 是用于在 Google Chrome 浏览器中运行测试的 W3C WebDriver 实现)

npm i nightwatch chromedriver

创建一个名为 nightwatch.conf.js 的空文件

nano nightwatch.conf.js

并将以下内容粘贴到其中

nightwatch.conf.js
module.exports = {
  src_folders: ['tests'],
  
test_settings: { default: { launch_url: 'https://home.cern', webdriver: { start_process: true, server_path: '' } } } }

使用 --env cli 参数引用测试环境。由于我们只定义了一个 default 环境,因此尝试引用 chrome-local 环境会导致错误

npx nightwatch --env chrome-local
~/workspace/test-project % npx nightwatch --env chrome-local
 
┌──────────────────────────────────────────────────────────────────┐
│                                                                  │
│    Error: Invalid testing environment specified: chrome-local.   │
│                                                                  │
│     Available environments are:                                  │
│     [ 'default' ]                                                │
│                                                                  │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘

定义一个新的 "chrome-local" 环境

现在,再次打开 nightwatch.conf.js 文件,并在 default 对象下方添加 chrome-local 对象

nightwatch.conf.js
module.exports = {
  src_folders: ['tests'],
  
test_settings: { default: { launch_url: 'https://home.cern', webdriver: { start_process: true, server_path: '' } }, 'chrome-local': { desiredCapabilities: { browserName: 'chrome' } } } }

针对 "chrome-local" 环境运行示例测试

然后在 tests 文件夹中添加一个示例测试

mkdir tests && nano ./tests/sample-nightwatch-test.js
tests/sample-nightwatch-test.js
describe('sample nightwatch test', function() {
  it('opens the browser and checks for input', function(browser) {
    browser
      .init()
      .assert.titleEquals('Home | CERN')
      .end();
  });
})

运行示例并传递 --env chrome-local 参数

npx nightwatch --env chrome-local

输出将类似于以下内容

[sample nightwatch test] Test Suite
──────────────────────────────────────────────────────────────────────
ℹ Connected to ChromeDriver on port 9515 (844ms).
  Using: chrome (101.0.4951.64) on MAC OS X.


  Running opens the browser and checks for input:
────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  ℹ Loaded url https://home.cern in 5531ms
  ✔ Testing if the page title equals 'Home | CERN' (6ms)

OK. 1 assertions passed. (5.604s)