diff --git a/lib/checks/forms/autocomplete-a11y-evaluate.js b/lib/checks/forms/autocomplete-a11y-evaluate.js index f39b9212b..12e515f43 100644 --- a/lib/checks/forms/autocomplete-a11y-evaluate.js +++ b/lib/checks/forms/autocomplete-a11y-evaluate.js @@ -1,5 +1,4 @@ import { isValidAutocomplete } from '../../commons/text'; -import { ErrorHandler } from '../../../../a11y-engine-core/lib/core/errors/error-handler'; function checkIsElementValidAutocomplete(node, options, virtualNode) { const autocomplete = virtualNode @@ -69,7 +68,7 @@ function autocompleteA11yEvaluate(node, options, virtualNode) { return checkIsElementValidAutocomplete(node, options, virtualNode); } } catch (err) { - ErrorHandler.addCheckError('autocomplete-attribute-valid-check', err); + // ErrorHandler.addCheckError('autocomplete-attribute-valid-check', err); return undefined; } } diff --git a/lib/checks/forms/autocomplete-valid.json b/lib/checks/forms/autocomplete-valid.json index bef9a40c1..0906e4b89 100644 --- a/lib/checks/forms/autocomplete-valid.json +++ b/lib/checks/forms/autocomplete-valid.json @@ -1,11 +1,11 @@ { "id": "autocomplete-valid", - "evaluate": "autocomplete-a11y-evaluate", + "evaluate": "autocomplete-valid-evaluate", "metadata": { - "impact": "moderate", + "impact": "serious", "messages": { "pass": "the autocomplete attribute is correctly formatted", - "fail": "Add autocomplete attribute to form fields with a valid value as per HTML specification. In 'name' attribute of field, prefer to use standard autocomplete value since browsers use 'name' to suggest autofill. For field with no standard autocomplete value (eg: College ID), prefer to use autocomplete='on'." + "fail": "the autocomplete attribute is incorrectly formatted" } }, "options": { diff --git a/lib/rules/autocomplete-valid.json b/lib/rules/autocomplete-valid.json index 517c33bc1..84f40ec38 100644 --- a/lib/rules/autocomplete-valid.json +++ b/lib/rules/autocomplete-valid.json @@ -1,18 +1,11 @@ { "id": "autocomplete-valid", - "matches": "autocomplete-a11y-matches", - "tags": [ - "cat.forms", - "wcag21aa", - "wcag22aa", - "wcag135", - "a11y-engine", - "a11y-engine-experimental" - ], + "matches": "autocomplete-matches", + "tags": ["cat.forms", "wcag21aa", "wcag135"], "actIds": ["73f2c2"], "metadata": { - "description": "Ensure that the necessary form fields use the autocomplete attribute with a valid input.", - "help": "Autocomplete attribute must have a valid value" + "description": "Ensure the autocomplete attribute is correct and suitable for the form field", + "help": "autocomplete attribute must be used correctly" }, "all": ["autocomplete-valid"], "any": [], diff --git a/test/checks/forms/autocomplete-valid.js b/test/checks/forms/autocomplete-valid.js index 795393e80..999b5acb3 100644 --- a/test/checks/forms/autocomplete-valid.js +++ b/test/checks/forms/autocomplete-valid.js @@ -13,198 +13,198 @@ describe('autocomplete-valid', function() { // original axe-core's check test - // it('returns true if autocomplete is valid', function() { - // var params = checkSetup(''); - // assert.isTrue(evaluate.apply(checkContext, params)); - // }); - - // it('returns false if autocomplete is not valid', function() { - // var params = checkSetup(''); - // assert.isFalse(evaluate.apply(checkContext, params)); - // }); - - // it('uses options to change what is valid autocomplete', function() { - // var options = { stateTerms: ['foo'] }; - // var params = checkSetup( - // '', - // options - // ); - // assert.isTrue(evaluate.apply(checkContext, params)); - // }); - - it("evaluate() passes a document if form element has autocomplete set off and child elements don't have autocomplete", function() { - console.log('Our functions are running fine'); - var params = checkSetup( - '
' - ); + it('returns true if autocomplete is valid', function() { + var params = checkSetup(''); assert.isTrue(evaluate.apply(checkContext, params)); }); - it('evaluate() passes a document if form element has autocomplete set off and child elements have autocomplete as off', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); + it('returns false if autocomplete is not valid', function() { + var params = checkSetup(''); + assert.isFalse(evaluate.apply(checkContext, params)); }); - it('evaluate() passes a document if form element has autocomplete set off and child elements have standard autcomplete value', function() { + it('uses options to change what is valid autocomplete', function() { + var options = { stateTerms: ['foo'] }; var params = checkSetup( - ' ' + '', + options ); assert.isTrue(evaluate.apply(checkContext, params)); }); - it('evaluate() passes a document if form element has autocomplete set off, child elements have on autocomplete value and name or id has standard autocomplete value', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it("evaluate() passes a document if form element has autocomplete set off and child elements don't have autocomplete", function() { + // console.log('Our functions are running fine'); + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() fails a document if form element has autocomplete set off and child elements have on autocomplete value and name or id has non-standard autocomplete value', function() { - var params = checkSetup( - ' ' - ); - assert.isFalse(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if form element has autocomplete set off and child elements have autocomplete as off', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() passes a document if form element has autocomplete set off, child elements have non-standard autocomplete value and name or id has standard autocomplete value', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if form element has autocomplete set off and child elements have standard autcomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() fails a document if form element has autocomplete set off, child elements have non-standard autocomplete value and name or id has non-standard autocomplete value', function() { - var params = checkSetup( - ' ' - ); - assert.isFalse(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if form element has autocomplete set off, child elements have on autocomplete value and name or id has standard autocomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() passes a document if form element has autocomplete set on and child elements have autocomplete set to off', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it('evaluate() fails a document if form element has autocomplete set off and child elements have on autocomplete value and name or id has non-standard autocomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isFalse(evaluate.apply(checkContext, params)); + // }); - it("evaluate() passes a document if form element doesn't have autocomplete set and child elements have autocomplete set to off", function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if form element has autocomplete set off, child elements have non-standard autocomplete value and name or id has standard autocomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() passes a document if form element has autocomplete set on and child elements have autocomplete set to standard irrespective of name and id', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it('evaluate() fails a document if form element has autocomplete set off, child elements have non-standard autocomplete value and name or id has non-standard autocomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isFalse(evaluate.apply(checkContext, params)); + // }); - it("evaluate() passes a document if form element doesn't have autocomplete set and child elements have autocomplete set to standard irrespective of name and id", function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if form element has autocomplete set on and child elements have autocomplete set to off', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() passes a document if form element has autocomplete set on and child elements have autocomplete set on and name/id have a standard autocomplete value', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it("evaluate() passes a document if form element doesn't have autocomplete set and child elements have autocomplete set to off", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it("evaluate() passes a document if form element doesn't have autocomplete set and child elements have autocomplete set on and name/id have a standard autocomplete value", function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if form element has autocomplete set on and child elements have autocomplete set to standard irrespective of name and id', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() fails a document if form element has autocomplete set on and child elements have autocomplete set on and name/id have a non-standard autocomplete value', function() { - var params = checkSetup( - ' ' - ); - assert.isFalse(evaluate.apply(checkContext, params)); - }); + // it("evaluate() passes a document if form element doesn't have autocomplete set and child elements have autocomplete set to standard irrespective of name and id", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it("evaluate() fails a document if form element doesn't have autcomplete set and child elements have autocomplete set on and name/id have a non-standard autocomplete value", function() { - var params = checkSetup( - ' ' - ); - assert.isFalse(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if form element has autocomplete set on and child elements have autocomplete set on and name/id have a standard autocomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it("evaluate() passes a document if form element has autocomplete set on and child elements don't have autocomplete set and name/id have a standard autocomplete value", function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it("evaluate() passes a document if form element doesn't have autocomplete set and child elements have autocomplete set on and name/id have a standard autocomplete value", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it("evaluate() passes a document if form element doesn't have autocomplete set and child elements don't have autocomplete set and name/id have a standard autocomplete value", function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it('evaluate() fails a document if form element has autocomplete set on and child elements have autocomplete set on and name/id have a non-standard autocomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isFalse(evaluate.apply(checkContext, params)); + // }); - it("evaluate() fails a document if form element has autocomplete set on and child elements don't have autocomplete set and name/id have a non-standard autocomplete value", function() { - var params = checkSetup( - ' ' - ); - assert.isFalse(evaluate.apply(checkContext, params)); - }); + // it("evaluate() fails a document if form element doesn't have autcomplete set and child elements have autocomplete set on and name/id have a non-standard autocomplete value", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isFalse(evaluate.apply(checkContext, params)); + // }); - it("evaluate() fails a document if form element doesn't have autocomplete set and child elements don't have autocomplete set and name/id have a non-standard autocomplete value", function() { - var params = checkSetup( - ' ' - ); - assert.isFalse(evaluate.apply(checkContext, params)); - }); + // it("evaluate() passes a document if form element has autocomplete set on and child elements don't have autocomplete set and name/id have a standard autocomplete value", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() passes a document if element is independent and have autocomplete set to off', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it("evaluate() passes a document if form element doesn't have autocomplete set and child elements don't have autocomplete set and name/id have a standard autocomplete value", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it('evaluate() passes a document if element is independent and have autocomplete set to standard irrespective of name and id', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it("evaluate() fails a document if form element has autocomplete set on and child elements don't have autocomplete set and name/id have a non-standard autocomplete value", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isFalse(evaluate.apply(checkContext, params)); + // }); - it('evaluate() passes a document if element is independent and have autocomplete set on and name/id have a standard autocomplete value', function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it("evaluate() fails a document if form element doesn't have autocomplete set and child elements don't have autocomplete set and name/id have a non-standard autocomplete value", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isFalse(evaluate.apply(checkContext, params)); + // }); - it('evaluate() fails a document if element is independent and have autocomplete set on and name/id have a non-standard autocomplete value', function() { - var params = checkSetup( - ' ' - ); - assert.isFalse(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if element is independent and have autocomplete set to off', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it("evaluate()passes a document if element is independent and don't have autocomplete set and name/id have a standard autocomplete value", function() { - var params = checkSetup( - ' ' - ); - assert.isTrue(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if element is independent and have autocomplete set to standard irrespective of name and id', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); - it("evaluate() fails a document if element is independent and don't have autocomplete set and name/id have a non-standard autocomplete value", function() { - var params = checkSetup( - ' ' - ); - assert.isFalse(evaluate.apply(checkContext, params)); - }); + // it('evaluate() passes a document if element is independent and have autocomplete set on and name/id have a standard autocomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); + + // it('evaluate() fails a document if element is independent and have autocomplete set on and name/id have a non-standard autocomplete value', function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isFalse(evaluate.apply(checkContext, params)); + // }); + + // it("evaluate()passes a document if element is independent and don't have autocomplete set and name/id have a standard autocomplete value", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isTrue(evaluate.apply(checkContext, params)); + // }); + + // it("evaluate() fails a document if element is independent and don't have autocomplete set and name/id have a non-standard autocomplete value", function() { + // var params = checkSetup( + // ' ' + // ); + // assert.isFalse(evaluate.apply(checkContext, params)); + // }); }); diff --git a/test/integration/rules/autocomplete-valid/autocomplete-valid.html b/test/integration/rules/autocomplete-valid/autocomplete-valid.html index eec22911e..e38a7798a 100644 --- a/test/integration/rules/autocomplete-valid/autocomplete-valid.html +++ b/test/integration/rules/autocomplete-valid/autocomplete-valid.html @@ -7,9 +7,11 @@ - + - + + + @@ -27,10 +29,10 @@ - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + diff --git a/test/integration/rules/autocomplete-valid/autocomplete-valid.json b/test/integration/rules/autocomplete-valid/autocomplete-valid.json index 7f2fbc52c..b4eceb260 100644 --- a/test/integration/rules/autocomplete-valid/autocomplete-valid.json +++ b/test/integration/rules/autocomplete-valid/autocomplete-valid.json @@ -1,18 +1,7 @@ { "description": "autocomplete-valid tests", "rule": "autocomplete-valid", - "violations": [ - ["#fail1"], - ["#fail2"], - ["#fail3"], - ["#fail4"], - ["#fail5"], - ["#fail6"], - ["#fail7"], - ["#fail8"], - ["#fail9"], - ["#fail10"] - ], + "violations": [["#fail1"], ["#fail2"], ["#fail3"], ["#fail4"]], "passes": [ ["#pass1"], ["#pass2"], @@ -97,6 +86,12 @@ ["#pass81"], ["#pass82"], ["#pass83"], - ["#pass84"] + ["#pass84"], + ["#pass85"], + ["#pass86"], + ["#pass87"], + ["#pass88"], + ["#pass89"], + ["#pass90"] ] } diff --git a/test/rule-matches/autocomplete-matches.js b/test/rule-matches/autocomplete-matches.js index 298598d0f..fd5579d62 100644 --- a/test/rule-matches/autocomplete-matches.js +++ b/test/rule-matches/autocomplete-matches.js @@ -46,9 +46,9 @@ describe('autocomplete-matches', function() { }); }); - it('returns true for elements with an empty autocomplete', function() { + it('returns false for elements with an empty autocomplete', function() { var vNode = queryFixture(''); - assert.isTrue(rule.matches(null, vNode)); + assert.isFalse(rule.matches(null, vNode)); }); it('returns false for intput[type=hidden]', function() {