Skip to content

Commit db03143

Browse files
authored
Merge pull request #49 from browserstack/autocomplete-reverting
Reverted autocomplete valid
2 parents df37c1d + 8b2da07 commit db03143

File tree

7 files changed

+282
-293
lines changed

7 files changed

+282
-293
lines changed

lib/checks/forms/autocomplete-a11y-evaluate.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { isValidAutocomplete } from '../../commons/text';
2-
import { ErrorHandler } from '../../../../a11y-engine-core/lib/core/errors/error-handler';
32

43
function checkIsElementValidAutocomplete(node, options, virtualNode) {
54
const autocomplete = virtualNode
@@ -69,7 +68,7 @@ function autocompleteA11yEvaluate(node, options, virtualNode) {
6968
return checkIsElementValidAutocomplete(node, options, virtualNode);
7069
}
7170
} catch (err) {
72-
ErrorHandler.addCheckError('autocomplete-attribute-valid-check', err);
71+
// ErrorHandler.addCheckError('autocomplete-attribute-valid-check', err);
7372
return undefined;
7473
}
7574
}

lib/checks/forms/autocomplete-valid.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"id": "autocomplete-valid",
3-
"evaluate": "autocomplete-a11y-evaluate",
3+
"evaluate": "autocomplete-valid-evaluate",
44
"metadata": {
5-
"impact": "moderate",
5+
"impact": "serious",
66
"messages": {
77
"pass": "the autocomplete attribute is correctly formatted",
8-
"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'."
8+
"fail": "the autocomplete attribute is incorrectly formatted"
99
}
1010
},
1111
"options": {

lib/rules/autocomplete-valid.json

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
{
22
"id": "autocomplete-valid",
3-
"matches": "autocomplete-a11y-matches",
4-
"tags": [
5-
"cat.forms",
6-
"wcag21aa",
7-
"wcag22aa",
8-
"wcag135",
9-
"a11y-engine",
10-
"a11y-engine-experimental"
11-
],
3+
"matches": "autocomplete-matches",
4+
"tags": ["cat.forms", "wcag21aa", "wcag135"],
125
"actIds": ["73f2c2"],
136
"metadata": {
14-
"description": "Ensure that the necessary form fields use the autocomplete attribute with a valid input.",
15-
"help": "Autocomplete attribute must have a valid value"
7+
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
8+
"help": "autocomplete attribute must be used correctly"
169
},
1710
"all": ["autocomplete-valid"],
1811
"any": [],

test/checks/forms/autocomplete-valid.js

Lines changed: 163 additions & 163 deletions
Large diffs are not rendered by default.

test/integration/rules/autocomplete-valid/autocomplete-valid.html

Lines changed: 101 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77

88
<textarea autocomplete="Street-Address" id="pass3"></textarea>
99

10-
<input autocomplete="section-partner email" id="pass4" />
10+
<input autocomplete="Work EMail" id="pass4" />
1111

12-
<input autocomplete="section-primary shipping work email" id="pass5" />
12+
<input autocomplete="section-partner email" id="pass5" />
13+
14+
<input autocomplete="section-primary shipping work email" id="pass6" />
1315

1416
<!-- Unknown autocomplete term -->
1517
<input autocomplete="badterm" id="fail1" />
@@ -27,135 +29,135 @@
2729
<button autocomplete="username" id="inapplicable1"></button>
2830

2931
<!-- Empty attribute -->
30-
<input autocomplete="" id="fail5" />
32+
<input autocomplete="" id="inapplicable2" />
3133

3234
<!-- Hidden through display:none -->
33-
<input autocomplete="username" style="display:none" id="inapplicable2" />
35+
<input autocomplete="username" style="display:none" id="inapplicable3" />
3436

3537
<!-- Off screen and not focusable -->
3638
<input
3739
autocomplete="username"
3840
tabindex="-1"
3941
aria-hidden="true"
4042
style="position:absolute; top:-9999em"
41-
id="inapplicable3"
43+
id="inapplicable4"
4244
/>
4345

4446
<!-- input button -->
45-
<input type="button" autocomplete="username" id="inapplicable4" />
47+
<input type="button" autocomplete="username" id="inapplicable5" />
4648

4749
<!-- hidden -->
48-
<input type="hidden" autocomplete="username" id="inapplicable5" />
50+
<input type="hidden" autocomplete="username" id="inapplicable6" />
4951

5052
<!-- native disabled -->
51-
<input autocomplete="username" disabled id="inapplicable6" />
53+
<input autocomplete="username" disabled id="inapplicable7" />
5254

5355
<!-- ARIA disabled -->
54-
<input autocomplete="username" aria-disabled="true" id="inapplicable7" />
56+
<input autocomplete="username" aria-disabled="true" id="inapplicable8" />
5557

5658
<!-- non-widget element -->
5759
<input
5860
type="button"
5961
role="none"
6062
tabindex="-1"
6163
autocomplete="username"
62-
id="inapplicable8"
64+
id="inapplicable9"
6365
/>
64-
<input autocomplete=" " id="fail6" />
65-
66-
<input autocomplete="on" id="fail7" />
67-
<input autocomplete=" on " id="fail8" />
68-
<input autocomplete=" OFF " id="pass6" />
69-
<input autocomplete=" name " id="pass7" />
70-
<input autocomplete="honorific-prefix" id="pass8" />
71-
<input autocomplete="GIVEN-NAME" id="pass9" />
72-
<input autocomplete="additional-name" id="pass10" />
73-
<input autocomplete="section-foo billing family-name" id="pass11" />
74-
<input autocomplete="honorific-suffix" id="pass12" />
75-
<input autocomplete="nickname" id="pass13" />
76-
<input autocomplete="USERNAME" id="pass14" />
77-
<input autocomplete="section-foo new-password" id="pass15" />
78-
<input autocomplete="shipping current-password" id="pass16" />
79-
<input autocomplete="organization-title" id="pass17" />
80-
<input autocomplete="organization" id="pass18" />
81-
<textarea autocomplete="section-foo street-address" id="pass19"></textarea>
82-
<input autocomplete="address-line1" id="pass20" />
83-
<input autocomplete="billing address-line2" id="pass21" />
84-
<input autocomplete="address-line3" id="pass22" />
85-
<input autocomplete="section-foo address-level4" id="pass23" />
86-
<input autocomplete="address-level3" id="pass24" />
87-
<input autocomplete="address-level2" id="pass25" />
88-
<input autocomplete="SHIPPING address-level1" id="pass26" />
89-
<input autocomplete="section-foo country" id="pass27" />
90-
<input autocomplete="country-name" id="pass28" />
91-
<input autocomplete="postal-code" id="pass29" />
92-
<input autocomplete="CC-name" id="pass30" />
93-
<input autocomplete="section-foo billing cc-given-name" id="pass31" />
94-
<input autocomplete="cc-additional-name" id="pass32" />
95-
<input autocomplete="cc-family-name" id="pass33" />
96-
<input autocomplete="cc-number" id="pass34" />
97-
<input autocomplete="section-foo cc-exp" id="pass35" />
98-
<input autocomplete="shipping CC-Exp-Month" id="pass36" />
99-
<input autocomplete="cc-exp-year" id="pass37" />
100-
<input autocomplete="cc-csc" id="pass38" />
101-
<input autocomplete="section-foo cc-type" id="pass39" />
102-
<input autocomplete="transaction-currency" id="pass40" />
103-
<input autocomplete="billing transaction-amount" id="pass41" />
104-
<input autocomplete="language" id="pass42" />
105-
<input autocomplete="section-foo bday" id="pass43" />
106-
<input autocomplete="bday-day" id="pass44" />
107-
<input autocomplete="bday-month" id="pass45" />
108-
<input autocomplete="section-foo shipping bday-year" id="pass46" />
109-
<input autocomplete="sex" id="pass47" />
110-
<input autocomplete="url" id="pass48" />
111-
<input autocomplete="photo" id="pass49" />
112-
<input autocomplete="section-foo photo" id="pass50" />
113-
<input autocomplete="HOME TEL" id="pass51" />
114-
<input autocomplete="section-foo shipping work tel-country-code" id="pass52" />
115-
<input autocomplete="mobile tel-national" id="pass53" />
116-
<input autocomplete="fax tel-area-code" id="pass54" />
117-
<input autocomplete="pager tel-local" id="pass55" />
118-
<input autocomplete="home tel-local-prefix" id="pass56" />
119-
<input autocomplete="work tel-local-suffix" id="pass57" />
120-
<input autocomplete="SECTION-foo mobile tel-extension" id="pass58" />
121-
<input autocomplete="fax email" id="pass59" />
122-
<input type="username" autocomplete="email" id="pass60" />
123-
<input autocomplete="pager impp" id="pass61" />
66+
<input autocomplete=" " id="inapplicable10" />
67+
68+
<input autocomplete="on" id="pass7" />
69+
<input autocomplete=" on " id="pass8" />
70+
<input autocomplete=" OFF " id="pass9" />
71+
<input autocomplete=" name " id="pass10" />
72+
<input autocomplete="honorific-prefix" id="pass11" />
73+
<input autocomplete="GIVEN-NAME" id="pass12" />
74+
<input autocomplete="additional-name" id="pass13" />
75+
<input autocomplete="section-foo billing family-name" id="pass14" />
76+
<input autocomplete="honorific-suffix" id="pass15" />
77+
<input autocomplete="nickname" id="pass16" />
78+
<input autocomplete="USERNAME" id="pass17" />
79+
<input autocomplete="section-foo new-password" id="pass18" />
80+
<input autocomplete="shipping current-password" id="pass19" />
81+
<input autocomplete="organization-title" id="pass20" />
82+
<input autocomplete="organization" id="pass21" />
83+
<textarea autocomplete="section-foo street-address" id="pass22"></textarea>
84+
<input autocomplete="address-line1" id="pass23" />
85+
<input autocomplete="billing address-line2" id="pass24" />
86+
<input autocomplete="address-line3" id="pass25" />
87+
<input autocomplete="section-foo address-level4" id="pass26" />
88+
<input autocomplete="address-level3" id="pass27" />
89+
<input autocomplete="address-level2" id="pass28" />
90+
<input autocomplete="SHIPPING address-level1" id="pass29" />
91+
<input autocomplete="section-foo country" id="pass30" />
92+
<input autocomplete="country-name" id="pass31" />
93+
<input autocomplete="postal-code" id="pass32" />
94+
<input autocomplete="CC-name" id="pass33" />
95+
<input autocomplete="section-foo billing cc-given-name" id="pass34" />
96+
<input autocomplete="cc-additional-name" id="pass35" />
97+
<input autocomplete="cc-family-name" id="pass36" />
98+
<input autocomplete="cc-number" id="pass37" />
99+
<input autocomplete="section-foo cc-exp" id="pass38" />
100+
<input autocomplete="shipping CC-Exp-Month" id="pass39" />
101+
<input autocomplete="cc-exp-year" id="pass40" />
102+
<input autocomplete="cc-csc" id="pass41" />
103+
<input autocomplete="section-foo cc-type" id="pass42" />
104+
<input autocomplete="transaction-currency" id="pass43" />
105+
<input autocomplete="billing transaction-amount" id="pass44" />
106+
<input autocomplete="language" id="pass45" />
107+
<input autocomplete="section-foo bday" id="pass46" />
108+
<input autocomplete="bday-day" id="pass47" />
109+
<input autocomplete="bday-month" id="pass48" />
110+
<input autocomplete="section-foo shipping bday-year" id="pass49" />
111+
<input autocomplete="sex" id="pass50" />
112+
<input autocomplete="url" id="pass51" />
113+
<input autocomplete="photo" id="pass52" />
114+
<input autocomplete="section-foo photo" id="pass53" />
115+
<input autocomplete="HOME TEL" id="pass54" />
116+
<input autocomplete="section-foo shipping work tel-country-code" id="pass55" />
117+
<input autocomplete="mobile tel-national" id="pass56" />
118+
<input autocomplete="fax tel-area-code" id="pass57" />
119+
<input autocomplete="pager tel-local" id="pass58" />
120+
<input autocomplete="home tel-local-prefix" id="pass59" />
121+
<input autocomplete="work tel-local-suffix" id="pass60" />
122+
<input autocomplete="SECTION-foo mobile tel-extension" id="pass61" />
123+
<input autocomplete="fax email" id="pass62" />
124+
<input type="username" autocomplete="email" id="pass83" />
125+
<input autocomplete="pager impp" id="pass63" />
124126
<input
125127
autocomplete="off"
126-
id="pass62"
128+
id="pass64"
127129
name="input_1"
128130
placeholder="Numeric Input Field"
129131
value="42"
130132
type="tel"
131133
/>
132-
<input autocomplete="on" id="fail9" value="" type="url" />
133-
<input autocomplete="off" id="pass63" value="42" type="datetime-local" />
134-
<input autocomplete="street-address" id="pass64" type="text" />
135-
<input autocomplete="on" id="fail10" value="" type="url " />
136-
<input autocomplete="off" id="pass78" value="42" type=" DateTime-Local" />
137-
138-
<input autocomplete="tel-country-code" id="pass65" type="tel" />
139-
<input autocomplete="tel-national" id="pass66" type="tel" />
140-
<input autocomplete="tel-area-code" id="pass67" type="tel" />
141-
<input autocomplete="tel-local" id="pass68" type="tel" />
142-
<input autocomplete="tel-local-prefix" id="pass69" type="tel" />
143-
<input autocomplete="tel-local-suffix" id="pass70" type="tel" />
144-
<input autocomplete="tel-extension" id="pass71" type="tel" />
145-
146-
<input autocomplete="one-time-code" id="pass72" />
147-
148-
<input autocomplete="cc-number" type="tel" id="pass73" />
149-
<input autocomplete="cc-exp" type="tel" id="pass74" />
150-
<input autocomplete="cc-exp-month" type="tel" id="pass75" />
151-
<input autocomplete="cc-exp-year" type="tel" id="pass76" />
152-
<input autocomplete="cc-csc" type="tel" id="pass77" />
134+
<input autocomplete="on" id="pass65" value="" type="url" />
135+
<input autocomplete="off" id="pass66" value="42" type="datetime-local" />
136+
<input autocomplete="street-address" id="pass67" type="text" />
137+
<input autocomplete="on" id="pass68" value="" type="url " />
138+
<input autocomplete="off" id="pass69" value="42" type=" DateTime-Local" />
139+
140+
<input autocomplete="tel-country-code" id="pass70" type="tel" />
141+
<input autocomplete="tel-national" id="pass71" type="tel" />
142+
<input autocomplete="tel-area-code" id="pass72" type="tel" />
143+
<input autocomplete="tel-local" id="pass73" type="tel" />
144+
<input autocomplete="tel-local-prefix" id="pass74" type="tel" />
145+
<input autocomplete="tel-local-suffix" id="pass75" type="tel" />
146+
<input autocomplete="tel-extension" id="pass76" type="tel" />
147+
148+
<input autocomplete="one-time-code" id="pass77" />
149+
150+
<input autocomplete="cc-number" type="tel" id="pass78" />
151+
<input autocomplete="cc-exp" type="tel" id="pass79" />
152+
<input autocomplete="cc-exp-month" type="tel" id="pass80" />
153+
<input autocomplete="cc-exp-year" type="tel" id="pass81" />
154+
<input autocomplete="cc-csc" type="tel" id="pass82" />
153155

154156
<!-- Attribute values that contains synonyms of on/off -->
155-
<input autocomplete="none" id="pass78" />
156-
<input autocomplete="false" id="pass79" />
157-
<input autocomplete="true" id="pass80" />
158-
<input autocomplete="disabled" id="pass81" />
159-
<input autocomplete="enabled" id="pass82" />
160-
<input autocomplete="undefined" id="pass83" />
161-
<input autocomplete="null" id="pass84" />
157+
<input autocomplete="none" id="pass84" />
158+
<input autocomplete="false" id="pass85" />
159+
<input autocomplete="true" id="pass86" />
160+
<input autocomplete="disabled" id="pass87" />
161+
<input autocomplete="enabled" id="pass88" />
162+
<input autocomplete="undefined" id="pass89" />
163+
<input autocomplete="null" id="pass90" />

test/integration/rules/autocomplete-valid/autocomplete-valid.json

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,7 @@
11
{
22
"description": "autocomplete-valid tests",
33
"rule": "autocomplete-valid",
4-
"violations": [
5-
["#fail1"],
6-
["#fail2"],
7-
["#fail3"],
8-
["#fail4"],
9-
["#fail5"],
10-
["#fail6"],
11-
["#fail7"],
12-
["#fail8"],
13-
["#fail9"],
14-
["#fail10"]
15-
],
4+
"violations": [["#fail1"], ["#fail2"], ["#fail3"], ["#fail4"]],
165
"passes": [
176
["#pass1"],
187
["#pass2"],
@@ -97,6 +86,12 @@
9786
["#pass81"],
9887
["#pass82"],
9988
["#pass83"],
100-
["#pass84"]
89+
["#pass84"],
90+
["#pass85"],
91+
["#pass86"],
92+
["#pass87"],
93+
["#pass88"],
94+
["#pass89"],
95+
["#pass90"]
10196
]
10297
}

test/rule-matches/autocomplete-matches.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ describe('autocomplete-matches', function() {
4646
});
4747
});
4848

49-
it('returns true for elements with an empty autocomplete', function() {
49+
it('returns false for elements with an empty autocomplete', function() {
5050
var vNode = queryFixture('<input id="target" autocomplete=" ">');
51-
assert.isTrue(rule.matches(null, vNode));
51+
assert.isFalse(rule.matches(null, vNode));
5252
});
5353

5454
it('returns false for intput[type=hidden]', function() {

0 commit comments

Comments
 (0)