axe-core
Version:
Accessibility engine for automated Web UI testing
136 lines (112 loc) • 5.07 kB
JavaScript
describe('page-has-*', function () {
'use strict';
var fixture = document.getElementById('fixture');
var checkContext = new axe.testUtils.MockCheckContext();
var checkSetup = axe.testUtils.checkSetup;
var shadowSupported = axe.testUtils.shadowSupport.v1;
var shadowCheckSetup = axe.testUtils.shadowCheckSetup;
afterEach(function () {
fixture.innerHTML = '';
checkContext.reset();
axe._tree = undefined;
});
describe('evaluate', function () {
var evaluate = checks['page-has-main'].evaluate;
it('throws if there is no selector', function () {
assert.throws(function () {
var params = checkSetup('<div id="target">No role</div>', undefined);
evaluate.apply(checkContext, params);
});
assert.throws(function () {
var params = checkSetup('<div id="target">No role</div>', {});
evaluate.apply(checkContext, params);
});
assert.throws(function () {
var badOptions = { selector: [] };
var params = checkSetup('<div id="target">No role</div>', badOptions);
evaluate.apply(checkContext, params);
});
});
it('returns true if there are any matching elements', function () {
var options = { selector: 'b' };
var params = checkSetup('<div id="target"><b>No role</b></div>', options);
assert.isTrue(evaluate.apply(checkContext, params));
});
it('returns false if there are no matching elements', function () {
var options = { selector: 'i' };
var params = checkSetup('<div id="target"><b>No role</b></div>', options);
assert.isFalse(evaluate.apply(checkContext, params));
});
});
describe('after', function () {
var after = checks['page-has-main'].after;
it('sets all results to true if any are true', function () {
var results = [{ result: true }, { result: false }, { result: undefined }];
assert.deepEqual(after(results),
[{ result: true }, { result: true }, { result: true }]
);
});
it('Leave the results as is if none of them were true', function () {
var results = [{ result: false }, { result: false }, { result: undefined }];
assert.equal(after(results), results);
});
});
describe('page-has-main', function () {
var check = checks['page-has-main'];
it('should return false if no div has role property', function() {
var params = checkSetup('<div id="target">No role</div>', check.options);
var mainIsFound = check.evaluate.apply(checkContext, params);
assert.isFalse(mainIsFound);
});
it('should return false if div has role not equal to main', function() {
var params = checkSetup('<div id="target" role="bananas">Wrong role</div>', check.options);
var mainIsFound = check.evaluate.apply(checkContext, params);
assert.isFalse(mainIsFound);
});
it('should return true if main landmark exists', function(){
var params = checkSetup('<main id="target">main landmark</main>', check.options);
var mainIsFound = check.evaluate.apply(checkContext, params);
assert.isTrue(mainIsFound);
});
it('should return true if one div has role equal to main', function() {
var params = checkSetup('<div id="target" role="main">Div with role main</div>', check.options);
var mainIsFound = check.evaluate.apply(checkContext, params);
assert.isTrue(mainIsFound);
});
(shadowSupported ? it : xit)
('should return true if main is inside of shadow dom', function() {
var params = shadowCheckSetup('<div id="target"></div>', '<main>main landmark</main>', check.options);
var mainIsFound = check.evaluate.apply(checkContext, params);
assert.isTrue(mainIsFound);
});
});
describe('page-has-heading-one', function () {
var check = checks['page-has-heading-one'];
it('should return false if div has role not equal to heading', function() {
var params = checkSetup('<div id="target" role="bananas">Wrong role</div>', check.options);
var h1IsFound = check.evaluate.apply(checkContext, params);
assert.isFalse(h1IsFound);
});
it('should return false if div has role heading but not aria-level=1', function() {
var params = checkSetup('<div id="target" role="heading" aria-level="one">Wrong role</div>', check.options);
var h1IsFound = check.evaluate.apply(checkContext, params);
assert.isFalse(h1IsFound);
});
it('should return true if h1 exists', function(){
var params = checkSetup('<h1 id="target">My heading</h1>', check.options);
var h1IsFound = check.evaluate.apply(checkContext, params);
assert.isTrue(h1IsFound);
});
it('should return true if a div has role=heading and aria-level=1', function() {
var params = checkSetup('<div id="target" role="heading" aria-level="1">Diversity heading</div>', check.options);
var h1IsFound = check.evaluate.apply(checkContext, params);
assert.isTrue(h1IsFound);
});
(shadowSupported ? it : xit)
('should return true if h1 is inside of shadow dom', function() {
var params = shadowCheckSetup('<div id="target"></div>', '<h1>Shady Heading</h1>', check.options);
var h1IsFound = check.evaluate.apply(checkContext, params);
assert.isTrue(h1IsFound);
});
});
});