【发布时间】:2018-05-22 07:55:03
【问题描述】:
我使用 vue-cli 生成了一个 VueJS 项目,包括使用 Nightswatch.js 进行端到端测试。
我正在使用以下 .gitlab-ci.yml 文件
services:
- selenium/standalone-chrome
stages:
- test
- pages
test:
image: node:6.11
stage: test
before_script:
- node -v
- npm -v
script:
- npm install
- npm test
pages:
image: node:6.11
stage: pages
before_script:
- node -v
- npm -v
script:
- npm install
- npm run build
- cp -R ./dist ./public
- cd ./public
- ls
artifacts:
paths:
- public
only:
- master
这是nightswatch.conf.js 文件
require('babel-register')
var config = require('../../config')
// http://nightwatchjs.org/gettingstarted#settings-file
module.exports = {
src_folders: ['test/e2e/specs'],
output_folder: 'test/e2e/reports',
custom_assertions_path: ['test/e2e/custom-assertions'],
selenium: {
start_process: true,
server_path: require('selenium-server').path,
host: '127.0.0.1',
port: 4444,
cli_args: {
'webdriver.chrome.driver': require('chromedriver').path
}
},
test_settings: {
default: {
selenium_port: 4444,
selenium_host: 'localhost',
silent: true,
globals: {
devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
}
},
chrome: {
desiredCapabilities: {
browserName: 'chrome',
javascriptEnabled: true,
acceptSslCerts: true
}
},
firefox: {
desiredCapabilities: {
browserName: 'firefox',
javascriptEnabled: true,
acceptSslCerts: true
}
}
}
}
在 Gitlab-CI 中,作业通过了,但查看日志仅通过了单元测试,而不是端到端测试。
> node test/e2e/runner.js
Starting selenium server...
An error occurred while trying to start Selenium. Check if JAVA is installed on your machine.
{ Error: spawn java ENOENT
at exports._errnoException (util.js:1020:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:197:32)
at onErrorNT (internal/child_process.js:376:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
at Module.runMain (module.js:606:11)
at run (bootstrap_node.js:383:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:496:3
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn java',
path: 'java',
spawnargs:
[ '-Dwebdriver.chrome.driver=/builds/Overdrivr/frontend/node_modules/chromedriver/lib/chromedriver/chromedriver',
'-jar',
'/builds/Overdrivr/frontend/node_modules/selenium-server/lib/runner/selenium-server-standalone-3.8.1.jar',
'-port',
4444 ] }
INFO Selenium process finished.
Job succeeded
如何正确配置 gitlab-ci 或 nightswatch 以在 Gitlab-CI 中运行 e2e 测试?
【问题讨论】:
-
运行这些测试的机器需要安装 JAVA。 Selenium 没有它就无法运行。
-
所以您认为只需在 selenium/standalone-chrome Docker 映像之上添加 java 就可以解决问题吗?还是我需要在这里做一些更详细的事情
-
不知何故我错过了您为此使用 Docker。该图像应该已经安装了 Java。现在我真的很困惑出了什么问题。我会确保您使用的 Gitlab 运行器具有 Java 功能。您正在使用的 docker 映像已经安装了 Java,所以不可能是这样。
-
似乎没有安装Java,我在CI脚本中添加了一个显示Java版本的命令,它返回
$ java -v /bin/bash: line 63: java: command not found -
遗憾的是我还没有解决它,@tehbeardedone 的回答帮助我取得了进展,但不足以让测试运行。我会尝试一些想法,我会及时通知你
标签: vue.js vuejs2 gitlab-ci nightwatch.js