Skip to content

Commit

Permalink
feat(has-descendant, page-no-duplicate): move page-has-elm and page-n…
Browse files Browse the repository at this point in the history
…o-duplicate to generic check (#2229)
  • Loading branch information
straker committed May 13, 2020
1 parent da12da7 commit 59125a0
Show file tree
Hide file tree
Showing 12 changed files with 36 additions and 48 deletions.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { querySelectorAllFilter } from '../../core/utils';
import { isVisible } from '../../commons/dom';

function pageHasElmEvaluate(node, options, virtualNode) {
function hasDescendant(node, options, virtualNode) {
if (!options || !options.selector || typeof options.selector !== 'string') {
throw new TypeError(
'visible-in-page requires options.selector to be a string'
'has-descendant requires options.selector to be a string'
);
}

Expand All @@ -17,4 +17,4 @@ function pageHasElmEvaluate(node, options, virtualNode) {
return matchingElms.length > 0;
}

export default pageHasElmEvaluate;
export default hasDescendant;
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { isVisible, findUpVirtual } from '../../commons/dom';
function pageNoDuplicateEvaluate(node, options, virtualNode) {
if (!options || !options.selector || typeof options.selector !== 'string') {
throw new TypeError(
'visible-in-page requires options.selector to be a string'
'page-no-duplicate requires options.selector to be a string'
);
}

Expand Down
6 changes: 3 additions & 3 deletions lib/checks/keyboard/page-has-heading-one.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"id": "page-has-heading-one",
"evaluate": "page-has-elm-evaluate",
"after": "page-has-elm-after",
"evaluate": "has-descendant-evaluate",
"after": "has-descendant-after",
"options": {
"selector": "h1:not([role]), [role=\"heading\"][aria-level=\"1\"]"
"selector": "h1:not([role]), [role=heading][aria-level=1]"
},
"metadata": {
"impact": "moderate",
Expand Down
4 changes: 2 additions & 2 deletions lib/checks/keyboard/page-has-main.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "page-has-main",
"evaluate": "page-has-elm-evaluate",
"after": "page-has-elm-after",
"evaluate": "has-descendant-evaluate",
"after": "has-descendant-after",
"options": {
"selector": "main:not([role]), [role='main']"
},
Expand Down
10 changes: 0 additions & 10 deletions lib/checks/navigation/header-present-evaluate.js

This file was deleted.

7 changes: 5 additions & 2 deletions lib/checks/navigation/header-present.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
{
"id": "header-present",
"evaluate": "header-present-evaluate",
"evaluate": "has-descendant-evaluate",
"options": {
"selector": "h1, h2, h3, h4, h5, h6, [role=heading]"
},
"metadata": {
"impact": "serious",
"messages": {
"pass": "Page has a heading",
"fail": "Page does not have a heading"
}
}
}
}
7 changes: 0 additions & 7 deletions lib/checks/navigation/landmark-evaluate.js

This file was deleted.

7 changes: 5 additions & 2 deletions lib/checks/navigation/landmark.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
{
"id": "landmark",
"evaluate": "landmark-evaluate",
"evaluate": "has-descendant-evaluate",
"options": {
"selector": "main, [role=main]"
},
"metadata": {
"impact": "serious",
"messages": {
"pass": "Page has a landmark region",
"fail": "Page does not have a landmark region"
}
}
}
}
20 changes: 8 additions & 12 deletions lib/core/base/metadata-function-map.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,17 @@ import autocompleteValidEvaluate from '../../checks/forms/autocomplete-valid-eva

// generic
import attrNonSpaceContentEvaluate from '../../checks/generic/attr-non-space-content-evaluate';
import hasDescendantAfter from '../../checks/generic/has-descendant-after';
import hasDescendantEvaluate from '../../checks/generic/has-descendant-evaluate';
import pageNoDuplicateAfter from '../../checks/generic/page-no-duplicate-after';
import pageNoDuplicateEvaluate from '../../checks/generic/page-no-duplicate-evaluate';

// navigation
import headerPresentEvaluate from '../../checks/navigation/header-present-evaluate';
import headingOrderAfter from '../../checks/navigation/heading-order-after';
import headingOrderEvaluate from '../../checks/navigation/heading-order-evaluate';
import identicalLinksSamePurposeAfter from '../../checks/navigation/identical-links-same-purpose-after';
import identicalLinksSamePurposeEvaluate from '../../checks/navigation/identical-links-same-purpose-evaluate';
import internalLinkPresentEvaluate from '../../checks/navigation/internal-link-present-evaluate';
import landmarkEvaluate from '../../checks/navigation/landmark-evaluate';
import metaRefreshEvaluate from '../../checks/navigation/meta-refresh-evaluate';
import pAsHeadingEvaluate from '../../checks/navigation/p-as-heading-evaluate';
import regionEvaluate from '../../checks/navigation/region-evaluate';
Expand Down Expand Up @@ -89,10 +91,6 @@ import focusableModalOpenEvaluate from '../../checks/keyboard/focusable-modal-op
import focusableNoNameEvaluate from '../../checks/keyboard/focusable-no-name-evaluate';
import focusableNotTabbableEvaluate from '../../checks/keyboard/focusable-not-tabbable-evaluate';
import landmarkIsTopLevelEvaluate from '../../checks/keyboard/landmark-is-top-level-evaluate';
import pageHasElmAfter from '../../checks/keyboard/page-has-elm-after';
import pageHasElmEvaluate from '../../checks/keyboard/page-has-elm-evaluate';
import pageNoDuplicateAfter from '../../checks/keyboard/page-no-duplicate-after';
import pageNoDuplicateEvaluate from '../../checks/keyboard/page-no-duplicate-evaluate';
import tabindexEvaluate from '../../checks/keyboard/tabindex-evaluate';

// label
Expand Down Expand Up @@ -205,15 +203,17 @@ const metadataFunctionMap = {

// generic
'attr-non-space-content-evaluate': attrNonSpaceContentEvaluate,
'has-descendant-after': hasDescendantAfter,
'has-descendant-evaluate': hasDescendantEvaluate,
'page-no-duplicate-after': pageNoDuplicateAfter,
'page-no-duplicate-evaluate': pageNoDuplicateEvaluate,

// navigation
'header-present-evaluate': headerPresentEvaluate,
'heading-order-after': headingOrderAfter,
'heading-order-evaluate': headingOrderEvaluate,
'identical-links-same-purpose-after': identicalLinksSamePurposeAfter,
'identical-links-same-purpose-evaluate': identicalLinksSamePurposeEvaluate,
'internal-link-present-evaluate': internalLinkPresentEvaluate,
'landmark-evaluate': landmarkEvaluate,
'meta-refresh-evaluate': metaRefreshEvaluate,
'p-as-heading-evaluate': pAsHeadingEvaluate,
'region-evaluate': regionEvaluate,
Expand Down Expand Up @@ -254,10 +254,6 @@ const metadataFunctionMap = {
'focusable-no-name-evaluate': focusableNoNameEvaluate,
'focusable-not-tabbable-evaluate': focusableNotTabbableEvaluate,
'landmark-is-top-level-evaluate': landmarkIsTopLevelEvaluate,
'page-has-elm-after': pageHasElmAfter,
'page-has-elm-evaluate': pageHasElmEvaluate,
'page-no-duplicate-after': pageNoDuplicateAfter,
'page-no-duplicate-evaluate': pageNoDuplicateEvaluate,
'tabindex-evaluate': tabindexEvaluate,

// label
Expand Down
15 changes: 9 additions & 6 deletions test/checks/navigation/landmark.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,27 @@ describe('landmark', function() {
var fixture = document.getElementById('fixture');
var checkSetup = axe.testUtils.checkSetup;
var shadowSupport = axe.testUtils.shadowSupport;
var checkEvaluate = axe.testUtils.getCheckEvaluate('landmark');
var checkContext = axe.testUtils.MockCheckContext();

afterEach(function() {
fixture.innerHTML = '';
checkContext.reset();
});

it('should return true when role=main is found', function() {
var checkArgs = checkSetup('<div role="main"></div>', '#fixture');
assert.isTrue(checks.landmark.evaluate.apply(null, checkArgs));
assert.isTrue(checkEvaluate.apply(checkContext, checkArgs));
});

it('should return true when <main> is found', function() {
var checkArgs = checkSetup('<main></main>', '#fixture');
assert.isTrue(checks.landmark.evaluate.apply(null, checkArgs));
assert.isTrue(checkEvaluate.apply(checkContext, checkArgs));
});

it('should otherwise return false', function() {
var checkArgs = checkSetup('<div role="contentinfo"></div>', '#fixture');
assert.isFalse(checks.landmark.evaluate.apply(null, checkArgs));
assert.isFalse(checkEvaluate.apply(checkContext, checkArgs));
});

(shadowSupport.v1 ? it : xit)(
Expand All @@ -32,7 +35,7 @@ describe('landmark', function() {
shadow.innerHTML = '<div></div>';
var checkArgs = checkSetup(node, '#fixture');

assert.isFalse(checks.landmark.evaluate.apply(null, checkArgs));
assert.isFalse(checkEvaluate.apply(checkContext, checkArgs));
}
);

Expand All @@ -44,7 +47,7 @@ describe('landmark', function() {
shadow.innerHTML = '<main></main>';
var checkArgs = checkSetup(node, '#fixture');

assert.isTrue(checks.landmark.evaluate.apply(null, checkArgs));
assert.isTrue(checkEvaluate.apply(checkContext, checkArgs));
}
);

Expand All @@ -57,7 +60,7 @@ describe('landmark', function() {
shadow.innerHTML = '<slot></slot>';
var checkArgs = checkSetup(node, '#fixture');

assert.isTrue(checks.landmark.evaluate.apply(null, checkArgs));
assert.isTrue(checkEvaluate.apply(checkContext, checkArgs));
}
);
});

0 comments on commit 59125a0

Please sign in to comment.