From c2b65b7b378c5f14c5eff91066718884264e3623 Mon Sep 17 00:00:00 2001 From: Arjun Chikara Date: Mon, 20 May 2024 19:12:32 +0530 Subject: [PATCH 1/2] Reverted autocomplete valid --- .../forms/autocomplete-a11y-evaluate.js | 3 +- lib/checks/forms/autocomplete-valid.json | 2 +- lib/rules/autocomplete-valid.json | 2 +- test/checks/forms/autocomplete-valid.js | 326 +++++++++--------- .../autocomplete-valid.html | 200 +++++------ .../autocomplete-valid.json | 21 +- test/rule-matches/autocomplete-matches.js | 4 +- 7 files changed, 277 insertions(+), 281 deletions(-) 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..91e3b2cfd 100644 --- a/lib/checks/forms/autocomplete-valid.json +++ b/lib/checks/forms/autocomplete-valid.json @@ -1,6 +1,6 @@ { "id": "autocomplete-valid", - "evaluate": "autocomplete-a11y-evaluate", + "evaluate": "autocomplete-valid-evaluate", "metadata": { "impact": "moderate", "messages": { diff --git a/lib/rules/autocomplete-valid.json b/lib/rules/autocomplete-valid.json index 517c33bc1..29ee051a6 100644 --- a/lib/rules/autocomplete-valid.json +++ b/lib/rules/autocomplete-valid.json @@ -1,6 +1,6 @@ { "id": "autocomplete-valid", - "matches": "autocomplete-a11y-matches", + "matches": "autocomplete-matches", "tags": [ "cat.forms", "wcag21aa", 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() { From 8b2da071f4d5d373bc4c807f3f2f2f5601577850 Mon Sep 17 00:00:00 2001 From: Arjun Chikara Date: Mon, 20 May 2024 19:27:46 +0530 Subject: [PATCH 2/2] Reverted rules json --- lib/checks/forms/autocomplete-valid.json | 4 ++-- lib/rules/autocomplete-valid.json | 13 +++---------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/lib/checks/forms/autocomplete-valid.json b/lib/checks/forms/autocomplete-valid.json index 91e3b2cfd..0906e4b89 100644 --- a/lib/checks/forms/autocomplete-valid.json +++ b/lib/checks/forms/autocomplete-valid.json @@ -2,10 +2,10 @@ "id": "autocomplete-valid", "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 29ee051a6..84f40ec38 100644 --- a/lib/rules/autocomplete-valid.json +++ b/lib/rules/autocomplete-valid.json @@ -1,18 +1,11 @@ { "id": "autocomplete-valid", "matches": "autocomplete-matches", - "tags": [ - "cat.forms", - "wcag21aa", - "wcag22aa", - "wcag135", - "a11y-engine", - "a11y-engine-experimental" - ], + "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": [],