Skip to content

Commit 5e819b5

Browse files
authored
fix: fix nightwatch cli option (--url) handling (#4627)
fixes #4619
1 parent a42f838 commit 5e819b5

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

packages/@vue/cli-plugin-e2e-nightwatch/__tests__/nightwatchPlugin.spec.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ jest.setTimeout(process.env.APPVEYOR ? 300000 : 120000)
33
const fs = require('fs-extra')
44
const path = require('path')
55
const create = require('@vue/cli-test-utils/createTestProject')
6+
const createServer = require('@vue/cli-test-utils/createServer')
67

78
describe('nightwatch e2e plugin', () => {
89
let project
@@ -34,6 +35,26 @@ describe('nightwatch e2e plugin', () => {
3435
])
3536
})
3637

38+
test('should accept the --url cli option', async () => {
39+
await project.run(`vue-cli-service build`)
40+
const server = createServer({ root: path.join(project.dir, 'dist') })
41+
await new Promise((resolve, reject) => {
42+
server.listen(8080, err => {
43+
if (err) return reject(err)
44+
resolve()
45+
})
46+
})
47+
await project.run(`vue-cli-service test:e2e --headless --url http://127.0.0.1:8080/`)
48+
server.close()
49+
50+
let results = await project.read('test_results.json')
51+
results = JSON.parse(results)
52+
expect(Object.keys(results.modules)).toEqual([
53+
'test-with-pageobjects',
54+
'test'
55+
])
56+
})
57+
3758
test('should run single test with custom nightwatch.json', async () => {
3859
await project.run(`vue-cli-service test:e2e --headless -t tests/e2e/specs/test.js`)
3960
let results = await project.read('test_results.json')

packages/@vue/cli-plugin-e2e-nightwatch/index.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ module.exports = (api, options) => {
4141
}
4242
}
4343

44-
const argsToRemove = ['url', 'mode', 'headless', 'use-selenium', 'parallel']
45-
argsToRemove.forEach((toRemove) => removeArg(rawArgs, toRemove))
44+
// remove args
45+
;['url', 'mode'].forEach(toRemove => removeArg(rawArgs, toRemove))
46+
// remove flags
47+
;['headless', 'use-selenium', 'parallel'].forEach(toRemove => removeArg(rawArgs, toRemove, 0))
4648

4749
return Promise.all([
4850
startDevServer(args, api),
@@ -169,11 +171,10 @@ function checkPath (source) {
169171
}
170172

171173
function removeArg (rawArgs, argToRemove, offset = 1) {
172-
const matchRE = new RegExp(`^--${argToRemove}$`)
174+
const matchRE = new RegExp(`^--${argToRemove}`)
173175
const equalRE = new RegExp(`^--${argToRemove}=`)
174-
175-
const index = rawArgs.findIndex(arg => matchRE.test(arg))
176-
if (index > -1) {
177-
rawArgs.splice(index, offset + (equalRE.test(rawArgs[index]) ? 1 : 0))
176+
const i = rawArgs.findIndex(arg => matchRE.test(arg))
177+
if (i > -1) {
178+
rawArgs.splice(i, offset + (equalRE.test(rawArgs[i]) ? 0 : 1))
178179
}
179180
}

0 commit comments

Comments
 (0)