From 7762ceaa7e2bb34f8758e17a4c8f512fa6a81b9e Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sun, 15 Jan 2017 18:24:09 -0800 Subject: Initial Vueification --- test/e2e/custom-assertions/elementCount.js | 26 +++++++++++++++++ test/e2e/nightwatch.conf.js | 46 ++++++++++++++++++++++++++++++ test/e2e/runner.js | 31 ++++++++++++++++++++ test/e2e/specs/test.js | 19 ++++++++++++ 4 files changed, 122 insertions(+) create mode 100644 test/e2e/custom-assertions/elementCount.js create mode 100644 test/e2e/nightwatch.conf.js create mode 100644 test/e2e/runner.js create mode 100644 test/e2e/specs/test.js (limited to 'test/e2e') diff --git a/test/e2e/custom-assertions/elementCount.js b/test/e2e/custom-assertions/elementCount.js new file mode 100644 index 00000000..c0d5fe00 --- /dev/null +++ b/test/e2e/custom-assertions/elementCount.js @@ -0,0 +1,26 @@ +// A custom Nightwatch assertion. +// the name of the method is the filename. +// can be used in tests like this: +// +// browser.assert.elementCount(selector, count) +// +// for how to write custom assertions see +// http://nightwatchjs.org/guide#writing-custom-assertions +exports.assertion = function (selector, count) { + this.message = 'Testing if element <' + selector + '> has count: ' + count + this.expected = count + this.pass = function (val) { + return val === this.expected + } + this.value = function (res) { + return res.value + } + this.command = function (cb) { + var self = this + return this.api.execute(function (selector) { + return document.querySelectorAll(selector).length + }, [selector], function (res) { + cb.call(self, res) + }) + } +} diff --git a/test/e2e/nightwatch.conf.js b/test/e2e/nightwatch.conf.js new file mode 100644 index 00000000..8fb4d9d2 --- /dev/null +++ b/test/e2e/nightwatch.conf.js @@ -0,0 +1,46 @@ +require('babel-register') +var config = require('../../config') + +// http://nightwatchjs.org/guide#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: 'node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.1.jar', + 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 + } + } + } +} diff --git a/test/e2e/runner.js b/test/e2e/runner.js new file mode 100644 index 00000000..2a5c6ef9 --- /dev/null +++ b/test/e2e/runner.js @@ -0,0 +1,31 @@ +// 1. start the dev server using production config +process.env.NODE_ENV = 'testing' +var server = require('../../build/dev-server.js') + +// 2. run the nightwatch test suite against it +// to run in additional browsers: +// 1. add an entry in test/e2e/nightwatch.conf.json under "test_settings" +// 2. add it to the --env flag below +// or override the environment flag, for example: `npm run e2e -- --env chrome,firefox` +// For more information on Nightwatch's config file, see +// http://nightwatchjs.org/guide#settings-file +var opts = process.argv.slice(2) +if (opts.indexOf('--config') === -1) { + opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js']) +} +if (opts.indexOf('--env') === -1) { + opts = opts.concat(['--env', 'chrome']) +} + +var spawn = require('cross-spawn') +var runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' }) + +runner.on('exit', function (code) { + server.close() + process.exit(code) +}) + +runner.on('error', function (err) { + server.close() + throw err +}) diff --git a/test/e2e/specs/test.js b/test/e2e/specs/test.js new file mode 100644 index 00000000..a7b1bd92 --- /dev/null +++ b/test/e2e/specs/test.js @@ -0,0 +1,19 @@ +// For authoring Nightwatch tests, see +// http://nightwatchjs.org/guide#usage + +module.exports = { + 'default e2e tests': function (browser) { + // automatically uses dev Server port from /config.index.js + // default: http://localhost:8080 + // see nightwatch.conf.js + const devServer = browser.globals.devServerURL + + browser + .url(devServer) + .waitForElementVisible('#app', 5000) + .assert.elementPresent('.hello') + .assert.containsText('h1', 'Welcome to Your Vue.js App') + .assert.elementCount('img', 1) + .end() + } +} -- cgit v1.2.3