diff --git a/packages/@vue/cli-plugin-e2e-nightwatch/__tests__/nightwatchPlugin.spec.js b/packages/@vue/cli-plugin-e2e-nightwatch/__tests__/nightwatchPlugin.spec.js index 5d4f336805..23be9c826b 100644 --- a/packages/@vue/cli-plugin-e2e-nightwatch/__tests__/nightwatchPlugin.spec.js +++ b/packages/@vue/cli-plugin-e2e-nightwatch/__tests__/nightwatchPlugin.spec.js @@ -3,6 +3,7 @@ jest.setTimeout(process.env.APPVEYOR ? 300000 : 120000) const fs = require('fs-extra') const path = require('path') const create = require('@vue/cli-test-utils/createTestProject') +const createServer = require('@vue/cli-test-utils/createServer') describe('nightwatch e2e plugin', () => { let project @@ -34,6 +35,26 @@ describe('nightwatch e2e plugin', () => { ]) }) + test('should accept the --url cli option', async () => { + await project.run(`vue-cli-service build`) + const server = createServer({ root: path.join(project.dir, 'dist') }) + await new Promise((resolve, reject) => { + server.listen(8080, err => { + if (err) return reject(err) + resolve() + }) + }) + await project.run(`vue-cli-service test:e2e --headless --url http://127.0.0.1:8080/`) + server.close() + + let results = await project.read('test_results.json') + results = JSON.parse(results) + expect(Object.keys(results.modules)).toEqual([ + 'test-with-pageobjects', + 'test' + ]) + }) + test('should run single test with custom nightwatch.json', async () => { await project.run(`vue-cli-service test:e2e --headless -t tests/e2e/specs/test.js`) let results = await project.read('test_results.json') diff --git a/packages/@vue/cli-plugin-e2e-nightwatch/index.js b/packages/@vue/cli-plugin-e2e-nightwatch/index.js index c06a7a0f3b..3f1c42e120 100644 --- a/packages/@vue/cli-plugin-e2e-nightwatch/index.js +++ b/packages/@vue/cli-plugin-e2e-nightwatch/index.js @@ -41,8 +41,10 @@ module.exports = (api, options) => { } } - const argsToRemove = ['url', 'mode', 'headless', 'use-selenium', 'parallel'] - argsToRemove.forEach((toRemove) => removeArg(rawArgs, toRemove)) + // remove args + ;['url', 'mode'].forEach(toRemove => removeArg(rawArgs, toRemove)) + // remove flags + ;['headless', 'use-selenium', 'parallel'].forEach(toRemove => removeArg(rawArgs, toRemove, 0)) return Promise.all([ startDevServer(args, api), @@ -169,11 +171,10 @@ function checkPath (source) { } function removeArg (rawArgs, argToRemove, offset = 1) { - const matchRE = new RegExp(`^--${argToRemove}$`) + const matchRE = new RegExp(`^--${argToRemove}`) const equalRE = new RegExp(`^--${argToRemove}=`) - - const index = rawArgs.findIndex(arg => matchRE.test(arg)) - if (index > -1) { - rawArgs.splice(index, offset + (equalRE.test(rawArgs[index]) ? 1 : 0)) + const i = rawArgs.findIndex(arg => matchRE.test(arg)) + if (i > -1) { + rawArgs.splice(i, offset + (equalRE.test(rawArgs[i]) ? 0 : 1)) } }