source: frontend/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/autocomplete-valid-test.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 2 weeks ago

Fix frontend appearance

  • Property mode set to 100644
File size: 3.5 KB
Line 
1/**
2 * @fileoverview Ensure autocomplete attribute is correct.
3 * @author Wilco Fiers
4 */
5
6// -----------------------------------------------------------------------------
7// Requirements
8// -----------------------------------------------------------------------------
9
10import { RuleTester } from 'eslint';
11import parserOptionsMapper from '../../__util__/parserOptionsMapper';
12import { axeFailMessage } from '../../__util__/axeMapping';
13import parsers from '../../__util__/helpers/parsers';
14import rule from '../../../src/rules/autocomplete-valid';
15
16// -----------------------------------------------------------------------------
17// Tests
18// -----------------------------------------------------------------------------
19
20const ruleTester = new RuleTester();
21
22const invalidAutocomplete = [{
23 message: axeFailMessage('autocomplete-valid'),
24 type: 'JSXOpeningElement',
25}];
26
27const inappropriateAutocomplete = [{
28 message: axeFailMessage('autocomplete-appropriate'),
29 type: 'JSXOpeningElement',
30}];
31
32const componentsSettings = {
33 'jsx-a11y': {
34 components: {
35 Input: 'input',
36 },
37 },
38};
39
40ruleTester.run('autocomplete-valid', rule, {
41 valid: parsers.all([].concat(
42 // INAPPLICABLE
43 { code: '<input type="text" />;' },
44 // // PASSED AUTOCOMPLETE
45 { code: '<input type="text" autocomplete="name" />;' },
46 { code: '<input type="text" autocomplete="" />;' },
47 { code: '<input type="text" autocomplete="off" />;' },
48 { code: '<input type="text" autocomplete="on" />;' },
49 { code: '<input type="text" autocomplete="billing family-name" />;' },
50 { code: '<input type="text" autocomplete="section-blue shipping street-address" />;' },
51 { code: '<input type="text" autocomplete="section-somewhere shipping work email" />;' },
52 { code: '<input type="text" autocomplete />;' },
53 { code: '<input type="text" autocomplete={autocompl} />;' },
54 { code: '<input type="text" autocomplete={autocompl || "name"} />;' },
55 { code: '<input type="text" autocomplete={autocompl || "foo"} />;' },
56 { code: '<Foo autocomplete="bar"></Foo>;' },
57 { code: '<input type={isEmail ? "email" : "text"} autocomplete="none" />;' },
58 { code: '<Input type="text" autocomplete="name" />', settings: componentsSettings },
59 { code: '<Input type="text" autocomplete="baz" />' },
60
61 // PASSED "autocomplete-appropriate"
62 // see also: https://github.com/dequelabs/axe-core/issues/2912
63 { code: '<input type="date" autocomplete="email" />;', errors: inappropriateAutocomplete },
64 { code: '<input type="number" autocomplete="url" />;', errors: inappropriateAutocomplete },
65 { code: '<input type="month" autocomplete="tel" />;', errors: inappropriateAutocomplete },
66 { code: '<Foo type="month" autocomplete="tel"></Foo>;', errors: inappropriateAutocomplete, options: [{ inputComponents: ['Foo'] }] },
67 )).map(parserOptionsMapper),
68 invalid: parsers.all([].concat(
69 // FAILED "autocomplete-valid"
70 { code: '<input type="text" autocomplete="foo" />;', errors: invalidAutocomplete },
71 { code: '<input type="text" autocomplete="name invalid" />;', errors: invalidAutocomplete },
72 { code: '<input type="text" autocomplete="invalid name" />;', errors: invalidAutocomplete },
73 { code: '<input type="text" autocomplete="home url" />;', errors: invalidAutocomplete },
74 { code: '<Bar autocomplete="baz"></Bar>;', errors: invalidAutocomplete, options: [{ inputComponents: ['Bar'] }] },
75 { code: '<Input type="text" autocomplete="baz" />', errors: invalidAutocomplete, settings: componentsSettings },
76 )).map(parserOptionsMapper),
77});
Note: See TracBrowser for help on using the repository browser.