source: frontend/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/accessible-emoji-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: 2.8 KB
Lineย 
1/**
2 * @fileoverview Enforce <marquee> elements are not used.
3 * @author Ethan Cohen
4 */
5
6// -----------------------------------------------------------------------------
7// Requirements
8// -----------------------------------------------------------------------------
9
10import { RuleTester } from 'eslint';
11import parserOptionsMapper from '../../__util__/parserOptionsMapper';
12import rule from '../../../src/rules/accessible-emoji';
13import parsers from '../../__util__/helpers/parsers';
14
15// -----------------------------------------------------------------------------
16// Tests
17// -----------------------------------------------------------------------------
18
19const ruleTester = new RuleTester();
20
21const expectedError = {
22 message: 'Emojis should be wrapped in <span>, have role="img", and have an accessible description with aria-label or aria-labelledby.',
23 type: 'JSXOpeningElement',
24};
25
26ruleTester.run('accessible-emoji', rule, {
27 valid: parsers.all([].concat(
28 { code: '<div />;' },
29 { code: '<span />' },
30 { code: '<span>No emoji here!</span>' },
31 { code: '<span role="img" aria-label="Panda face">๐Ÿผ</span>' },
32 { code: '<span role="img" aria-label="Snowman">&#9731;</span>' },
33 { code: '<span role="img" aria-labelledby="id1">๐Ÿผ</span>' },
34 { code: '<span role="img" aria-labelledby="id1">&#9731;</span>' },
35 { code: '<span role="img" aria-labelledby="id1" aria-label="Snowman">&#9731;</span>' },
36 { code: '<span>{props.emoji}</span>' },
37 { code: '<span aria-hidden>{props.emoji}</span>' },
38 { code: '<span aria-hidden="true">๐Ÿผ</span>' },
39 { code: '<span aria-hidden>๐Ÿผ</span>' },
40 { code: '<div aria-hidden="true">๐Ÿผ</div>' },
41 { code: '<input type="hidden">๐Ÿผ</input>' },
42 {
43 code: '<CustomInput type="hidden">๐Ÿผ</CustomInput>',
44 settings: { 'jsx-a11y': { components: { CustomInput: 'input' } } },
45 },
46 {
47 code: '<Box as="input" type="hidden">๐Ÿผ</Box>',
48 settings: { 'jsx-a11y': { polymorphicPropName: 'as' } },
49 },
50 )).map(parserOptionsMapper),
51 invalid: parsers.all([].concat(
52 { code: '<span>๐Ÿผ</span>', errors: [expectedError] },
53 { code: '<span>foo๐Ÿผbar</span>', errors: [expectedError] },
54 { code: '<span>foo ๐Ÿผ bar</span>', errors: [expectedError] },
55 { code: '<i role="img" aria-label="Panda face">๐Ÿผ</i>', errors: [expectedError] },
56 { code: '<i role="img" aria-labelledby="id1">๐Ÿผ</i>', errors: [expectedError] },
57 { code: '<Foo>๐Ÿผ</Foo>', errors: [expectedError] },
58 { code: '<span aria-hidden="false">๐Ÿผ</span>', errors: [expectedError] },
59 { code: '<CustomInput type="hidden">๐Ÿผ</CustomInput>', errors: [expectedError] },
60 {
61 code: '<Box as="span">๐Ÿผ</Box>',
62 settings: { 'jsx-a11y': { polymorphicPropName: 'as' } },
63 errors: [expectedError],
64 },
65 )).map(parserOptionsMapper),
66});
Note: See TracBrowser for help on using the repository browser.