const rules = [
{
pattern: 'Should have a role radio.',
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Should be focusable and tabable.',
comment:
'Tab moves focus to the checked Radio button in a RadioGroup .',
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Should have an accessible name.',
comment: `Can be named by:
- a label specified by
aria-label prop
- a value (
IDREF) set for the aria-labelledby prop that refers to an element
- can be named by adding children (children should be purely presentational and
do not include interactive elements).
`,
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Should have visible checked / unchecked / disabled style.',
status: 'DONE',
tests: 'N/A',
},
{
pattern: 'Should have visible focus and hover style.',
status: 'DONE',
tests: 'N/A',
},
{
pattern:
'Should have a label with 4.5:1 contrast ratio against the background.',
comment:
'dark against white: 21:1, light against black: 20.9:1.',
status: 'DONE',
tests: 'N/A',
},
{
pattern:
'Should have a color indicator with 3:1 contrast ratio against the background.',
comment:
'dark against white: 21:1, light against black: 20.9:1.',
status: 'DONE',
tests: 'N/A',
},
{
pattern: 'Should respect Windows High Contrast mode.',
status: 'DONE',
tests: 'N/A',
},
{
pattern:
'Should have descriptive information about required and invalid state.',
comment:
'Invalid state is indicated by color change. Both states can be described using description prop.',
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Should respect prefers reduce motion settings.',
status: 'TO DO',
tests: 'N/A',
},
{
pattern:
'Should be checked by pressing Space and mouse click.',
comment:
"If the Radio with focus is unchecked, it's state will be changed to checked.",
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Should be focused and checked by pressing arrows.',
status: 'DONE',
tests: 'N/A',
},
{
pattern:
'Should be nested in a radiogroup or be grouped by using name attribute.',
comment: 'RadioGroup component can be used.',
status: 'DONE',
tests: 'N/A',
},
{
pattern: 'Can have a clickable label.',
comment:
'Default clickable area of radio is 32x32px, children of the Radio are also clickable.',
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Can have an accessible description.',
comment:
'Can be described by setting a value for description prop.',
status: 'DONE',
tests: 'DONE',
},
];
export const radioGroupRules = [
{
pattern: 'Should have a role radiogroup.',
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Should have only one checked radio at a time.',
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Should have descriptive information about invalid state.',
comment: 'State can be described using errorMessage prop.',
status: 'DONE',
tests: 'TO DO',
},
{
pattern: 'Can have an accessible name.',
comment: `Can be named by:
- a label specified by
aria-label prop
- a value (
IDREF) set for the aria-labelledby
prop that refers to an element.
`,
status: 'DONE',
tests: 'DONE',
},
{
pattern: 'Can provide information about active descendant.',
comment: `The aria-activedescendant attribute identifies the checked Radio
within Radiogroup by referencing the id value of the radio button that is active.`,
status: 'TO DO',
tests: 'TO DO',
},
{
pattern: 'Can have an accessible description.',
comment:
'Can be described by setting a value for aria-describedby prop.',
status: 'DONE',
tests: 'TO DO',
},
];
export default rules;