Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(rule): Adding landmark-is-unique rule #1394

Merged
merged 45 commits into from
Jun 5, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
4a8beea
Merge pull request #1 from dequelabs/develop
waabid Apr 4, 2018
c906f06
Merge branch 'develop' of https://github.com/dequelabs/axe-core into …
waabid Feb 21, 2019
b6d1986
Initial attempt at landmark-unique rule
markreay Dec 13, 2018
d490bf0
Adding matches tests WIP
waabid Feb 21, 2019
560b9f8
Re-factored and added tests for matches function
waabid Feb 26, 2019
6fe36e7
Merge branch 'develop' of https://github.com/dequelabs/axe-core into …
waabid Feb 27, 2019
016466b
Added support for virtual nodes
waabid Feb 27, 2019
3fe93c3
Using findUp api instead of looking up the tree ourselves
waabid Feb 27, 2019
6cebced
Migrated unique-ness logic to after and removed code
waabid Feb 28, 2019
06900ad
Added tests for landmark-is-unique-after
waabid Feb 28, 2019
bfce046
Added best practice tag to unique landmark rule
waabid Feb 28, 2019
e29a2fc
Added test for form elements
waabid Feb 28, 2019
0ff7e4c
Merge branch 'develop' into users/waabid/uniqueLandmarks2
dylanb Mar 1, 2019
92a9afe
Added comment to explain filtering in landmark matches function
waabid Mar 1, 2019
8a9dcb0
Merge branch 'users/waabid/uniqueLandmarks2' of https://github.com/wa…
waabid Mar 1, 2019
20fd686
Changed usage of actual node with virtual node where possible in land…
waabid Mar 1, 2019
da1a124
Use related nodes api instead of failing duplicate landmarks
waabid Mar 1, 2019
7e6c652
Updated landmark is unique check test to validate related nodes
waabid Mar 1, 2019
de967e0
Added a failing iframe test for landmark-unique
waabid Mar 1, 2019
94dc1f1
Added a test case for matching landmark-unique against elements in sh…
waabid Mar 2, 2019
536366d
Implement own findIndex for landmark-is-unique to unblock tests
waabid Mar 2, 2019
0dec669
Used find instead of findIndex (from polyfills)
waabid Mar 5, 2019
ef8a005
Updated the landmark-unique-matches to use the virtual node by default
waabid Mar 5, 2019
526b48c
Updated nodeName usage to upper case
waabid Mar 5, 2019
87956ac
Exit early when no role is found in landmark unique matches
waabid Mar 5, 2019
9197736
Added test for heirarchical exclusions in shadow dom for landmark-uni…
waabid Mar 6, 2019
b4878db
Took out common variables in landmark unique matches tests
waabid Mar 6, 2019
6ef1760
Added more iframe integration tests for landmark-unique rule
waabid Mar 6, 2019
0b97ebe
Merge branch 'develop' into users/waabid/uniqueLandmarks2
waabid Mar 6, 2019
72c2fb8
Merge https://github.com/dequelabs/axe-core into develop
waabid Mar 29, 2019
13fb04f
Merge branch 'develop' into users/waabid/uniqueLandmarks2
waabid Mar 29, 2019
932bb7a
PR changes: label to accessibleText, ES3 support in tests, and remove…
waabid Apr 4, 2019
203800c
Added more integration test cases
waabid Apr 5, 2019
efa4d52
Updated text for new rule
waabid Apr 5, 2019
a45253f
One last const to var
waabid Apr 5, 2019
acd6720
Merge https://github.com/dequelabs/axe-core into users/waabid/uniqueL…
waabid Apr 5, 2019
ea8f641
Updated to remove all const/let uses
waabid Apr 5, 2019
4dfc817
Use accessibletextvirtual
waabid Apr 5, 2019
dd8b5cc
Fixed test by passing virtual node in to landmark is unique
waabid Apr 18, 2019
cc0a4b9
Merge https://github.com/dequelabs/axe-core into users/waabid/uniqueL…
waabid Apr 18, 2019
85d3240
Merge remote-tracking branch 'upstream/develop' into users/waabid/uni…
straker May 23, 2019
9e1f8ec
sync upstream/develop
straker May 23, 2019
3b3580a
remove es6 syntax from tests
straker May 23, 2019
aafa4a1
cleanup
straker Jun 4, 2019
e64d406
fix typo
straker Jun 4, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use related nodes api instead of failing duplicate landmarks
  • Loading branch information
waabid committed Mar 1, 2019
commit da1a1245cfa05507f8cd4407d06e38721133f819
12 changes: 7 additions & 5 deletions lib/checks/landmarks/landmark-is-unique-after.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const uniqueLandmarks = [];
results.forEach(currentResult => {
return results.filter(currentResult => {
waabid marked this conversation as resolved.
Show resolved Hide resolved
straker marked this conversation as resolved.
Show resolved Hide resolved
const findMatch = someResult => {
return (
currentResult.data.role === someResult.data.role &&
Expand All @@ -10,10 +10,12 @@ results.forEach(currentResult => {
const foundResultIndex = uniqueLandmarks.findIndex(findMatch);
if (foundResultIndex === -1) {
uniqueLandmarks.push(currentResult);
currentResult.relatedNodes = [];
waabid marked this conversation as resolved.
Show resolved Hide resolved
return true;
} else {
waabid marked this conversation as resolved.
Show resolved Hide resolved
currentResult.result = false;
uniqueLandmarks[foundResultIndex].result = false;
const matchedResult = uniqueLandmarks[foundResultIndex];
matchedResult.result = false;
matchedResult.relatedNodes.push(currentResult.relatedNodes[0]);
return false;
}
});

return results;
1 change: 1 addition & 0 deletions lib/checks/landmarks/landmark-is-unique.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ let role = axe.commons.aria.getRole(node);
let label = axe.commons.aria.label(node);
waabid marked this conversation as resolved.
Show resolved Hide resolved
label = label ? label.toLowerCase() : null;
this.data({ role: role, label: label });
this.relatedNodes([node]);

return true;
78 changes: 56 additions & 22 deletions test/checks/landmarks/landmark-is-unique-after.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,84 @@
describe('landmark-is-unique-after', function() {
'use strict';

var checkContext = axe.testUtils.MockCheckContext();
function createResult(result, data) {
return {
result: result,
data: data
};
}

function createResultWithSameRelatedNodes(result, data) {
return {
...createResult(result, data),
waabid marked this conversation as resolved.
Show resolved Hide resolved
relatedNodes: [createResult(result, data)]
};
}

function createResultWithProvidedRelatedNodes(result, data, relatedNodes) {
return {
...createResult(result, data),
relatedNodes
};
}

afterEach(function() {
axe._tree = undefined;
checkContext.reset();
});

it('should update duplicate landmarks with failed result', function() {
var result = checks['landmark-is-unique'].after([
createResult(true, {
createResultWithSameRelatedNodes(true, {
role: 'some role',
label: 'some label'
}),
createResult(true, {
createResultWithSameRelatedNodes(true, {
role: 'some role',
label: 'some label'
}),
createResult(true, {
createResultWithSameRelatedNodes(true, {
role: 'different role',
label: 'some label'
}),
createResult(true, {
createResultWithSameRelatedNodes(true, {
role: 'some role',
label: 'different label'
})
]);

assert.deepEqual(result, [
createResult(false, {
role: 'some role',
label: 'some label'
}),
createResult(false, {
role: 'some role',
label: 'some label'
}),
createResult(true, {
role: 'different role',
label: 'some label'
}),
createResult(true, {
role: 'some role',
label: 'different label'
})
]);
const expectedResult = [
createResultWithProvidedRelatedNodes(
false,
{
role: 'some role',
label: 'some label'
},
[
createResult(true, {
role: 'some role',
label: 'some label'
})
]
),
createResultWithProvidedRelatedNodes(
true,
{
role: 'different role',
label: 'some label'
},
[]
),
createResultWithProvidedRelatedNodes(
true,
{
role: 'some role',
label: 'different label'
},
[]
)
];
assert.deepEqual(result, expectedResult);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,11 @@
"rule": "landmark-unique",
"violations": [
["#violation-main-1"],
["#violation-main-2"],
["#violation-header-1"],
["#violation-header-2"],
["#violation-form-aria-label-1"],
["#violation-form-aria-label-2"],
["#violation-form-aria-labelledby-1"],
["#violation-form-aria-labelledby-2"],
["#violation-aside-aria-label-1"],
["#violation-aside-aria-label-2"],
["#violation-aside-aria-labelledby-1"],
["#violation-aside-aria-labelledby-2"],
["#violation-footer-1"],
["#violation-footer-2"]
["#violation-footer-1"]
]
}