7bed453de3
This introduces ember-a11y-testing to acceptance tests via a helper wrapper that allows us to globally ignore rules that we can address separately. It also adds fixes for the aXe rules that were failing.
86 lines
2.8 KiB
JavaScript
86 lines
2.8 KiB
JavaScript
import { currentURL, visit } from '@ember/test-helpers';
|
|
import { module, test } from 'qunit';
|
|
import { setupApplicationTest } from 'ember-qunit';
|
|
import { setupMirage } from 'ember-cli-mirage/test-support';
|
|
import a11yAudit from 'nomad-ui/tests/helpers/a11y-audit';
|
|
import ClientsList from 'nomad-ui/tests/pages/clients/list';
|
|
import JobsList from 'nomad-ui/tests/pages/jobs/list';
|
|
import Job from 'nomad-ui/tests/pages/jobs/detail';
|
|
|
|
module('Acceptance | application errors ', function(hooks) {
|
|
setupApplicationTest(hooks);
|
|
setupMirage(hooks);
|
|
|
|
hooks.beforeEach(function() {
|
|
server.create('agent');
|
|
server.create('node');
|
|
server.create('job');
|
|
});
|
|
|
|
test('it passes an accessibility audit', async function(assert) {
|
|
server.pretender.get('/v1/nodes', () => [500, {}, null]);
|
|
await ClientsList.visit();
|
|
await a11yAudit();
|
|
|
|
assert.ok(true, 'a11y audit passes');
|
|
});
|
|
|
|
test('transitioning away from an error page resets the global error', async function(assert) {
|
|
server.pretender.get('/v1/nodes', () => [500, {}, null]);
|
|
|
|
await ClientsList.visit();
|
|
assert.ok(ClientsList.error.isPresent, 'Application has errored');
|
|
|
|
await JobsList.visit();
|
|
assert.notOk(JobsList.error.isPresent, 'Application is no longer in an error state');
|
|
});
|
|
|
|
test('the 403 error page links to the ACL tokens page', async function(assert) {
|
|
const job = server.db.jobs[0];
|
|
|
|
server.pretender.get(`/v1/job/${job.id}`, () => [403, {}, null]);
|
|
|
|
await Job.visit({ id: job.id });
|
|
|
|
assert.ok(Job.error.isPresent, 'Error message is shown');
|
|
assert.equal(Job.error.title, 'Not Authorized', 'Error message is for 403');
|
|
|
|
await Job.error.seekHelp();
|
|
assert.equal(
|
|
currentURL(),
|
|
'/settings/tokens',
|
|
'Error message contains a link to the tokens page'
|
|
);
|
|
});
|
|
|
|
test('the no leader error state gets its own error message', async function(assert) {
|
|
server.pretender.get('/v1/jobs', () => [500, {}, 'No cluster leader']);
|
|
|
|
await JobsList.visit();
|
|
|
|
assert.ok(JobsList.error.isPresent, 'An error is shown');
|
|
assert.equal(
|
|
JobsList.error.title,
|
|
'No Cluster Leader',
|
|
'The error is specifically for the lack of a cluster leader'
|
|
);
|
|
});
|
|
|
|
test('error pages include links to the jobs and clients pages', async function(assert) {
|
|
await visit('/a/non-existent/page');
|
|
|
|
assert.ok(JobsList.error.isPresent, 'An error is shown');
|
|
|
|
await JobsList.error.gotoJobs();
|
|
assert.equal(currentURL(), '/jobs', 'Now on the jobs page');
|
|
assert.notOk(JobsList.error.isPresent, 'The error is gone now');
|
|
|
|
await visit('/a/non-existent/page');
|
|
assert.ok(JobsList.error.isPresent, 'An error is shown');
|
|
|
|
await JobsList.error.gotoClients();
|
|
assert.equal(currentURL(), '/clients', 'Now on the clients page');
|
|
assert.notOk(JobsList.error.isPresent, 'The error is gone now');
|
|
});
|
|
});
|