diff --git a/packages/@vue/cli-plugin-e2e-webdriverio/README.md b/packages/@vue/cli-plugin-e2e-webdriverio/README.md index bf98a7ad22..93d4743e1f 100644 --- a/packages/@vue/cli-plugin-e2e-webdriverio/README.md +++ b/packages/@vue/cli-plugin-e2e-webdriverio/README.md @@ -51,9 +51,11 @@ Your e2e tests. ## Installing in an Already Created Project ``` sh -vue add e2e-nightwatch +vue add e2e-webdriverio ``` +For users with older CLI versions you may need to run `vue add @vue/e2e-webdriverio`. + ## Running Tests By default, all tests inside the `specs` folder will be run using Chrome. If you'd like to run end-to-end tests against Chrome (or Firefox) in headless mode, simply pass the `--headless` argument. Tests will be automatically run in parallel when executed in the cloud. diff --git a/packages/@vue/cli-plugin-e2e-webdriverio/generator/index.js b/packages/@vue/cli-plugin-e2e-webdriverio/generator/index.js index b6978919c1..3ead67a59b 100644 --- a/packages/@vue/cli-plugin-e2e-webdriverio/generator/index.js +++ b/packages/@vue/cli-plugin-e2e-webdriverio/generator/index.js @@ -1,12 +1,33 @@ -module.exports = api => { +const { installedBrowsers } = require('@vue/cli-shared-utils') + +module.exports = (api, { webdrivers }) => { api.render('./template', { hasTS: api.hasPlugin('typescript'), hasESLint: api.hasPlugin('eslint') }) + const devDependencies = {} + + // Use devDependencies to store latest version number so as to automate update + const pluginDeps = require('../package.json').devDependencies + + if (webdrivers && webdrivers.includes('firefox')) { + devDependencies.geckodriver = pluginDeps.geckodriver + } + if (webdrivers && webdrivers.includes('chrome')) { + // chromedriver major version bumps every 6 weeks following Chrome + // so there may be a mismatch between + // user's installed browser version and the default provided version + // fallback to the devDependencies version in case detection fails + devDependencies.chromedriver = installedBrowsers.chrome + ? installedBrowsers.chrome.match(/^(\d+)\./)[1] + : pluginDeps.chromedriver + } + api.extendPackage({ scripts: { 'test:e2e': 'vue-cli-service test:e2e' - } + }, + devDependencies }) } diff --git a/packages/@vue/cli-plugin-e2e-webdriverio/package.json b/packages/@vue/cli-plugin-e2e-webdriverio/package.json index 95eab5150b..4b219d6738 100644 --- a/packages/@vue/cli-plugin-e2e-webdriverio/package.json +++ b/packages/@vue/cli-plugin-e2e-webdriverio/package.json @@ -32,10 +32,12 @@ "@wdio/sauce-service": "^6.1.9", "@wdio/spec-reporter": "^6.1.9", "@wdio/sync": "^6.1.8", - "chromedriver": "^81.0.0", "eslint-plugin-wdio": "^6.0.12", "webdriverio": "^6.1.11", "wdio-chromedriver-service": "^6.0.3" }, + "peerDependencies": { + "chromedriver": "*" + }, "devDependencies": {} } diff --git a/packages/@vue/cli-shared-utils/lib/pluginResolution.js b/packages/@vue/cli-shared-utils/lib/pluginResolution.js index 43576f0463..e8777d04a6 100644 --- a/packages/@vue/cli-shared-utils/lib/pluginResolution.js +++ b/packages/@vue/cli-shared-utils/lib/pluginResolution.js @@ -6,6 +6,7 @@ const officialPlugins = [ 'babel', 'e2e-cypress', 'e2e-nightwatch', + 'e2e-webdriverio', 'eslint', 'pwa', 'router',