First commit
This commit is contained in:
26
test/e2e/custom-assertions/elementCount.js
Normal file
26
test/e2e/custom-assertions/elementCount.js
Normal file
@ -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)
|
||||
})
|
||||
}
|
||||
}
|
41
test/e2e/nightwatch.conf.js
Normal file
41
test/e2e/nightwatch.conf.js
Normal file
@ -0,0 +1,41 @@
|
||||
// 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': require('selenium-server').path,
|
||||
'host': '127.0.0.1',
|
||||
'port': 4444,
|
||||
'cli_args': {
|
||||
'webdriver.chrome.driver': require('chromedriver').path,
|
||||
'webdriver.geckodriver.driver': require('chromedriver').path
|
||||
}
|
||||
},
|
||||
|
||||
'test_settings': {
|
||||
'default': {
|
||||
'selenium_port': 4444,
|
||||
'selenium_host': 'localhost',
|
||||
'silent': true
|
||||
},
|
||||
|
||||
'chrome': {
|
||||
'desiredCapabilities': {
|
||||
'browserName': 'chrome',
|
||||
'javascriptEnabled': true,
|
||||
'acceptSslCerts': true
|
||||
}
|
||||
},
|
||||
|
||||
'firefox': {
|
||||
'desiredCapabilities': {
|
||||
'browserName': 'firefox',
|
||||
'javascriptEnabled': true,
|
||||
'acceptSslCerts': true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
30
test/e2e/runner.js
Normal file
30
test/e2e/runner.js
Normal file
@ -0,0 +1,30 @@
|
||||
// 1. start the dev server
|
||||
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
|
||||
// For more information on Nightwatch's config file, see
|
||||
// http://nightwatchjs.org/guide#settings-file
|
||||
var spawn = require('cross-spawn')
|
||||
var runner = spawn(
|
||||
'./node_modules/.bin/nightwatch',
|
||||
[
|
||||
'--config', 'test/e2e/nightwatch.conf.js',
|
||||
'--env', 'chrome,firefox'
|
||||
],
|
||||
{
|
||||
stdio: 'inherit'
|
||||
}
|
||||
)
|
||||
|
||||
runner.on('exit', function (code) {
|
||||
server.close()
|
||||
process.exit(code)
|
||||
})
|
||||
|
||||
runner.on('error', function (err) {
|
||||
server.close()
|
||||
throw err
|
||||
})
|
14
test/e2e/specs/test.js
Normal file
14
test/e2e/specs/test.js
Normal file
@ -0,0 +1,14 @@
|
||||
// For authoring Nightwatch tests, see
|
||||
// http://nightwatchjs.org/guide#usage
|
||||
|
||||
module.exports = {
|
||||
'default e2e tests': function (browser) {
|
||||
browser
|
||||
.url('http://localhost:8080')
|
||||
.waitForElementVisible('#app', 5000)
|
||||
.assert.elementPresent('.logo')
|
||||
.assert.containsText('h1', 'DASHBOARD Overview of environment')
|
||||
.assert.elementCount('p', 4)
|
||||
.end()
|
||||
}
|
||||
}
|
9
test/unit/.eslintrc
Normal file
9
test/unit/.eslintrc
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"env": {
|
||||
"mocha": true
|
||||
},
|
||||
"globals": {
|
||||
"expect": true,
|
||||
"sinon": true
|
||||
}
|
||||
}
|
15
test/unit/index.js
Normal file
15
test/unit/index.js
Normal file
@ -0,0 +1,15 @@
|
||||
// Polyfill fn.bind() for PhantomJS
|
||||
/* eslint-disable no-extend-native */
|
||||
Function.prototype.bind = require('function-bind')
|
||||
|
||||
require('es6-promise').polyfill()
|
||||
|
||||
// require all test files (files that ends with .spec.js)
|
||||
var testsContext = require.context('./specs', true, /\.spec$/)
|
||||
testsContext.keys().forEach(testsContext)
|
||||
|
||||
// require all src files except main.js for coverage.
|
||||
// you can also change this to match only the subset of files that
|
||||
// you want coverage for.
|
||||
var srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)/)
|
||||
srcContext.keys().forEach(srcContext)
|
34
test/unit/karma.conf.js
Normal file
34
test/unit/karma.conf.js
Normal file
@ -0,0 +1,34 @@
|
||||
// This is a karma config file. For more details see
|
||||
// http://karma-runner.github.io/0.13/config/configuration-file.html
|
||||
// we are also using it with karma-webpack
|
||||
// https://github.com/webpack/karma-webpack
|
||||
|
||||
var webpackConfig = require('../../build/webpack.test.conf')
|
||||
|
||||
module.exports = function (config) {
|
||||
config.set({
|
||||
// to run in additional browsers:
|
||||
// 1. install corresponding karma launcher
|
||||
// http://karma-runner.github.io/0.13/config/browsers.html
|
||||
// 2. add it to the `browsers` array below.
|
||||
logLevel: config.LOG_INFO,
|
||||
browsers: ['PhantomJS'],
|
||||
frameworks: ['mocha', 'sinon-chai'],
|
||||
reporters: ['spec', 'coverage'],
|
||||
files: ['./index.js'],
|
||||
preprocessors: {
|
||||
'./index.js': ['webpack', 'sourcemap']
|
||||
},
|
||||
webpack: webpackConfig,
|
||||
webpackMiddleware: {
|
||||
noInfo: true
|
||||
},
|
||||
coverageReporter: {
|
||||
dir: './coverage',
|
||||
reporters: [
|
||||
{ type: 'lcov', subdir: '.' },
|
||||
{ type: 'text-summary' }
|
||||
]
|
||||
}
|
||||
})
|
||||
}
|
11
test/unit/specs/404.spec.js
Normal file
11
test/unit/specs/404.spec.js
Normal file
@ -0,0 +1,11 @@
|
||||
import Vue from 'vue'
|
||||
import c404 from '@/components/404.vue'
|
||||
|
||||
describe('404.vue', () => {
|
||||
it('should render correct contents', () => {
|
||||
const Constructor = Vue.extend(c404)
|
||||
const vm = new Constructor().$mount()
|
||||
expect(vm.$el.querySelector('h1').textContent)
|
||||
.to.equal('You are lost.')
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user