我正在为网站前端开发一个Vue.js应用程序。
对于这个应用程序,我想使用单元和E2E测试。我使用vue-cli构建了我的项目。
根据我的理解,vue-cli使用Karma进行单元测试,使用Nightwatch + Selenium进行E2E测试。
我的.gitlab-ci.yml
如下所示:
stages:
- test
test:express:
image: node:boron
stage: test
script:
- cd backend/
- npm install --progress=false
- ./node_modules/.bin/jasmine
test:vue:
image: node:boron
stage: test
script:
- cd frontend/
- npm install --progress=false
- npm test
npm test
运行e2e和单元测试并在本地计算机上运行。单元测试运行平稳,Selenium启动Chrome窗口并使用E2E测试。
问题在于,不知道如何在GitLab CI上运行E2E Selenium测试。它一直给我一个错误说:
Could not connect to Selenium Server. Have you started the Selenium Server yet?
,虽然它之前说过两行,但它已经创建了一个Selenium服务器。
如何在GitLab CI上运行E2E Selenium测试?如果无法实现,我可以在GitLab CI上运行哪种E2E?
答案 0 :(得分:0)
您必须将Selenium自己带到管道中才能使用它。
为此,您应该使用仓库中的自述文件中所述的gitlab-selenium-server之类的东西。
另一种选择是使用this blog post中所述的GitLab CI服务。
希望这会对您有所帮助。
答案 1 :(得分:0)
CI脚本:
package.json:
test:e2e:headless:“ vue-cli-service test:e2e --config ./tests/e2e/main-test/nightwatch.conf.js --env chromeHeadless”
“依赖项”:{ “ chromedriver”:“ 2.46.0”, “硒服务器”:“ 3.9.0” }
nightwatch配置:
selenium: {
start_process: true,
server_path: require('selenium-server').path,
port: 4449,
cli_args: {
'webdriver.chrome.driver': require('chromedriver').path
}
},
test_settings: {
default: {
selenium_port: 4449,
selenium_host: 'localhost',
silent: true,
globals: {
devServerURL: 'http://localhost:' + config.devServer.port
}
},
chromeHeadless: {
desiredCapabilities: {
browserName: 'chromeHeadless',
javascriptEnabled: true,
acceptSslCerts: true,
chromeOptions: {
args: [
'headless',
'disable-gpu',
'no-sandbox'
]
}
}
}