⚠️ Vue CLI 处于维护模式!

对于新项目,现在建议使用 create-vue 来搭建基于 Vite 的项目。同时参考 Vue 3 工具指南 获取最新建议。

@vue/cli-plugin-e2e-nightwatch

vue-cli 的 e2e-nightwatch 插件

注入的命令

  • vue-cli-service test:e2e

    使用 Nightwatch.js 运行端到端测试。

    选项

    --url                 run the tests against given url instead of auto-starting dev server
    --config              use custom nightwatch config file (overrides internals)
    --headless            use chrome or firefox in headless mode
    --parallel            enable parallel mode via test workers (only available in chromedriver)
    --use-selenium        use Selenium standalone server instead of chromedriver or geckodriver
    -e, --env             specify comma-delimited browser envs to run in (default: chrome)
    -t, --test            specify a test to run by name
    -f, --filter          glob to filter tests by filename
    

    此外,所有 Nightwatch CLI 选项 也受支持。例如:--verbose--retries 等。

项目结构

安装此插件后将生成以下结构。其中包含 Nightwatch 中大多数测试概念的示例。

tests/e2e/
  ├── custom-assertions/
  |   └── elementCount.js
  ├── custom-commands/
  |   ├── customExecute.js
  |   ├── openHomepage.js
  |   └── openHomepageClass.js
  ├── page-objects/
  |   └── homepage.js
  ├── specs/
  |   ├── test.js
  |   └── test-with-pageobjects.js
  └── globals.js

specs

测试文件的主要存放位置。可以包含子文件夹,这些子文件夹可以在运行时使用 --group 参数进行定位。 更多信息

custom-assertions

此处的文件会由 Nightwatch 自动加载,并放置到 .assert.verify api 命名空间中,以扩展 Nightwatch 内置断言。有关详细信息,请参阅 编写自定义断言

custom-commands

此处的文件会由 Nightwatch 自动加载,并放置到主 browser api 对象中,以扩展内置的 Nightwatch 命令。有关详细信息,请参阅 编写自定义命令

page objects

使用页面对象是端到端 UI 测试中的一种流行方法。放置在此文件夹中的文件会自动加载到 .page api 命名空间中,文件名即为页面对象的名称。有关详细信息,请参阅 使用页面对象 部分。

globals.js

外部全局文件,可以包含全局属性或钩子。请参阅 测试全局 部分。

在已创建的项目中安装

vue add e2e-nightwatch

配置

我们已预先配置 Nightwatch 以默认使用 Chrome 运行。Firefox 也可通过 --env firefox 使用。如果您希望在其他浏览器(例如 Safari、Microsoft Edge)中运行端到端测试,则需要在项目根目录中添加一个 nightwatch.conf.jsnightwatch.json 来配置其他浏览器。该配置将合并到 内部 Nightwatch 配置 中。

或者,您可以使用 --config 选项完全替换内部配置为自定义配置文件。

请参阅 Nightwatch 文档了解 配置选项 以及如何 设置浏览器驱动程序

运行测试

默认情况下,specs 文件夹中的所有测试都将使用 Chrome 运行。如果您希望在无头模式下针对 Chrome(或 Firefox)运行端到端测试,只需传递 --headless 参数即可。

$ vue-cli-service test:e2e

运行单个测试

要运行单个测试,请提供文件名路径。例如:

$ vue-cli-service test:e2e tests/e2e/specs/test.js

跳过开发服务器自动启动

如果开发服务器已在运行,并且您希望跳过自动启动它,请传递 --url 参数

$ vue-cli-service test:e2e --url https://127.0.0.1:8080/

在 Firefox 中运行

默认情况下也支持在 Firefox 中运行测试。只需运行以下命令(可以选择添加 --headless 以在无头模式下运行 Firefox)

$ vue-cli-service test:e2e --env firefox [--headless]

在 Firefox 和 Chrome 中同时运行

您还可以通过提供用逗号 (",") 分隔的两个测试环境(无空格)来同时在两个浏览器中运行测试。

$ vue-cli-service test:e2e --env firefox,chrome [--headless]

并行运行测试

为了显著加快测试运行速度,您可以在存在多个测试套件时启用并行测试运行。并发是在文件级别执行的,并根据可用的 CPU 内核自动分配。

目前,这仅在 Chromedriver 中可用。在 Nightwatch 文档中了解有关 并行运行 的更多信息。

$ vue-cli-service test:e2e --parallel

使用 Selenium 运行

v4 开始,Selenium 独立服务器不再包含在此插件中,并且在大多数情况下,由于 Nightwatch v1.0,使用 Selenium 运行不再是必需的。

仍然可以使用 Selenium 服务器,请按照以下步骤操作

1. 安装 selenium-server NPM 包

$ npm install selenium-server --save-dev

2. 使用 --use-selenium cli 参数运行

$ vue-cli-service test:e2e --use-selenium