mirror of
https://github.com/pa11y/pa11y-dashboard.git
synced 2025-09-24 22:31:15 +00:00
Build a basic framework for functional testing
This commit is contained in:
44
test/functional/helper/navigate.js
Normal file
44
test/functional/helper/navigate.js
Normal file
@@ -0,0 +1,44 @@
|
||||
'use strict';
|
||||
|
||||
var jsdom = require('jsdom');
|
||||
var request = require('request');
|
||||
|
||||
module.exports = createNavigator;
|
||||
|
||||
// Create a navigate function
|
||||
function createNavigator (baseUrl, store) {
|
||||
return function (opts, callback) {
|
||||
|
||||
store.body = null;
|
||||
store.dom = null;
|
||||
store.request = null;
|
||||
store.response = null;
|
||||
store.status = null;
|
||||
store.window = null;
|
||||
|
||||
request({
|
||||
url: baseUrl + opts.endpoint,
|
||||
method: opts.method || 'GET',
|
||||
body: opts.body,
|
||||
json: true,
|
||||
qs: opts.query
|
||||
}, function (err, res, body) {
|
||||
|
||||
store.body = body;
|
||||
store.request = res.request;
|
||||
store.response = res;
|
||||
store.status = res.statusCode;
|
||||
|
||||
jsdom.env(
|
||||
store.body,
|
||||
function (err, window) {
|
||||
store.window = window;
|
||||
store.dom = window.document;
|
||||
callback();
|
||||
}
|
||||
);
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
}
|
31
test/functional/index.js
Normal file
31
test/functional/index.js
Normal file
@@ -0,0 +1,31 @@
|
||||
/* global beforeEach, describe, it */
|
||||
/* jshint maxlen: 200, maxstatements: 20 */
|
||||
'use strict';
|
||||
|
||||
var assert = require('proclaim');
|
||||
|
||||
describe('GET /', function () {
|
||||
|
||||
describe('with no query', function () {
|
||||
|
||||
beforeEach(function (done) {
|
||||
var req = {
|
||||
method: 'GET',
|
||||
endpoint: '/'
|
||||
};
|
||||
this.navigate(req, done);
|
||||
});
|
||||
|
||||
it('should send a 200 status', function () {
|
||||
assert.strictEqual(this.last.status, 200);
|
||||
});
|
||||
|
||||
it('should have an "Add new URL" button', function () {
|
||||
var elem = this.last.dom.querySelectorAll('[data-test=add-task]');
|
||||
assert.strictEqual(elem.length, 1);
|
||||
assert.strictEqual(elem[0].getAttribute('href'), '/new');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
26
test/functional/setup.js
Normal file
26
test/functional/setup.js
Normal file
@@ -0,0 +1,26 @@
|
||||
/* global before */
|
||||
/* jshint maxlen: 200 */
|
||||
'use strict';
|
||||
|
||||
var config = require('../../config/test.json');
|
||||
var createNavigator = require('./helper/navigate');
|
||||
var request = require('request');
|
||||
|
||||
// Run before all tests
|
||||
before(function (done) {
|
||||
this.baseUrl = 'http://localhost:' + config.port;
|
||||
this.last = {};
|
||||
this.navigate = createNavigator(this.baseUrl, this.last);
|
||||
assertTestAppIsRunning(this.baseUrl, done);
|
||||
});
|
||||
|
||||
// Check that the test application is running, and exit if not
|
||||
function assertTestAppIsRunning (url, done) {
|
||||
request(url, function (err) {
|
||||
if (err) {
|
||||
console.error('Error: Test app not started; run with `grunt start-test`');
|
||||
process.exit(1);
|
||||
}
|
||||
done();
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user