{
    "autocomplete": {
        "component": "autocomplete",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-autocomplete-role",
                        "test": true,
                        "usage": "Announces the presence of a autocomplete as inner element of the autocomplete used for filtering.",
                        "value": "combobox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-autocomplete-label",
                        "test": true,
                        "multiple": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-autocomplete-expanded",
                        "test": true,
                        "usage": "Announces the state of the visibility of the popup.",
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ]
                    },
                    {
                        "id": "k-autocomplete-controls",
                        "test": true,
                        "usage": "Points to the popup element. Signifies that the `combobox` element controls the `listbox`.",
                        "value": ".k-animation-container id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-autocomplete-activedescendent",
                        "test": true,
                        "when": "open",
                        "usage": "Points to the focused item in the popup. The focused item is changed via keyboard navigation. If the popup is not visible, the attribute should not point to any element or should be removed.",
                        "value": ".k-list-item id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-autocomplete-autocomplete-list",
                        "test": true,
                        "when": "filtering",
                        "usage": "Attribute is rendered and value is set to list when **filtering** feature is enabled.",
                        "value": "list",
                        "attribute": "aria-autocomplete"
                    },
                    {
                        "id": "k-autocomplete-autocomplete-both",
                        "test": true,
                        "when": "filtering suggest",
                        "usage": "Attribute is rendered and value is set to both when both **filtering** and **suggest** features are enabled.",
                        "value": "both",
                        "attribute": "aria-autocomplete"
                    },
                    {
                        "id": "k-autocomplete-autocomplete-inline",
                        "test": true,
                        "when": "suggest",
                        "usage": "Attribute is rendered and value is set to only **suggest** feature is enabled.",
                        "value": "inline",
                        "attribute": "aria-autocomplete"
                    },
                    {
                        "id": "k-autocomplete-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the autocomplete is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ],
                        "value": "true"
                    },
                    {
                        "id": "k-autocomplete-readonly",
                        "test": true,
                        "usage": "Attribute is rendered only when the autocomplete is readonly.",
                        "when": "readonly",
                        "multiple": true,
                        "attribute": [
                            "readonly",
                            "aria-readonly"
                        ],
                        "value": "true"
                    },
                    {
                        "id": "k-autocomplete-busy",
                        "test": true,
                        "when": "loading remote",
                        "usage": "Attribute is rendered only when the autocomplete is loading data.",
                        "value": "true",
                        "attribute": "aria-busy"
                    },
                    {
                        "id": "k-autocomplete-focusable",
                        "test": true,
                        "usage": "The element must be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-animation-container",
                "checks": [
                    {
                        "selector": ".k-animation-container",
                        "test": true,
                        "id": "k-popuplist-role",
                        "attribute": "role",
                        "value": "region",
                        "usage": "When the component container is appended to the `<body>` element of the document, it needs a landmark role to be assigned to it. Otherwise, it should be appended to an element with an appropriate landmark role."
                    },
                    {
                        "test": true,
                        "id": "k-popuplist-label",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ],
                        "usage": "Provides a label when the container has a `region` role assigned."
                    }
                ]
            },
            {
                "selector": ".k-list-ul",
                "checks": [
                    {
                        "selector": ".k-list-ul",
                        "test": true,
                        "id": "k-popuplist-ul-role",
                        "attribute": "role",
                        "value": "listbox",
                        "usage": "Identifies the ul element as a listbox."
                    }
                ]
            },
            {
                "selector": ".k-list-item",
                "checks": [
                    {
                        "selector": ".k-list-item",
                        "test": true,
                        "id": "k-popuplist-item-role",
                        "attribute": "role",
                        "value": "option",
                        "usage": "Identifies the li element as a listbox option."
                    }
                ]
            },
            {
                "selector": ".k-list-item.k-selected",
                "checks": [
                    {
                        "selector": ".k-list-item.k-selected",
                        "test": true,
                        "id": "k-popuplist-item-selected",
                        "attribute": "aria-selected",
                        "value": "true",
                        "usage": "Indicates the selected state of the item."
                    }
                ]
            }
        ]
    },
    "button": {
        "component": "button",
        "rules": [
            {
                "selector": ".k-button",
                "checks": [
                    {
                        "selector": ".k-button",
                        "id": "k-button-role",
                        "test": true,
                        "multiple": true,
                        "usage": "If for any reason the used element is not a `<button>` it should have an explicitly set `role` to `button`.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-button-label",
                        "test": true,
                        "when": "no text",
                        "attribute": "aria-label",
                        "usage": " Announces the purpose of the button if no text is provided to an icon button."
                    }
                ]
            }
        ]
    },
    "buttongroup": {
        "component": "buttongroup",
        "rules": [
            {
                "selector": ".k-button-group",
                "checks": [
                    {
                        "selector": ".k-button-group",
                        "id": "k-buttongroup-role",
                        "test": true,
                        "usage": "Sets the proper role for the group.",
                        "value": "group",
                        "attribute": "role"
                    },
                    {
                        "id": "k-buttongroup-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the entire button group is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    }
                ]
            },
            {
                "selector": ".k-button",
                "checks": [
                    {
                        "selector": ".k-button",
                        "id": "k-buttongroup-button-pressed",
                        "test": true,
                        "usage": "Specifies the current state of the Button. Only the selected button in the Group would have this attribute set to `true`.",
                        "attribute": "aria-pressed"
                    }
                ]
            }
        ]
    },
    "calendar": {
        "component": "calendar",
        "rules": [
            {
                "selector": ".k-calendar-table",
                "checks": [
                    {
                        "selector": ".k-calendar-table",
                        "id": "k-calendar-role",
                        "test": true,
                        "usage": "Specifies the role of the Calendar dates table.",
                        "value": "grid",
                        "attribute": "role"
                    },
                    {
                        "id": "k-calendar-label",
                        "test": true,
                        "usage": "Pointing to the current view label (e.g. `March 2022` or `2020-2029`).",
                        "attribute": "aria-labelledby",
                        "value": ".k-nav-fast id"
                    },
                    {
                        "id": "k-calendar-activedescendant",
                        "test": true,
                        "when": "focused",
                        "usage": "Pointing to the currently active (focused) date/month/year/decade in the table.",
                        "attribute": "aria-activedescendant",
                        "value": ".k-calendar-td.k-selected id"
                    },
                    {
                        "id": "k-calendar-tabindex",
                        "test": true,
                        "usage": "Makes the grid focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-calendar-table>thead>tr>th",
                "checks": [
                    {
                        "selector": ".k-calendar-table>thead>tr>th",
                        "id": "k-calendar-th-scope",
                        "test": true,
                        "usage": "Specifies that the header is applied to a column.",
                        "value": "col",
                        "attribute": "scope"
                    },
                    {
                        "id": "k-calendar-th-label",
                        "test": true,
                        "usage": "Specifies the full name of the day of the week (the column header).",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-calendar-table>tbody>tr>td",
                "checks": [
                    {
                        "selector": ".k-calendar-table>tbody>tr>td",
                        "id": "k-calendar-td-selected",
                        "test": true,
                        "when": "selected",
                        "usage": "Specifies whether the date is selected or not.",
                        "attribute": "aria-selected",
                        "value": "true"
                    },
                    {
                        "id": "k-calendar-td-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "When a date is not available for selection, its gridcell element must have the attribute set to `true`.",
                        "attribute": "aria-disabled",
                        "value": "true"
                    },
                    {
                        "id": "k-calendar-td-label",
                        "test": true,
                        "when": "yearView",
                        "usage": "Applicable in year view - for better context contains the full name of the month. May also be applied in month view to specify the full text for a date.",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-nav-next,.k-nav-prev",
                "checks": [
                    {
                        "selector": ".k-nav-next,.k-nav-prev",
                        "id": "k-calendar-nav-btn-role",
                        "test": true,
                        "usage": "Previous / Next buttons must either be `<button>` elements or have the appropriate role.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-calendar-nav-btn-label",
                        "test": true,
                        "usage": "Previous and Next buttons must have descriptive text set as they contain only an icon (no text).",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "title"
                        ]
                    },
                    {
                        "id": "k-calendar-nav-btn-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "When navigation is not allowed outside the current month/year/decade the Previous and Next buttons should have this attribute set to `true`.",
                        "attribute": "aria-disabled",
                        "value": "true"
                    },
                    {
                        "id": "k-calendar-nav-btn-tabindex",
                        "test": true,
                        "usage": "The buttons must be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-nav-fast",
                "checks": [
                    {
                        "selector": ".k-nav-fast",
                        "id": "k-calendar-nav-fast-role",
                        "test": true,
                        "usage": "Go to parent view button must either be a `<button>` element or must have the appropriate role.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-calendar-nav-fast-label",
                        "test": true,
                        "usage": "Go to parent view button must have descriptive text set explaining its purpose.",
                        "attribute": [
                            "aria-label",
                            "title"
                        ]
                    },
                    {
                        "id": "k-calendar-nav-fast-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "When navigation is not allowed outside the current view the button should have this attribute set to `true`.",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-calendar-nav-fast-tabindex",
                        "test": true,
                        "usage": "The buttons must be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-nav-today",
                "checks": [
                    {
                        "selector": ".k-nav-today",
                        "id": "k-calendar-nav-today-role",
                        "test": true,
                        "usage": "Today link must either be `<a>` element or must have the appropriate role.",
                        "attribute": [
                            "role=link",
                            "nodeName=a"
                        ]
                    },
                    {
                        "id": "k-calendar-nav-today-tabindex",
                        "test": true,
                        "usage": "The link must be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "checkbox": {
        "component": "checkbox",
        "rules": [
            {
                "selector": ".k-checkbox",
                "checks": [
                    {
                        "selector": ".k-checkbox",
                        "id": "k-checkbox-role",
                        "test": true,
                        "multiple": true,
                        "usage": "Announces the checkbox role of the element.",
                        "attribute": [
                            "role=checkbox",
                            "type=checkbox"
                        ]
                    },
                    {
                        "id": "k-checkbox-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-checkbox-checked",
                        "test": true,
                        "when": "checked",
                        "multiple": true,
                        "attribute": [
                            "aria-checked=true",
                            "checked"
                        ],
                        "usage": "Announces the checked state of the checkbox."
                    },
                    {
                        "id": "k-checkbox-disabled",
                        "test": true,
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled=true"
                        ],
                        "usage": "Attribute is rendered only when the switch is disabled."
                    }
                ]
            }
        ]
    },
    "colorgradient": {
        "component": "colorgradient",
        "rules": [
            {
                "selector": ".k-colorgradient",
                "checks": [
                    {
                        "selector": ".k-colorgradient",
                        "id": "k-colorgradient-role",
                        "test": true,
                        "usage": "The focusable wrapper of the component should be considered a `textbox`. That signifies it has a value that could be submitted.",
                        "value": "textbox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-colorgradient-label",
                        "test": true,
                        "usage": "The component needs an accessible name to be assigned to it. Must also include the currently selected value in the component.",
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-colorgradient-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the ColorPalette is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-colorgradient-tabindex",
                        "test": true,
                        "usage": "The element must be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-hsv-draghandle",
                "checks": [
                    {
                        "selector": ".k-hsv-draghandle",
                        "id": "k-colorgradient-hsv-orientation",
                        "test": true,
                        "usage": "The implicit orientation for the `role=\"slider\"` must be removed.",
                        "value": "undefined",
                        "attribute": "aria-orientation"
                    },
                    {
                        "id": "k-colorgradient-hsv-label",
                        "test": true,
                        "usage": "Must provide information about the purpose of the `slider` (for example: \"Color well with two-dimensional slider for selecting saturation and lightness\") and the currently selected color (for example: \"X: 142, Y: 93\").",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-colorgradient-hsv-valuetext",
                        "test": true,
                        "usage": "Must specify the values on both X and Y axis.",
                        "attribute": "aria-valuetext"
                    }
                ]
            },
            {
                "selector": ".k-numerictextbox>.k-input-inner",
                "checks": [
                    {
                        "selector": ".k-numerictextbox>.k-input-inner",
                        "id": "k-colorgradient-numeric-label",
                        "test": true,
                        "usage": "Must provide information about the numeric input purpose - the name of the chanel it is aimed at (`red chanel`, `green chanel`, `blue chanel`, or `alpha chanel`).",
                        "attribute": "aria-label"
                    }
                ]
            }
        ]
    },
    "colorpalette": {
        "component": "colorpalette",
        "rules": [
            {
                "selector": ".k-colorpalette",
                "checks": [
                    {
                        "selector": ".k-colorpalette",
                        "id": "k-colorpalette-role",
                        "test": true,
                        "usage": "The focusable wrapper of the component should announce its role as a `grid`.",
                        "value": "grid",
                        "attribute": "role"
                    },
                    {
                        "id": "k-colorpalette-label",
                        "test": true,
                        "usage": "The component needs an accessible name to be assigned to it. Must also include the currently selected value in the component.",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-colorpalette-activedescendent",
                        "test": true,
                        "usage": "Points to the focused cell in the table. The focused cell is changed via keyboard navigation.",
                        "value": ".k-colorpalette-tile id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-colorpalette-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the ColorPalette is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-colorpalette-tabindex",
                        "test": true,
                        "usage": "The element must be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-colorpalette-table",
                "checks": [
                    {
                        "selector": ".k-colorpalette-table",
                        "id": "k-colorpalette-table-role",
                        "test": true,
                        "usage": "Negates the default role of the element, as it is wrapped within a `role=\"grid\"` element.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-colorpalette-table>tbody>tr",
                "checks": [
                    {
                        "selector": ".k-colorpalette-table>tbody>tr",
                        "id": "k-colorpalette-tr-role",
                        "test": true,
                        "usage": "Required as the semantic role of its parent `<table>` has been removed.",
                        "value": "row",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-colorpalette-tile",
                "checks": [
                    {
                        "selector": ".k-colorpalette-tile",
                        "id": "k-colorpalette-td-role",
                        "test": true,
                        "usage": "Required as the semantic role of its parent `<table>` has been removed.",
                        "value": "gridcell",
                        "attribute": "role"
                    },
                    {
                        "id": "k-colorpalette-td-label",
                        "test": true,
                        "usage": "The text representation of the color value for the current cell.",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "title"
                        ]
                    },
                    {
                        "id": "k-colorpalette-td-selected",
                        "test": true,
                        "when": "selected",
                        "usage": "Present on the currently selected cell in the component.",
                        "value": "true",
                        "attribute": "aria-selected"
                    }
                ]
            }
        ]
    },
    "colorpicker": {
        "component": "colorpicker",
        "rules": [
            {
                "selector": ".k-colorpicker",
                "checks": [
                    {
                        "selector": ".k-colorpicker",
                        "id": "k-colorpicker-role",
                        "test": true,
                        "usage": "The focusable element of the component should have role `combobox` (an input with popup).",
                        "value": "combobox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-colorpicker-label",
                        "test": true,
                        "multiple": true,
                        "usage": "The component needs an accessible name to be assigned to it. Must also include the currently selected value in the component.",
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-colorpicker-haspopup",
                        "test": true,
                        "usage": "Indicates the component has a Dialog Popup.",
                        "value": "dialog",
                        "attribute": "aria-haspopup"
                    },
                    {
                        "id": "k-colorpicker-expanded",
                        "test": true,
                        "usage": "Announces the state of the visibility of the popup.",
                        "attribute": "aria-expanded"
                    },
                    {
                        "id": "k-colorpicker-controls",
                        "test": true,
                        "usage": "Points to the popup element. Signifies that the `combobox` element controls the `dialog`.",
                        "value": ".k-colorpicker-popup id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-colorpicker-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the picker is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-colorpicker-tabindex",
                        "test": true,
                        "usage": "The element must be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-colorgradient",
                "checks": [
                    {
                        "selector": ".k-colorgradient",
                        "id": "k-colorpicker-colorgradient-role",
                        "test": true,
                        "usage": "The ColorGradient element must have its role removed.",
                        "attribute": "role",
                        "value": [
                            "none",
                            "undefined"
                        ]
                    },
                    {
                        "id": "k-colorpicker-colorgradient-label",
                        "test": true,
                        "usage": "The ColorGradient element must have its `aria-label` attribute removed.",
                        "attribute": "aria-label",
                        "value": "undefined"
                    },
                    {
                        "id": "k-colorpicker-colorgradient-tabindex",
                        "test": true,
                        "usage": "The ColorGradient must be removed from the page tab sequence.",
                        "attribute": "tabindex",
                        "value": [
                            "-1",
                            "undefined"
                        ]
                    }
                ]
            }
        ]
    },
    "combobox": {
        "component": "combobox",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-combobox-role",
                        "test": true,
                        "usage": "Announces the presence of a combobox as inner element of the combobox used for filtering.",
                        "value": "combobox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-combobox-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-combobox-expanded",
                        "test": true,
                        "usage": "Announces the state of the visibility of the popup.",
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ]
                    },
                    {
                        "id": "k-combobox-controls",
                        "test": true,
                        "usage": "Points to the popup element. Signifies that the `combobox` element controls the `listbox`.",
                        "value": ".k-animation-container id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-combobox-activedescendent",
                        "test": true,
                        "when": "open",
                        "usage": "Points to the focused item in the popup. The focused item is changed via keyboard navigation. If the popup is not visible, the attribute should not point to any element or should be removed.",
                        "value": ".k-list-item.k-selected id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-combobox-autocomplete-list",
                        "test": true,
                        "when": "filtering",
                        "usage": "Attribute is rendered and value is set to list when **filtering** feature is enabled.",
                        "value": "list",
                        "attribute": "aria-autocomplete"
                    },
                    {
                        "id": "k-autocomplete-autocomplete-both",
                        "test": true,
                        "when": "filtering suggest",
                        "usage": "Attribute is rendered and value is set to both when both **filtering** and **suggest** features are enabled.",
                        "value": "both",
                        "attribute": "aria-autocomplete"
                    },
                    {
                        "id": "k-autocomplete-autocomplete-inline",
                        "test": true,
                        "when": "suggest",
                        "usage": "Attribute is rendered and value is set to only **suggest** feature is enabled.",
                        "value": "inline",
                        "attribute": "aria-autocomplete"
                    },
                    {
                        "id": "k-combobox-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the combobox is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ],
                        "value": "true"
                    },
                    {
                        "id": "k-combobox-readonly",
                        "test": true,
                        "usage": "Attribute is rendered only when the combobox is readonly.",
                        "when": "readonly",
                        "multiple": true,
                        "attribute": [
                            "readonly",
                            "aria-readonly"
                        ],
                        "value": "true"
                    },
                    {
                        "id": "k-combobox-busy",
                        "test": true,
                        "when": "busy",
                        "usage": "Attribute is rendered only when the combobox is loading data.",
                        "value": "true",
                        "attribute": "aria-busy"
                    },
                    {
                        "id": "k-combobox-tabindex",
                        "test": true,
                        "usage": "The element must be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-input-button",
                "checks": [
                    {
                        "selector": ".k-input-button",
                        "id": "k-combobox-arrow-role",
                        "test": true,
                        "usage": "The element should either be a `<button>` element or should have `role=\"button\"` assigned.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-combobox-arrow-label",
                        "test": true,
                        "usage": "Button element must have discernible text.",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-combobox-arrow-tabindex",
                        "test": true,
                        "usage": "Button element should not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-animation-container",
                "checks": [
                    {
                        "selector": ".k-animation-container",
                        "test": true,
                        "id": "k-popuplist-role",
                        "attribute": "role",
                        "value": "region",
                        "usage": "When the component container is appended to the `<body>` element of the document, it needs a landmark role to be assigned to it. Otherwise, it should be appended to an element with an appropriate landmark role."
                    },
                    {
                        "test": true,
                        "id": "k-popuplist-label",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ],
                        "usage": "Provides a label when the container has a `region` role assigned."
                    }
                ]
            },
            {
                "selector": ".k-list-ul",
                "checks": [
                    {
                        "selector": ".k-list-ul",
                        "test": true,
                        "id": "k-popuplist-ul-role",
                        "attribute": "role",
                        "value": "listbox",
                        "usage": "Identifies the ul element as a listbox."
                    }
                ]
            },
            {
                "selector": ".k-list-item",
                "checks": [
                    {
                        "selector": ".k-list-item",
                        "test": true,
                        "id": "k-popuplist-item-role",
                        "attribute": "role",
                        "value": "option",
                        "usage": "Identifies the li element as a listbox option."
                    }
                ]
            },
            {
                "selector": ".k-list-item.k-selected",
                "checks": [
                    {
                        "selector": ".k-list-item.k-selected",
                        "test": true,
                        "id": "k-popuplist-item-selected",
                        "attribute": "aria-selected",
                        "value": "true",
                        "usage": "Indicates the selected state of the item."
                    }
                ]
            }
        ]
    },
    "dateinput": {
        "component": "dateinput",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-dateinput-role",
                        "test": true,
                        "usage": "The element should either be an `<input type=\"text\">` element or should have `role=\"textbox\"` assigned.",
                        "multiple": true,
                        "attribute": [
                            "role=textbox",
                            "type=text"
                        ]
                    },
                    {
                        "id": "k-dateinput-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "multiple": true,
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-dateinput-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the DateInput is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ]
                    },
                    {
                        "id": "k-dateinput-readonly",
                        "test": true,
                        "usage": "Attribute is rendered only when the DateInput is readonly.",
                        "when": "readonly",
                        "multiple": true,
                        "attribute": [
                            "readonly",
                            "aria-readonly"
                        ]
                    },
                    {
                        "id": "k-dateinput-tabindex",
                        "test": true,
                        "usage": "The element should be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "datepicker": {
        "component": "datepicker",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-datepicker-role",
                        "test": true,
                        "usage": "The input element should follow the `combobox` specification.",
                        "value": "combobox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-datepicker-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "multiple": true,
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-datepicker-haspopup",
                        "test": true,
                        "usage": "Indicates the component has a Calendar Popup that implements `role=\"grid\"`.",
                        "value": "grid",
                        "attribute": "aria-haspopup"
                    },
                    {
                        "id": "k-datepicker-expanded",
                        "test": true,
                        "usage": "Announces whether the Popup is visible or not.",
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ]
                    },
                    {
                        "id": "k-datepicker-controls",
                        "test": true,
                        "usage": "Points to the popup element. Signifies that the `combobox` element controls the Calendar `grid`.",
                        "value": ".k-animation-container id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-datepicker-activedescendent",
                        "test": true,
                        "usage": "Points to the focused item (date/month/year) in the Calendar Popup. Should only be present when the Popup is open.",
                        "value": ".k-calendar-td id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-datepicker-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the DatePicker is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ]
                    },
                    {
                        "id": "k-datepicker-readonly",
                        "test": true,
                        "usage": "Attribute is rendered only when the DatePicker is readonly.",
                        "when": "readonly",
                        "multiple": true,
                        "attribute": [
                            "readonly",
                            "aria-readonly"
                        ]
                    },
                    {
                        "id": "k-datepicker-tabindex",
                        "test": true,
                        "usage": "The element must be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-input-button",
                "checks": [
                    {
                        "selector": ".k-input-button",
                        "id": "k-datepicker-arrow-role",
                        "test": true,
                        "usage": "The element should either be a `<button>` element or should have `role=\"button\"` assigned.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-datepicker-arrow-label",
                        "test": true,
                        "usage": "The button needs an accessible name to be assigned to it.",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-datepicker-arrow-tabindex",
                        "test": true,
                        "usage": "Button element should not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "daterangepicker": {
        "component": "daterangepicker",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-daterangepicker-role",
                        "test": true,
                        "usage": "The input element should follow the `combobox` specification.",
                        "value": "combobox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-daterangepicker-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "multiple": true,
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-daterangepicker-haspopup",
                        "test": true,
                        "usage": "Indicates the component has a Calendar Popup that implements `role=\"grid\"`.",
                        "value": "grid",
                        "attribute": "aria-haspopup"
                    },
                    {
                        "id": "k-daterangepicker-expanded",
                        "test": true,
                        "usage": "Announces whether the Popup is visible or not.",
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ]
                    },
                    {
                        "id": "k-daterangepicker-controls",
                        "test": true,
                        "usage": "Points to the popup element. Signifies that the `combobox` element controls the Calendar `grid`.",
                        "value": ".k-calendar-container id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-daterangepicker-activedescendent",
                        "test": true,
                        "usage": "Points to the focused item (date/month/year) in the Calendar Popup. Should only be present when the Popup is open.",
                        "value": ".k-calendar-td id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-daterangepicker-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the DateRangePicker is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ]
                    },
                    {
                        "id": "k-daterangepicker-readonly",
                        "test": true,
                        "usage": "Attribute is rendered only when the DateRangePicker is readonly.",
                        "when": "readonly",
                        "multiple": true,
                        "attribute": [
                            "readonly",
                            "aria-readonly"
                        ]
                    },
                    {
                        "id": "k-daterangepicker-tabindex",
                        "test": true,
                        "usage": "The element should be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "datetimepicker": {
        "component": "datetimepicker",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-datetimepicker-role",
                        "test": true,
                        "usage": "The input element should follow the `combobox` specification.",
                        "value": "combobox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-datetimepicker-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "multiple": true,
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-datetimepicker-haspopup",
                        "test": true,
                        "usage": "Indicates the component has a Dialog Popup.",
                        "value": "grid",
                        "attribute": "aria-haspopup"
                    },
                    {
                        "id": "k-datetimepicker-expanded",
                        "test": true,
                        "usage": "Announces whether the Popup is visible or not.",
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ]
                    },
                    {
                        "id": "k-datetimepicker-controls",
                        "test": true,
                        "usage": "Points to the popup element. Signifies that the `combobox` element controls the Calendar `grid`.",
                        "value": ".k-calendar-container id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-datetimepicker-activedescendent",
                        "test": true,
                        "usage": "Points to the focused item (date/month/year/hour/minute) in the Calendar Popup or the Time Popup. Should only be present when the Popup is open.",
                        "value": ".k-calendar-td id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-datetimepicker-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the DateTimePicker is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ]
                    },
                    {
                        "id": "k-datetimepicker-readonly",
                        "test": true,
                        "usage": "Attribute is rendered only when the DateTimePicker is readonly.",
                        "when": "readonly",
                        "multiple": true,
                        "attribute": [
                            "readonly",
                            "aria-readonly"
                        ],
                        "value": "true"
                    },
                    {
                        "id": "k-datetimepicker-tabindex",
                        "test": true,
                        "usage": "The element should be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-input-button",
                "checks": [
                    {
                        "selector": ".k-input-button",
                        "id": "k-datetimepicker-arrow-role",
                        "test": true,
                        "usage": "The element should either be a `<button>` element or should have `role=\"button\"` assigned.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-datetimepicker-arrow-label",
                        "test": true,
                        "usage": "The button needs an accessible name to be assigned to it.",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-datetimepicker-arrow-tabindex",
                        "test": true,
                        "usage": "Button element should not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "dialog": {
        "component": "dialog",
        "rules": [
            {
                "selector": ".k-dialog",
                "checks": [
                    {
                        "selector": ".k-dialog",
                        "id": "k-dialog-role",
                        "test": true,
                        "usage": "Announces the dialog role of the component.",
                        "value": "dialog",
                        "attribute": "role"
                    },
                    {
                        "id": "k-dialog-label",
                        "test": true,
                        "usage": "Associate the title of the dialog.",
                        "value": ".k-dialog-titlebar id",
                        "attribute": "aria-labelledby"
                    },
                    {
                        "id": "k-dialog-describedby",
                        "test": true,
                        "usage": "Associate the dialog content to the wrap element.",
                        "value": ".k-dialog-content id",
                        "attribute": "aria-describedby"
                    },
                    {
                        "id": "k-dialog-modal",
                        "test": true,
                        "when": "model",
                        "usage": "Announces that the dialog is modal. Attribute is added only when the dialog is modal.",
                        "value": "true",
                        "attribute": "aria-modal"
                    }
                ]
            },
            {
                "selector": ".k-dialog.k-prompt,.k-dialog.k-alert,.k-dialog.k-confirm",
                "checks": [
                    {
                        "selector": ".k-dialog.k-prompt,.k-dialog.k-alert,.k-dialog.k-confirm",
                        "id": "k-dialog-predefined-role",
                        "test": true,
                        "usage": "Announces the dialog role of the component.",
                        "value": "alertdialog",
                        "attribute": "role"
                    }
                ]
            }
        ]
    },
    "dropdownbutton": {
        "component": "dropdownbutton",
        "rules": [
            {
                "selector": ".k-menu-button",
                "checks": [
                    {
                        "selector": ".k-menu-button",
                        "id": "k-dropdownbutton-role",
                        "test": true,
                        "usage": "Or omitted if `<button>` DOM element is used.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-dropdownbutton-label",
                        "test": true,
                        "usage": "The attribute must be present when no text is initially visible on the button.",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-dropdownbutton-expanded",
                        "test": true,
                        "usage": "Announces the state of the visibility of the popup.",
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ]
                    },
                    {
                        "id": "k-dropdownbutton-haspopup",
                        "test": true,
                        "usage": "Indicates the presence of a menu popup.",
                        "value": "menu",
                        "attribute": "aria-haspopup"
                    },
                    {
                        "id": "k-dropdownbutton-controls",
                        "test": true,
                        "usage": "Points to the popup element. Builds relationship between the button and the popup.",
                        "value": ".k-menu-group id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-dropdownbutton-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Rendered only when the button is disabled and the `disabled` attribute could not be used (applicable for `<button>` or `<input type=\"button\">` elements).",
                        "value": "true",
                        "attribute": "aria-disabled"
                    }
                ]
            },
            {
                "selector": ".k-menu-group",
                "checks": [
                    {
                        "selector": ".k-menu-group",
                        "id": "k-dropdownbutton-menu-role",
                        "test": true,
                        "usage": "Announces the menu role of the popup.",
                        "value": "menu",
                        "attribute": "role"
                    },
                    {
                        "id": "k-dropdownbutton-menu-label",
                        "test": true,
                        "usage": "Points to Button element.",
                        "value": ".k-menu-button id",
                        "attribute": "aria-labelledby"
                    }
                ]
            },
            {
                "selector": ".k-menu-item",
                "checks": [
                    {
                        "selector": ".k-menu-item",
                        "id": "k-dropdownbutton-item-role",
                        "test": true,
                        "usage": "Announces the menuitem role of the popup items.",
                        "value": "menuitem",
                        "attribute": "role"
                    }
                ]
            }
        ]
    },
    "dropdownlist": {
        "component": "dropdownlist",
        "rules": [
            {
                "selector": ".k-dropdownlist",
                "checks": [
                    {
                        "selector": ".k-dropdownlist",
                        "id": "k-dropdownlist-role",
                        "test": true,
                        "usage": "Announces the button dropdown element.",
                        "value": "combobox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-dropdownlist-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "multiple": true,
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-dropdownlist-expanded",
                        "test": true,
                        "usage": "Announces the state of the visibility of the popup.",
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ]
                    },
                    {
                        "id": "k-dropdownlist-controls",
                        "test": true,
                        "usage": "Points to the popup element. Signifies that the `combobox` element controls the `listbox`.",
                        "value": ".k-list-ul id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-dropdownlist-describedby",
                        "test": true,
                        "usage": "Announces the selected value of the dropdown.",
                        "value": ".k-input-inner id",
                        "attribute": "aria-describedby"
                    },
                    {
                        "id": "k-dropdownlist-activedescendent",
                        "test": true,
                        "when": "open",
                        "usage": "Points to the focused item in the popup. The focused item is changed via keyboard navigation. If the popup is not visible, the attribute should not point to any element or should be removed.",
                        "value": ".k-list-item id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-dropdownlist-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the dropdown is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-dropdownlist-readonly",
                        "test": true,
                        "when": "readonly",
                        "usage": "Attribute is rendered only when the dropdown is readonly.",
                        "value": "true",
                        "attribute": "aria-readonly"
                    },
                    {
                        "id": "k-dropdownlist-busy",
                        "test": true,
                        "when": "loading",
                        "usage": "Attribute is rendered only when the dropdown is loading data.",
                        "value": "true",
                        "attribute": "aria-busy"
                    },
                    {
                        "id": "k-dropdownlist-tabindex",
                        "test": true,
                        "usage": "The element should be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-input-button",
                "checks": [
                    {
                        "selector": ".k-input-button",
                        "id": "k-dropdownlist-arrow-role",
                        "test": true,
                        "usage": "The element should either be a `<button>` element or should have `role=\"button\"` assigned.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-dropdownlist-arrow-label",
                        "test": true,
                        "usage": "The button needs an accessible name to be assigned to it.",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-dropdownlist-arrow-tabindex",
                        "test": true,
                        "usage": "Button element should not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-list-filter>.k-searchbox>.k-input-inner",
                "checks": [
                    {
                        "selector": ".k-list-filter>.k-searchbox>.k-input-inner",
                        "id": "k-dropdownlist-filter-role",
                        "test": true,
                        "usage": "Announces the searchbox capability of the input.",
                        "value": "searchbox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-dropdownlist-filter-label",
                        "test": true,
                        "usage": "Points to search label.",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-dropdownlist-filter-activedescendent",
                        "test": true,
                        "when": "open",
                        "usage": "Points to the focused item. Either an item from the popup.",
                        "value": ".k-list-item.k-selected id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-dropdownlist-filter-autocomplete",
                        "test": true,
                        "usage": "Indicates the list filtering capabilities of the select.",
                        "value": "list",
                        "attribute": "aria-autocomplete"
                    },
                    {
                        "id": "k-dropdownlist-filter-controls",
                        "test": true,
                        "usage": "Points to the popup element. Builds relationship between the input and the popup.",
                        "value": ".k-list-ul id",
                        "attribute": "aria-controls"
                    }
                ]
            },
            {
                "selector": ".k-list-ul",
                "checks": [
                    {
                        "selector": ".k-list-ul",
                        "test": true,
                        "id": "k-popuplist-ul-live",
                        "attribute": "aria-live",
                        "value": [
                            "polite",
                            "off"
                        ],
                        "usage": "Assures the live updates on the selected value of the popup."
                    }
                ]
            },
            {
                "selector": ".k-animation-container",
                "checks": [
                    {
                        "selector": ".k-animation-container",
                        "test": true,
                        "id": "k-popuplist-role",
                        "attribute": "role",
                        "value": "region",
                        "usage": "When the component container is appended to the `<body>` element of the document, it needs a landmark role to be assigned to it. Otherwise, it should be appended to an element with an appropriate landmark role."
                    },
                    {
                        "test": true,
                        "id": "k-popuplist-label",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ],
                        "usage": "Provides a label when the container has a `region` role assigned."
                    }
                ]
            },
            {
                "selector": ".k-list-ul",
                "checks": [
                    {
                        "selector": ".k-list-ul",
                        "test": true,
                        "id": "k-popuplist-ul-role",
                        "attribute": "role",
                        "value": "listbox",
                        "usage": "Identifies the ul element as a listbox."
                    }
                ]
            },
            {
                "selector": ".k-list-item",
                "checks": [
                    {
                        "selector": ".k-list-item",
                        "test": true,
                        "id": "k-popuplist-item-role",
                        "attribute": "role",
                        "value": "option",
                        "usage": "Identifies the li element as a listbox option."
                    }
                ]
            },
            {
                "selector": ".k-list-item.k-selected",
                "checks": [
                    {
                        "selector": ".k-list-item.k-selected",
                        "test": true,
                        "id": "k-popuplist-item-selected",
                        "attribute": "aria-selected",
                        "value": "true",
                        "usage": "Indicates the selected state of the item."
                    }
                ]
            }
        ]
    },
    "editor": {
        "component": "editor",
        "rules": [
            {
                "selector": "div[contenteditable='true']",
                "checks": [
                    {
                        "selector": "div[contenteditable='true']",
                        "id": "k-editor-role",
                        "test": true,
                        "usage": "Specifies the role of the component as text input.",
                        "value": "textbox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-editor-label",
                        "test": true,
                        "usage": "The component focusable element needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    }
                ]
            }
        ]
    },
    "filter": {
        "component": "filter",
        "rules": [
            {
                "selector": ".k-filter-container",
                "checks": [
                    {
                        "selector": ".k-filter-container",
                        "id": "k-filter-role",
                        "test": true,
                        "usage": "Describes the hierarchical structure of the Filter component.",
                        "value": "tree",
                        "attribute": "role"
                    },
                    {
                        "id": "k-filter-label",
                        "test": true,
                        "usage": "Specifies a label for the Filter component.",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-filter-group-main,.k-filter-item",
                "checks": [
                    {
                        "selector": ".k-filter-group-main,.k-filter-item",
                        "id": "k-filter-item-role",
                        "test": true,
                        "usage": "Each FilterGroup and FilterExpression represent a separate `treeitem` in the Filter component structure.",
                        "value": "treeitem",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-filter-lines",
                "checks": [
                    {
                        "selector": ".k-filter-lines",
                        "id": "k-filter-group-role",
                        "test": true,
                        "usage": "Represents a group if items in the Filter component.",
                        "value": "group",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-toolbar",
                "checks": [
                    {
                        "selector": ".k-toolbar",
                        "id": "k-filter-toolbar-role",
                        "test": true,
                        "usage": "The role represents a collection of tools.",
                        "value": "toolbar",
                        "attribute": "role"
                    },
                    {
                        "id": "k-filter-toolbar-label",
                        "test": true,
                        "usage": "Specifies a label for the toolbar.",
                        "attribute": "aria-label"
                    }
                ]
            }
        ]
    },
    "flatcolorpicker": {
        "component": "flatcolorpicker",
        "rules": [
            {
                "selector": ".k-flatcolorpicker",
                "checks": [
                    {
                        "selector": ".k-flatcolorpicker",
                        "id": "k-flatcolorpicker-role",
                        "test": true,
                        "usage": "The focusable wrapper of the component should be considered a `textbox`. That signifies it has a value that could be submitted.",
                        "value": "textbox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-flatcolorpicker-label",
                        "test": true,
                        "usage": "The component needs an accessible name to be assigned to it. Must also include the currently selected value in the component.",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-flatcolorpicker-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the ColorPalette is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-flatcolorpicker-tabindex",
                        "test": true,
                        "usage": "The element must be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-colorgradient",
                "checks": [
                    {
                        "selector": ".k-colorgradient",
                        "id": "k-flatcolorpicker-colorgradient-role",
                        "test": true,
                        "usage": "The ColorGradient element must have its role removed.",
                        "attribute": "role",
                        "value": [
                            "none",
                            "undefined"
                        ]
                    },
                    {
                        "id": "k-flatcolorpicker-colorgradient-label",
                        "test": true,
                        "usage": "The ColorGradient element must have its `aria-label` attribute removed.",
                        "attribute": "aria-label",
                        "value": "undefined"
                    },
                    {
                        "id": "k-flatcolorpicker-colorgradient-tabindex",
                        "test": true,
                        "usage": "The ColorGradient must be removed from the page tab sequence.",
                        "attribute": "tabindex",
                        "value": [
                            "-1",
                            "undefined"
                        ]
                    }
                ]
            }
        ]
    },
    "floatingactionbutton": {
        "component": "floatingactionbutton",
        "rules": [
            {
                "selector": ".k-fab",
                "checks": [
                    {
                        "selector": ".k-fab",
                        "id": "k-fab-role",
                        "test": true,
                        "usage": "Or omitted if `<button>` DOM element is used.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-fab-label",
                        "test": true,
                        "usage": "The attribute must be present when no text is initially visible on the button.",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-fab-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Rendered only when the button is disabled and the `disabled` attribute could not be used (applicable for `<button>` or `<input type=\"button\">` elements).",
                        "value": "true",
                        "attribute": "aria-disabled"
                    }
                ]
            }
        ]
    },
    "grid": {
        "component": "grid",
        "rules": [
            {
                "selector": ".k-grid-toolbar",
                "checks": [
                    {
                        "selector": ".k-grid-toolbar",
                        "test": true,
                        "id": "k-grid-toolbar-role",
                        "attribute": "role",
                        "value": "toolbar",
                        "usage": "The toolbar is a collection of command buttons and inputs."
                    },
                    {
                        "test": true,
                        "id": "k-grid-toolbar-label",
                        "attribute": "aria-label",
                        "usage": "Clarifies the purpose of the toolbar."
                    },
                    {
                        "test": true,
                        "id": "k-grid-toolbar-controls",
                        "attribute": "aria-controls",
                        "value": ".k-grid-aria-root id",
                        "usage": "Pointing to the id of the element with `role=grid`."
                    }
                ]
            },
            {
                "selector": ".k-grouping-header",
                "checks": [
                    {
                        "selector": ".k-grouping-header",
                        "test": true,
                        "id": "k-grid-grouping-header-role",
                        "attribute": "role",
                        "value": "toolbar",
                        "usage": "The Grouping header is a ToolBar (collection of buttons)."
                    },
                    {
                        "test": true,
                        "id": "k-grid-grouping-header-label",
                        "attribute": "aria-label",
                        "usage": "Clarifies the purpose of the header."
                    },
                    {
                        "test": true,
                        "id": "k-grid-grouping-header-controls",
                        "attribute": "aria-controls",
                        "value": ".k-grid-aria-root id",
                        "usage": "Pointing to the id of the element with `role=grid`."
                    }
                ]
            },
            {
                "selector": ".k-group-indicator",
                "checks": [
                    {
                        "selector": ".k-group-indicator",
                        "test": true,
                        "id": "k-grid-grouping-indicator-role",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ],
                        "usage": "If the element used is not `<button>`, then the role must be specified."
                    },
                    {
                        "test": true,
                        "id": "k-grid-grouping-indicator-title",
                        "when": "sortable",
                        "attribute": "title",
                        "usage": "Present on the element or its child if sorting is enabled for that field."
                    }
                ]
            },
            {
                "selector": ".k-group-indicator .k-icon-button",
                "checks": [
                    {
                        "selector": ".k-group-indicator .k-icon-button",
                        "test": true,
                        "id": "k-grid-grouping-indicator-delete-role",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ],
                        "usage": "If the element used is not `<button>`, then the role must be specified."
                    },
                    {
                        "test": true,
                        "id": "k-grid-grouping-indicator-delete-label",
                        "attribute": "aria-label",
                        "usage": "Specifies the purpose of the button."
                    },
                    {
                        "test": true,
                        "id": "k-grid-grouping-indicator-delete-tabindex",
                        "attribute": "tabindex",
                        "usage": "The indicator delete button must not be part of the page tab sequence.",
                        "value": "-1"
                    }
                ]
            },
            {
                "selector": ".k-grid-aria-root",
                "checks": [
                    {
                        "selector": ".k-grid-aria-root",
                        "test": true,
                        "id": "k-grid-role",
                        "attribute": "role",
                        "value": "grid",
                        "usage": "The role specifies the element is a Data Grid."
                    },
                    {
                        "test": true,
                        "id": "k-grid-colcount",
                        "when": "virtualColumns",
                        "attribute": "aria-colcount",
                        "usage": "The total number of columns in the Grid. Needed only for Virtual columns and Hidden columns scenarios, when not all columns are rendered in the DOM. If the total number of columns is unknown, the value of `aria-colcount` must be set to -1."
                    },
                    {
                        "test": true,
                        "id": "k-grid-rowcount",
                        "when": [
                            "paging",
                            "virtual",
                            "masterDetail"
                        ],
                        "attribute": "aria-rowcount",
                        "usage": "The total number of rows in the table (header rows + master rows + detail rows + data rows + footer rows + aggregates rows). Needed only when Paging (and more that 1 page is present in the component), Virtual rows, or Master/Detail rows (Hierarchical Grid, Detail Template Grid) are enabled. If data is also Grouped, the proper number of all rows could not be calculated. In that case the value must be set to -1."
                    }
                ]
            },
            {
                "selector": ".k-grid-header-wrap>table",
                "checks": [
                    {
                        "selector": ".k-grid-header-wrap>table",
                        "test": true,
                        "id": "k-grid-header-role",
                        "attribute": "role",
                        "value": [
                            "presentation",
                            "none"
                        ],
                        "usage": "Negates the default semantic role of the `<table>` element."
                    }
                ]
            },
            {
                "selector": ".k-grid-header-wrap>table>thead",
                "checks": [
                    {
                        "selector": ".k-grid-header-wrap>table>thead",
                        "test": true,
                        "id": "k-grid-header-thead-role",
                        "attribute": "role",
                        "value": "rowgroup",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    }
                ]
            },
            {
                "selector": ".k-grid-header-wrap>table>thead>tr",
                "checks": [
                    {
                        "selector": ".k-grid-header-wrap>table>thead>tr",
                        "test": true,
                        "id": "k-grid-header-tr-role",
                        "attribute": "role",
                        "value": "row",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    },
                    {
                        "test": true,
                        "id": "k-grid-header-tr-rowindex",
                        "when": [
                            "paging",
                            "virtual",
                            "masterDetail"
                        ],
                        "attribute": "aria-rowindex",
                        "usage": "Row number including all headers, data (including master and detail) rows, and footers starting from 1. Needed only when Paging (and more that 1 page is present in the component), Virtual rows, or Master/Detail rows (Hierarchical Grid, Detail Template Grid) are enabled. If data is also Grouped, the proper indexing could not be calculated. Hence, the attribute must not be set."
                    }
                ]
            },
            {
                "selector": ".k-grid-header-wrap>table>thead>tr>th",
                "checks": [
                    {
                        "selector": ".k-grid-header-wrap>table>thead>tr>th",
                        "test": true,
                        "id": "k-grid-header-th-role",
                        "attribute": "role",
                        "value": "columnheader",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    },
                    {
                        "test": true,
                        "id": "k-grid-header-th-sort",
                        "when": "sortable",
                        "attribute": "aria-sort",
                        "value": [
                            "none",
                            "ascending",
                            "descending"
                        ],
                        "usage": "Present if sorting is enabled for that column."
                    },
                    {
                        "test": true,
                        "id": "k-grid-header-th-label",
                        "multiple": true,
                        "attribute": [
                            "title",
                            "aria-label"
                        ],
                        "usage": "Present on the element or its child if sorting is enabled for that field."
                    },
                    {
                        "test": true,
                        "id": "k-grid-header-th-colindex",
                        "when": "virtualColumns",
                        "attribute": "aria-colindex",
                        "usage": "Col number, based on leaf columns, starting from 1. Needed only for Virtual columns and Hidden columns scenarios, when not all columns are rendered in the DOM. Otherwise, can be interpreted from the DOM structure. Can be calculated by summing previous columns colspans."
                    },
                    {
                        "test": true,
                        "id": "k-grid-header-th-haspopup-menu",
                        "when": "columnMenu",
                        "attribute": "aria-haspopup",
                        "value": "menu",
                        "usage": "The attribute must be present if the column has a ColumnMenu."
                    },
                    {
                        "test": true,
                        "id": "k-grid-header-th-haspopup-dialog",
                        "when": "filterMenu",
                        "attribute": "aria-haspopup",
                        "value": "dialog",
                        "usage": "The attribute must be present if the column has a FilterMenu and no ColumnMenu."
                    }
                ]
            },
            {
                "selector": ".k-grid-header-wrap>table>thead>tr.k-filter-row>td",
                "checks": [
                    {
                        "selector": ".k-grid-header-wrap>table>thead>tr.k-filter-row>td",
                        "test": true,
                        "id": "k-grid-filterrow-role",
                        "attribute": "role",
                        "value": "gridcell",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    },
                    {
                        "test": true,
                        "id": "k-grid-filterrow-label",
                        "attribute": "aria-label",
                        "usage": "Has a label indicating that the cell is part of a filter row."
                    }
                ]
            },
            {
                "selector": ".k-grid-content>table",
                "checks": [
                    {
                        "selector": ".k-grid-content>table",
                        "test": true,
                        "id": "k-grid-content-role",
                        "attribute": "role",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "usage": "Negates the default semantic role of the `<table>` element."
                    }
                ]
            },
            {
                "selector": ".k-grid-content>table>tbody",
                "checks": [
                    {
                        "selector": ".k-grid-content>table>tbody",
                        "test": true,
                        "id": "k-grid-content-tbody-role",
                        "attribute": "role",
                        "value": "rowgroup",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    }
                ]
            },
            {
                "selector": ".k-grid-content>table>tbody>tr",
                "checks": [
                    {
                        "selector": ".k-grid-content>table>tbody>tr",
                        "test": true,
                        "id": "k-grid-content-tr-role",
                        "attribute": "role",
                        "value": "row",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    },
                    {
                        "test": true,
                        "id": "k-grid-content-tr-rowindex",
                        "when": [
                            "paging",
                            "virtual",
                            "masterDetail"
                        ],
                        "attribute": "aria-rowindex",
                        "usage": "Row number including all headers, data (including master and detail) rows, and footers starting from 1. Needed only when Paging (and more that 1 page is present in the component), Virtual rows, or Master/Detail rows (Hierarchical Grid, Detail Template Grid) are enabled. If data is also Grouped, the proper indexing could not be calculated. Hence, the attribute must not be set. In scenarios when master and detail rows are present in the Grid (Hierarchical Grid, Detail Template Grid), both master and detail rows must always be indexed. For example, if the first master row has `aria-rowindex=2`, even if its detail row is not present in the DOM, the next master row must have `aria-rowindex=4`. When rendered, the detail row must receive the missing index between the two master rows. In this example it would be `aria-rowindex=3`."
                    },
                    {
                        "test": true,
                        "id": "k-grid-content-tr-selected",
                        "when": "selected",
                        "attribute": "aria-selected",
                        "value": "true",
                        "usage": "Set on the currently selected row(s). Only used wen selection mode is set to `row`."
                    }
                ]
            },
            {
                "selector": ".k-grid-content>table>tbody>tr>td",
                "checks": [
                    {
                        "selector": ".k-grid-content>table>tbody>tr>td",
                        "test": true,
                        "id": "k-grid-content-td-role",
                        "attribute": "role",
                        "value": "gridcell",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    },
                    {
                        "test": true,
                        "id": "k-grid-content-td-colindex",
                        "when": "virtualColumns",
                        "attribute": "aria-colindex",
                        "usage": "Col number, based on leaf columns, starting from 1. Needed only for Virtual columns and Hidden columns scenarios, when not all columns are rendered in the DOM. Otherwise, can be interpreted from the DOM structure. Can be calculated by summing previous columns colspans."
                    },
                    {
                        "test": true,
                        "id": "k-grid-content-td-selected",
                        "when": "selected",
                        "attribute": "aria-selected",
                        "value": "true",
                        "usage": "Set on the currently selected cell(s). Only used when selection mode is set to cell."
                    },
                    {
                        "test": true,
                        "id": "k-grid-content-td-expanded",
                        "when": [
                            "masterRow",
                            "group"
                        ],
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ],
                        "usage": "Optionally for cells holding grouping criteria values and for Master row cells in Detail template scenario."
                    },
                    {
                        "test": true,
                        "id": "k-grid-content-td-label",
                        "when": "dragHandle",
                        "attribute": "aria-label",
                        "usage": "Must be present in a Drag Row scenario on the cell containing the drag handle."
                    }
                ]
            },
            {
                "selector": "tfoot",
                "checks": [
                    {
                        "selector": "tfoot",
                        "test": true,
                        "id": "k-grid-footer-tfoot-role",
                        "attribute": "role",
                        "value": "rowgroup",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    }
                ]
            },
            {
                "selector": "tfoot>tr",
                "checks": [
                    {
                        "selector": "tfoot>tr",
                        "test": true,
                        "id": "k-grid-footer-tr-role",
                        "attribute": "role",
                        "value": "row",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    },
                    {
                        "test": true,
                        "id": "k-grid-footer-tr-rowindex",
                        "when": [
                            "paging",
                            "virtual",
                            "masterDetail"
                        ],
                        "attribute": "aria-rowindex",
                        "usage": "Row number including all headers, data (including master and detail) rows, and footers starting from 1. Footer rows are always the last ones in a Grid. Needed only when Paging (and more that 1 page is present in the component), Virtual rows, or Master/Detail rows (Hierarchical Grid, Detail Template Grid) are enabled. If data is also Grouped, the proper indexing could not be calculated. Hence, the attribute must not be set."
                    }
                ]
            },
            {
                "selector": "tfoot>tr>td",
                "checks": [
                    {
                        "selector": "tfoot>tr>td",
                        "test": true,
                        "id": "k-grid-footer-td-role",
                        "attribute": "role",
                        "value": "gridcell",
                        "usage": "Required as the owner `<table>` element has its semantic role removed."
                    },
                    {
                        "test": true,
                        "id": "k-grid-footer-td-colindex",
                        "when": "virtualColumns",
                        "attribute": "aria-colindex",
                        "usage": "Col number, based on leaf columns, starting from 1. Needed only for Virtual columns and Hidden columns scenarios, when not all columns are rendered in the DOM. Otherwise, can be interpreted from the DOM structure. Can be calculated by summing previous columns colspans."
                    }
                ]
            }
        ]
    },
    "infinitecalendar": {
        "component": "infinitecalendar",
        "rules": [
            {
                "selector": ".k-calendar",
                "checks": [
                    {
                        "selector": ".k-calendar",
                        "id": "k-infinitecalendar-role",
                        "test": true,
                        "usage": "Specifies the role of the Calendar wrapper.",
                        "value": "grid",
                        "attribute": "role"
                    },
                    {
                        "id": "k-infinitecalendar-label",
                        "test": true,
                        "usage": "Pointing to the current view `k-calendar-title` element (e.g. `March 2022` or `2020-2029`).",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-infinitecalendar-activedescendant",
                        "test": true,
                        "usage": "Pointing to the currently active (focused) date/month/year/decade cell in the tables.",
                        "attribute": "aria-activedescendant",
                        "value": ".k-calendar-td id"
                    },
                    {
                        "id": "k-infinitecalendar-tabindex",
                        "test": true,
                        "usage": "Makes the grid focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-calendar-table",
                "checks": [
                    {
                        "selector": ".k-calendar-table",
                        "id": "k-infinitecalendar-table-role",
                        "test": true,
                        "usage": "All `k-calendar-table` elements must have their role set to `none`. That is because their content must be made belonging to a single `grid` component.",
                        "value": "none",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-calendar-thead",
                "checks": [
                    {
                        "selector": ".k-calendar-thead",
                        "id": "k-infinitecalendar-thead-role",
                        "test": true,
                        "usage": "The `k-calendar-thead` must explicitly have its role set to `rowgroup` as its semantics have been removed while setting its `<table>` role to `none`.",
                        "value": "rowgroup",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-calendar-tbody",
                "checks": [
                    {
                        "selector": ".k-calendar-tbody",
                        "id": "k-infinitecalendar-tbody-role",
                        "test": true,
                        "usage": "The `k-calendar-tbody` elements must explicitly have their roles set to `rowgroup` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "rowgroup",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-calendar-tr",
                "checks": [
                    {
                        "selector": ".k-calendar-tr",
                        "id": "k-infinitecalendar-tr-role",
                        "test": true,
                        "usage": "The `k-calendar-tr` elements must explicitly have their roles set to `row` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "row",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-calendar-th",
                "checks": [
                    {
                        "selector": ".k-calendar-th",
                        "id": "k-infinitecalendar-th-role",
                        "test": true,
                        "usage": "The `k-calendar-th` elements must explicitly have their roles set to `columnheader` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "columnheader",
                        "attribute": "role"
                    },
                    {
                        "id": "k-infinitecalendar-th-scope",
                        "test": true,
                        "usage": "Specifies that the header is applied to a column.",
                        "value": "col",
                        "attribute": "scope"
                    },
                    {
                        "id": "k-infinitecalendar-th-label",
                        "test": true,
                        "usage": "Specifies the full name of the day of the week (the column header).",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-calendar-caption",
                "checks": [
                    {
                        "selector": ".k-calendar-caption",
                        "id": "k-infinitecalendar-caption-role",
                        "test": true,
                        "usage": "The `k-calendar-caption` elements must explicitly have their roles set to `columnheader` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "columnheader",
                        "attribute": "role"
                    },
                    {
                        "id": "k-infinitecalendar-caption-scope",
                        "test": true,
                        "usage": "Specifies that the header is applied to a column.",
                        "value": "col",
                        "attribute": "scope"
                    }
                ]
            },
            {
                "selector": ".k-calendar-td",
                "checks": [
                    {
                        "selector": ".k-calendar-td",
                        "id": "k-infinitecalendar-td-role",
                        "test": true,
                        "usage": "The cells must explicitly have their roles set to `gridcell` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "gridcell",
                        "attribute": "role"
                    },
                    {
                        "id": "k-infinitecalendar-td-selected",
                        "test": true,
                        "when": "selected",
                        "usage": "Specifies whether the date is selected or not.",
                        "attribute": "aria-selected"
                    },
                    {
                        "id": "k-infinitecalendar-td-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "When a date is not available for selection, its gridcell element must have the attribute set to `true`.",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-infinitecalendar-td-label",
                        "test": true,
                        "when": "yearView",
                        "usage": "Applicable in year view - for better context contains the full name of the month. May also be applied in month view to specify the full text for a date.",
                        "multiple": true,
                        "attribute": [
                            "aria-label ",
                            "title"
                        ]
                    }
                ]
            },
            {
                "selector": ".k-prev-view,.k-next-view",
                "checks": [
                    {
                        "selector": ".k-prev-view,.k-next-view",
                        "id": "k-infinitecalendar-arrows-tabindex",
                        "test": true,
                        "usage": "The buttons must not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-calendar-title",
                "checks": [
                    {
                        "selector": ".k-calendar-title",
                        "id": "k-infinitecalendar-title-tabindex",
                        "test": true,
                        "usage": "The button must not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-nav-today",
                "checks": [
                    {
                        "selector": ".k-nav-today",
                        "id": "k-infinitecalendar-today-tabindex",
                        "test": true,
                        "usage": "The link must not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "maskedtextbox": {
        "component": "maskedtextbox",
        "rules": [
            {
                "selector": "k-input-inner",
                "checks": [
                    {
                        "selector": "k-input-inner",
                        "id": "k-maskedtextbox-role",
                        "test": true,
                        "usage": "Specifies the role of the component. Not required if `<input type=text`> is used.",
                        "attribute": [
                            "role=textbox",
                            "type=text"
                        ]
                    },
                    {
                        "id": "k-maskedtextbox-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-maskedtextbox-placeholder",
                        "test": true,
                        "usage": "Announces the mask/placeolder for the component.",
                        "attribute": "aria-placeholder"
                    },
                    {
                        "id": "k-maskedtextbox-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the maskedtextbox is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ]
                    }
                ]
            }
        ]
    },
    "multiselect": {
        "component": "multiselect",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-multiselect-role",
                        "test": true,
                        "usage": "Announces the presence of a combobox as inner element of the multiselect used for filtering.",
                        "value": "combobox",
                        "attribute": "role"
                    },
                    {
                        "id": "k-multiselect-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "multiple": true,
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-multiselect-expanded",
                        "test": true,
                        "usage": "Announces the state of the visibility of the popup.",
                        "attribute": "aria-expanded",
                        "value": [
                            "true",
                            "false"
                        ]
                    },
                    {
                        "id": "k-multiselect-controls",
                        "test": true,
                        "usage": "Points to the popup element. Signifies that the `combobox` element controls the `listbox`.",
                        "value": ".k-list-ul id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-multiselect-autocomplete",
                        "test": true,
                        "usage": "Attribute is rendered and value is set to list when **filtering** feature is enabled.",
                        "value": "list",
                        "attribute": "aria-autocomplete"
                    },
                    {
                        "id": "k-multiselect-describedby",
                        "test": true,
                        "usage": "Points to the taglist element that contains the selected items.",
                        "value": ".k-chip-list id",
                        "attribute": "aria-describedby"
                    },
                    {
                        "id": "k-multiselect-activedescendent",
                        "test": true,
                        "when": "open",
                        "usage": "Points to the focused item. Either an item from the popup, or a tag item from the selected items. The focused item is changed via keyboard navigation. If the focus is not currently on a tag item, and the popup is not visible, the attribute should not point to any element or should be removed.",
                        "value": ".k-list-item id",
                        "attribute": "aria-activedescendent"
                    },
                    {
                        "id": "k-multiselect-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the multiselect is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-multiselect-readonly",
                        "test": true,
                        "when": "readonly",
                        "usage": "Attribute is rendered only when the multiselect is readonly.",
                        "value": "true",
                        "attribute": "aria-readonly"
                    },
                    {
                        "id": "k-multiselect-busy",
                        "test": true,
                        "when": "loading",
                        "usage": "Attribute is rendered only when the multiselect is loading data.",
                        "value": "true",
                        "attribute": "aria-busy"
                    },
                    {
                        "id": "k-multiselect-tabindex",
                        "test": true,
                        "usage": "The element should be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-input-button",
                "checks": [
                    {
                        "selector": ".k-input-button",
                        "id": "k-multiselect-arrow-role",
                        "test": true,
                        "usage": "The element should either be a `<button>` element or should have `role=\"button\"` assigned.",
                        "value": "button",
                        "attribute": "role"
                    },
                    {
                        "id": "k-multiselect-arrow-label",
                        "test": true,
                        "usage": "The button needs an accessible name to be assigned to it.",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-multiselect-arrow-tabindex",
                        "test": true,
                        "usage": "Button element should not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-list-ul",
                "checks": [
                    {
                        "selector": ".k-list-ul",
                        "test": true,
                        "id": "k-popuplist-ul-multiselectable",
                        "attribute": "aria-multiselectable",
                        "value": "true",
                        "usage": "Announces multiselection of the listbox popup."
                    }
                ]
            },
            {
                "selector": ".k-animation-container",
                "checks": [
                    {
                        "selector": ".k-animation-container",
                        "test": true,
                        "id": "k-popuplist-role",
                        "attribute": "role",
                        "value": "region",
                        "usage": "When the component container is appended to the `<body>` element of the document, it needs a landmark role to be assigned to it. Otherwise, it should be appended to an element with an appropriate landmark role."
                    },
                    {
                        "test": true,
                        "id": "k-popuplist-label",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "aria-labelledby"
                        ],
                        "usage": "Provides a label when the container has a `region` role assigned."
                    }
                ]
            },
            {
                "selector": ".k-list-ul",
                "checks": [
                    {
                        "selector": ".k-list-ul",
                        "test": true,
                        "id": "k-popuplist-ul-role",
                        "attribute": "role",
                        "value": "listbox",
                        "usage": "Identifies the ul element as a listbox."
                    }
                ]
            },
            {
                "selector": ".k-list-item",
                "checks": [
                    {
                        "selector": ".k-list-item",
                        "test": true,
                        "id": "k-popuplist-item-role",
                        "attribute": "role",
                        "value": "option",
                        "usage": "Identifies the li element as a listbox option."
                    }
                ]
            },
            {
                "selector": ".k-list-item.k-selected",
                "checks": [
                    {
                        "selector": ".k-list-item.k-selected",
                        "test": true,
                        "id": "k-popuplist-item-selected",
                        "attribute": "aria-selected",
                        "value": "true",
                        "usage": "Indicates the selected state of the item."
                    }
                ]
            }
        ]
    },
    "multiviewcalendar": {
        "component": "multiviewcalendar",
        "rules": [
            {
                "selector": ".k-calendar-view",
                "checks": [
                    {
                        "selector": ".k-calendar-view",
                        "id": "k-multiviewcalendar-role",
                        "test": true,
                        "usage": "Specifies the role of the Calendar dates table.",
                        "value": "grid",
                        "attribute": "role"
                    },
                    {
                        "id": "k-multiviewcalendar-label",
                        "test": true,
                        "usage": "Pointing to the `k-calendar-title` element (e.g. `March 2022 - April 2022`).",
                        "attribute": "aria-labelledby"
                    },
                    {
                        "id": "k-multiviewcalendar-activedescendant",
                        "test": true,
                        "usage": "Pointing to the currently active (focused) date/month/year/decade cell in the table.",
                        "attribute": "aria-activedescendant"
                    },
                    {
                        "id": "k-multiviewcalendar-tabindex",
                        "test": true,
                        "usage": "Makes the grid focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-calendar-table",
                "checks": [
                    {
                        "selector": ".k-calendar-table",
                        "id": "k-multiviewcalendar-table-role",
                        "test": true,
                        "usage": "All `k-calendar-table` elements must have their role set to `none`. That is because their content must be made belonging to a single `grid` component.",
                        "value": "none",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-content:first-of-type>.k-calendar-head",
                "checks": [
                    {
                        "selector": ".k-content:first-of-type>.k-calendar-head",
                        "id": "k-multiviewcalendar-thead-role",
                        "test": true,
                        "usage": "The first `k-calendar-thead` must explicitly have its role set to `rowgroup` as its semantics has been removed while setting its `<table>` role to `none`.",
                        "value": "rowgroup",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-calendar-tbody",
                "checks": [
                    {
                        "selector": ".k-calendar-tbody",
                        "id": "k-multiviewcalendar-tbody-role",
                        "test": true,
                        "usage": "The `k-calendar-tbody` elements must explicitly have their roles set to `rowgroup` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "rowgroup",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-content:first-of-type>.k-calendar-head>.k-calendar-tr,.k-calendar-head>.k-calendar-tr",
                "checks": [
                    {
                        "selector": ".k-content:first-of-type>.k-calendar-head>.k-calendar-tr,.k-calendar-head>.k-calendar-tr",
                        "id": "k-multiviewcalendar-tr-role",
                        "test": true,
                        "usage": "The `k-calendar-tr` elements must explicitly have their roles set to `row` as their semantics have been removed while setting their `<table>` elements role to `none`. Does not apply for fully empty rows, header rows after the first month, and initial data rows in Month views after the first month that have at least one cell missing",
                        "value": "row",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-content:first-of-type>.k-calendar-head>.k-calendar-tr>.k-calendar-th",
                "checks": [
                    {
                        "selector": ".k-content:first-of-type>.k-calendar-head>.k-calendar-tr>.k-calendar-th",
                        "id": "k-multiviewcalendar-th-first-row-role",
                        "test": true,
                        "usage": "The `k-calendar-th` elements must explicitly have their roles set to `columnheader` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "columnheader",
                        "attribute": "role"
                    },
                    {
                        "id": "k-multiviewcalendar-th-first-row-scope",
                        "test": true,
                        "usage": "Specifies that the header is applied to a column.",
                        "value": "col",
                        "attribute": "scope"
                    },
                    {
                        "id": "k-multiviewcalendar-th-first-row-label",
                        "test": true,
                        "usage": "Specifies the full name of the day of the week (the column header).",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-calendar-td:not(.k-out-of-range)",
                "checks": [
                    {
                        "selector": ".k-calendar-td:not(.k-out-of-range)",
                        "id": "k-multiviewcalendar-td-role",
                        "test": true,
                        "usage": "The cells must explicitly have their roles set to `gridcell` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "gridcell",
                        "attribute": "role"
                    },
                    {
                        "id": "k-multiviewcalendar-td-selected",
                        "test": true,
                        "when": "selected",
                        "usage": "Specifies whether the date is selected or not.",
                        "attribute": "aria-selected"
                    },
                    {
                        "id": "k-multiviewcalendar-td-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "When a date is not available for selection, its gridcell element must have the attribute set to `true`.",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-multiviewcalendar-td-label",
                        "test": true,
                        "when": "yearView",
                        "usage": "Applicable in year view - for better context contains the full name of the month. May also be applied in month view to specify the full text for a date.",
                        "multiple": true,
                        "attribute": [
                            "aria-label ",
                            "title"
                        ]
                    }
                ]
            },
            {
                "selector": ".k-content:first-of-type>.k-calendar-tbody>.k-calendar-tr:first-of-type>.k-out-of-range",
                "checks": [
                    {
                        "selector": ".k-content:first-of-type>.k-calendar-tbody>.k-calendar-tr:first-of-type>.k-out-of-range",
                        "id": "k-multiviewcalendar-td-first-row-empty-role",
                        "test": true,
                        "usage": "The cells must explicitly have their roles set to `gridcell` as their semantics have been removed while setting their `<table>` elements role to `none`.",
                        "value": "gridcell",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-prev-view,.k-next-view",
                "checks": [
                    {
                        "selector": ".k-prev-view,.k-next-view",
                        "id": "k-multiviewcalendar-arrows-tabindex",
                        "test": true,
                        "usage": "The buttons must not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-calendar-title",
                "checks": [
                    {
                        "selector": ".k-calendar-title",
                        "id": "k-multiviewcalendar-title-tabindex",
                        "test": true,
                        "usage": "The button must not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-nav-today",
                "checks": [
                    {
                        "selector": ".k-nav-today",
                        "id": "k-multiviewcalendar-today-tabindex",
                        "test": true,
                        "usage": "The link must not be focusable.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "numerictextbox": {
        "component": "numerictextbox",
        "rules": [
            {
                "selector": "k-input-inner",
                "checks": [
                    {
                        "selector": "k-input-inner",
                        "id": "k-numerictextbox-role",
                        "test": true,
                        "usage": "Announces the spinbutton capabilities of the numerictextbox.",
                        "value": "spinbutton",
                        "attribute": "role"
                    },
                    {
                        "id": "k-numerictextbox-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-numerictextbox-valuenow",
                        "test": true,
                        "usage": "Announces the value for the component.",
                        "attribute": "aria-valuemnow"
                    },
                    {
                        "id": "k-numerictextbox-valuemin",
                        "test": true,
                        "usage": "Announces the minimum value allowed for the component.",
                        "attribute": "aria-valuemin"
                    },
                    {
                        "id": "k-numerictextbox-valuemax",
                        "test": true,
                        "usage": "Announces the maximum value allowed for the component.",
                        "attribute": "aria-valuemax"
                    },
                    {
                        "id": "k-numerictextbox-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the numerictextbox is disabled.",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ]
                    }
                ]
            },
            {
                "selector": ".k-spin-button>.k-button",
                "checks": [
                    {
                        "selector": ".k-spin-button>.k-button",
                        "id": "k-numerictextbox-spinbutton-role",
                        "test": true,
                        "usage": "Announces the spinbutton capabilities of the numerictextbox.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-numerictextbox-spinbutton-label",
                        "test": true,
                        "usage": "Button element must have discernible text.",
                        "attribute": "aria-label"
                    }
                ]
            }
        ]
    },
    "pager": {
        "component": "pager",
        "rules": [
            {
                "selector": ".k-pager-wrap",
                "checks": [
                    {
                        "selector": ".k-pager-wrap",
                        "id": "k-pager-role",
                        "test": true,
                        "usage": "Indicates that the Pager element has its own keyboard navigation implemented.",
                        "value": "application",
                        "attribute": "role"
                    },
                    {
                        "id": "k-pager-roledescription",
                        "test": true,
                        "usage": "Clarifies the role of the Pager.",
                        "value": "pager",
                        "attribute": "aria-roledescription"
                    },
                    {
                        "id": "k-pager-keyshortcuts",
                        "test": true,
                        "usage": "Announces the available keyboard shortcuts while the Pager element is focused.",
                        "value": "Enter ArrowRight ArrowLeft",
                        "attribute": "aria-keyshortcuts"
                    },
                    {
                        "id": "k-pager-label",
                        "test": true,
                        "usage": "Announces the currently selected page and the number of available pages.",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-pager-nav",
                "checks": [
                    {
                        "selector": ".k-pager-nav",
                        "id": "k-pager-nav-role",
                        "test": true,
                        "usage": "Specifies the role of the element.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-pager-nav-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Present when the arrow button is disabled (for example, present on the Previous button when the current page is the 1st one).",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-pager-nav-title",
                        "test": true,
                        "usage": "Specifies the purpose of each button.",
                        "attribute": "title"
                    }
                ]
            },
            {
                "selector": ".k-pager-numbers>.k-link",
                "checks": [
                    {
                        "selector": ".k-pager-numbers>.k-link",
                        "id": "k-pager-numbers-role",
                        "test": true,
                        "usage": "Specifies the role of the element.",
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ]
                    },
                    {
                        "id": "k-pager-numbers-label",
                        "test": true,
                        "usage": "Specifies the purpose of each link (for example \"Page 6\").",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "title"
                        ]
                    },
                    {
                        "id": "k-pager-numbers-current",
                        "test": true,
                        "usage": "The attribute must be present on the currently selected page element.",
                        "value": "page",
                        "attribute": "aria-current"
                    }
                ]
            },
            {
                "selector": ".k-pager-sizes>.k-dropdownlist",
                "checks": [
                    {
                        "selector": ".k-pager-sizes>.k-dropdownlist",
                        "id": "k-pager-sizes-label",
                        "test": true,
                        "usage": "The element needs an `aria-label` specifying its purpose.",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-pager-numbers-wrap>.k-dropdown",
                "checks": [
                    {
                        "selector": ".k-pager-numbers-wrap>.k-dropdown",
                        "id": "k-pager-select-label",
                        "test": true,
                        "usage": "The element needs an `aria-label` specifying its purpose.",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-pager-input>.k-input>.k-input-inner",
                "checks": [
                    {
                        "selector": ".k-pager-input>.k-input>.k-input-inner",
                        "id": "k-pager-input-label",
                        "test": true,
                        "usage": "The element needs an `aria-label` specifying its purpose.",
                        "attribute": "aria-label"
                    }
                ]
            }
        ]
    },
    "pivotgrid": {
        "component": "pivotgrid",
        "rules": [
            {
                "selector": ".k-pivotgrid",
                "checks": [
                    {
                        "selector": ".k-pivotgrid",
                        "id": "k-pivotgrid-role",
                        "test": true,
                        "usage": "The role specifies the element is a Data Grid.",
                        "value": "grid",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-column-headers>.k-pivotgrid-table",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-column-headers>.k-pivotgrid-table",
                        "id": "k-pivotgrid-header-table-role",
                        "test": true,
                        "usage": "Negates the default semantic role of the `<table>` element.",
                        "value": [
                            "presentation",
                            "none"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-column-headers>.k-pivotgrid-table>thead",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-column-headers>.k-pivotgrid-table>thead",
                        "id": "k-pivotgrid-header-thead-role",
                        "test": true,
                        "usage": "Required as the owner `<table>` element has its semantic role removed.",
                        "value": "rowgroup",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-column-headers>.k-pivotgrid-table>thead>.k-pivotgrid-row",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-column-headers>.k-pivotgrid-table>thead>.k-pivotgrid-row",
                        "id": "k-pivotgrid-header-tr-role",
                        "test": true,
                        "usage": "Required as the owner `<table>` element has its semantic role removed.",
                        "value": "row",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-column-headers>.k-pivotgrid-table>thead>.k-pivotgrid-row>th",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-column-headers>.k-pivotgrid-table>thead>.k-pivotgrid-row>th",
                        "id": "k-pivotgrid-header-th-role",
                        "test": true,
                        "usage": "Required as the owner `<table>` element has its semantic role removed.",
                        "value": "columnheader",
                        "attribute": "role"
                    },
                    {
                        "id": "k-pivotgrid-header-th-expanded",
                        "test": true,
                        "usage": "Indicates the current expanded state of the header.",
                        "value": [
                            "true",
                            "false"
                        ],
                        "attribute": "aria-expanded"
                    },
                    {
                        "id": "k-pivotgrid-header-th-id",
                        "test": true,
                        "usage": "Unique and deterministic identifier, used to associate the header cell with respective data cells.",
                        "attribute": "id"
                    }
                ]
            },
            {
                "selector": ".k-i-arrow-chevron-up",
                "checks": [
                    {
                        "selector": ".k-i-arrow-chevron-up",
                        "id": "k-pivotgrid-header-th-chevron-up-hidden",
                        "test": true,
                        "usage": "Excludes the collapse icon from the screen reader output.",
                        "value": "true",
                        "attribute": "aria-hidden"
                    }
                ]
            },
            {
                "selector": ".k-i-arrow-chevron-down",
                "checks": [
                    {
                        "selector": ".k-i-arrow-chevron-down",
                        "id": "k-pivotgrid-header-th-chevron-down-hidden",
                        "test": true,
                        "usage": "Excludes the expand icon from the screen reader output.",
                        "value": "true",
                        "attribute": "aria-hidden"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-row-headers>.k-pivotgrid-table",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-row-headers>.k-pivotgrid-table",
                        "id": "k-pivotgrid-rowheader-table-role",
                        "test": true,
                        "usage": "Negates the default semantic role of the `<table>` element.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-row-headers>.k-pivotgrid-table>thead",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-row-headers>.k-pivotgrid-table>thead",
                        "id": "k-pivotgrid-rowheader-thead-role",
                        "test": true,
                        "usage": "Required as the owner `<table>` element has its semantic role removed.",
                        "value": "rowgroup",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-row-headers>.k-pivotgrid-table>thead>.k-pivotgrid-row",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-row-headers>.k-pivotgrid-table>thead>.k-pivotgrid-row",
                        "id": "k-pivotgrid-rowheader-tr-role",
                        "test": true,
                        "usage": "Required as the owner `<table>` element has its semantic role removed.",
                        "value": "row",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-row-headers>.k-pivotgrid-table>thead>.k-pivotgrid-row>th",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-row-headers>.k-pivotgrid-table>thead>.k-pivotgrid-row>th",
                        "id": "k-pivotgrid-rowheader-th-role",
                        "test": true,
                        "usage": "Required as the owner `<table>` element has its semantic role removed.",
                        "value": "rowheader",
                        "attribute": "role"
                    },
                    {
                        "id": "k-pivotgrid-rowheader-th-expanded",
                        "test": true,
                        "usage": "Indicates the current expanded state of the header.",
                        "value": [
                            "true",
                            "false"
                        ],
                        "attribute": "aria-expanded"
                    }
                ]
            },
            {
                "selector": ".k-i-arrow-chevron-up",
                "checks": [
                    {
                        "selector": ".k-i-arrow-chevron-up",
                        "id": "k-pivotgrid-rowheader-chevron-up-hidden",
                        "test": true,
                        "usage": "Excludes the collapse icon from the screen reader output.",
                        "value": "true",
                        "attribute": "aria-hidden"
                    }
                ]
            },
            {
                "selector": ".k-i-arrow-chevron-down",
                "checks": [
                    {
                        "selector": ".k-i-arrow-chevron-down",
                        "id": "k-pivotgrid-rowheader-chevron-down-hidden",
                        "test": true,
                        "usage": "Excludes the expand icon from the screen reader output.",
                        "value": "true",
                        "attribute": "aria-hidden"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-values>.k-pivotgrid-table",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-values>.k-pivotgrid-table",
                        "id": "k-pivotgrid-data-table-role",
                        "test": true,
                        "usage": "Negates the default semantic role of the `<table>` element.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-values>.k-pivotgrid-table>tbody",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-values>.k-pivotgrid-table>tbody",
                        "id": "k-pivotgrid-data-tbody-role",
                        "test": true,
                        "usage": "The contained rows are associated with their headers through alternative mechanics.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-values>.k-pivotgrid-table>tbody>.k-pivotgrid-row",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-values>.k-pivotgrid-table>tbody>.k-pivotgrid-row",
                        "id": "k-pivotgrid-data-tr-role",
                        "test": true,
                        "usage": "The rows are associated with their headers through alternative mechanics.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-pivotgrid-values>.k-pivotgrid-table>tbody>.k-pivotgrid-row>td",
                "checks": [
                    {
                        "selector": ".k-pivotgrid-values>.k-pivotgrid-table>tbody>.k-pivotgrid-row>td",
                        "id": "k-pivotgrid-data-td-role",
                        "test": true,
                        "usage": "Required as the owner `<table>` element has its semantic role removed.",
                        "value": "gridcell",
                        "attribute": "role"
                    },
                    {
                        "id": "k-pivotgrid-data-td-id",
                        "test": true,
                        "usage": "Unique and deterministic identifier, used to associate the data cell with respective row header cells.",
                        "attribute": "id"
                    }
                ]
            }
        ]
    },
    "radiogroup": {
        "component": "radiogroup",
        "rules": [
            {
                "selector": "k-radio-list",
                "checks": [
                    {
                        "selector": "k-radio-list",
                        "id": "k-radiogroup-role",
                        "test": true,
                        "usage": "Announces the radiogroup role of the element.",
                        "value": "radiogroup",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-radio-item",
                "checks": [
                    {
                        "selector": ".k-radio-item",
                        "id": "k-radiogroup-item-role",
                        "test": true,
                        "usage": "Force no role due to nesting items issue.",
                        "value": "none",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-radio",
                "checks": [
                    {
                        "selector": ".k-radio",
                        "id": "k-radiogroup-radio-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the radio is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ]
                    }
                ]
            },
            {
                "selector": ".k-radio",
                "checks": [
                    {
                        "selector": ".k-radio",
                        "id": "k-radiogroup-radio-readonly",
                        "test": true,
                        "usage": "Attribute is rendered only when the radio is readonly.",
                        "when": "readonly",
                        "multiple": true,
                        "attribute": [
                            "readonly",
                            "aria-readonly"
                        ]
                    }
                ]
            }
        ]
    },
    "rangeslider": {
        "component": "rangeslider",
        "rules": [
            {
                "selector": ".k-draghandle",
                "checks": [
                    {
                        "selector": ".k-draghandle",
                        "id": "k-rangeslider-valuetext",
                        "test": true,
                        "usage": "Specifies the text that would be announced based on the currently selected values in both handle elements (e.g. `aria-valuetext=\"10 - 50\"`).",
                        "attribute": "aria-valuetext"
                    }
                ]
            }
        ]
    },
    "scheduler": {
        "component": "scheduler",
        "rules": [
            {
                "selector": ".k-scheduler",
                "checks": [
                    {
                        "selector": ".k-scheduler",
                        "id": "k-scheduler-role",
                        "test": true,
                        "usage": "Specifies the role of the component.",
                        "value": "application",
                        "attribute": "role"
                    },
                    {
                        "id": "k-scheduler-activedescendant",
                        "test": true,
                        "usage": "Points to the currently active appointment in the Scheduler.",
                        "attribute": "aria-activedescendant",
                        "value": ".k-event id"
                    }
                ]
            },
            {
                "selector": ".k-nav-prev,.k-nav-next",
                "checks": [
                    {
                        "selector": ".k-nav-prev,.k-nav-next",
                        "id": "k-scheduler-arrow-label",
                        "test": true,
                        "usage": "Required as those buttons contain only icon (no text).",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-nav-current",
                "checks": [
                    {
                        "selector": ".k-nav-current",
                        "id": "k-scheduler-current-live",
                        "test": true,
                        "usage": "The new date of the Scheduler view will be announced upon navigation to new time span / view type.",
                        "value": "polite",
                        "attribute": "aria-live"
                    }
                ]
            },
            {
                "selector": ".k-views-dropdown",
                "checks": [
                    {
                        "selector": ".k-views-dropdown",
                        "id": "k-scheduler-views-select-label",
                        "test": true,
                        "usage": "Specifies the purpose of the element. The `<select>` element visible on the toolbar on small screens must have its `aria-label` set.",
                        "attribute": "aria-label"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-agendaview",
                "checks": [
                    {
                        "selector": ".k-scheduler-agendaview",
                        "id": "k-scheduler-agenda-role",
                        "test": true,
                        "usage": "The main table of the Agenda view must indicate it is a Data Grid.",
                        "value": "grid",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-agendaview>tbody",
                "checks": [
                    {
                        "selector": ".k-scheduler-agendaview>tbody",
                        "id": "k-scheduler-agenda-tbody-role",
                        "test": true,
                        "usage": "The `<tbody>` element must have its semantics removed.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-agendaview .k-scheduler-table",
                "checks": [
                    {
                        "selector": ".k-scheduler-agendaview .k-scheduler-table",
                        "id": "k-scheduler-agenda-tables-role",
                        "test": true,
                        "usage": "Those `<table>` elements within the Scheduler must have their semantic role removed.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-agendaview .k-scheduler-table>tbody",
                "checks": [
                    {
                        "selector": ".k-scheduler-agendaview .k-scheduler-table>tbody",
                        "id": "k-scheduler-agenda-tables-tbody-role",
                        "test": true,
                        "usage": "Those elements must have their role explicitly set as it has been removed by the `<table>` role set (none/presentation).",
                        "value": "rowgroup",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-agendaview .k-scheduler-table>tbody>tr",
                "checks": [
                    {
                        "selector": ".k-scheduler-agendaview .k-scheduler-table>tbody>tr",
                        "id": "k-scheduler-agenda-tables-tr-role",
                        "test": true,
                        "usage": "Those elements must have their role explicitly set as it has been removed by the `<table>` role set (none/presentation).",
                        "value": "row",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-agendaview .k-scheduler-table>tbody>tr>th",
                "checks": [
                    {
                        "selector": ".k-scheduler-agendaview .k-scheduler-table>tbody>tr>th",
                        "id": "k-scheduler-agenda-tables-th-role",
                        "test": true,
                        "usage": "Those elements must have their role explicitly set as it has been removed by the `<table>` role set (none/presentation).",
                        "value": "columnheader",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-agendaview .k-scheduler-content>.k-scheduler-table>tbody>tr",
                "checks": [
                    {
                        "selector": ".k-scheduler-agendaview .k-scheduler-content>.k-scheduler-table>tbody>tr",
                        "id": "k-scheduler-agenda-tables-tr-selected",
                        "test": true,
                        "when": "selected",
                        "usage": "`aria-selected` attribute must be used to signify the currently selected row. As in Agenda view the selection follows focus, that would be the current `active descendant` row.",
                        "attribute": "aria-selected"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-groupcolumn,.k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-datecolumn",
                "checks": [
                    {
                        "selector": ".k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-groupcolumn,.k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-datecolumn",
                        "id": "k-scheduler-agenda-rowheaders-role",
                        "test": true,
                        "usage": "Those elements must have their role explicitly set as it has been removed by the `<table>` role set (none/presentation).",
                        "value": "rowheader",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-timecolumn,.k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-timecolumn+td",
                "checks": [
                    {
                        "selector": ".k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-timecolumn,.k-scheduler-content>.k-scheduler-table>tbody>tr>.k-scheduler-timecolumn+td",
                        "id": "k-scheduler-agenda-gridcell-role",
                        "test": true,
                        "usage": "Those elements must have their role explicitly set as it has been removed by the `<table>` role set (none/presentation).",
                        "value": "gridcell",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-scheduler-dayview,.k-scheduler-monthview,.k-scheduler-timelineview",
                "checks": [
                    {
                        "selector": ".k-scheduler-dayview,.k-scheduler-monthview,.k-scheduler-timelineview",
                        "id": "k-scheduler-tables-role",
                        "test": true,
                        "usage": "All `<table>` elements within the Scheduler must have their semantic role removed.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-event",
                "checks": [
                    {
                        "selector": ".k-event",
                        "id": "k-scheduler-event-role",
                        "test": true,
                        "usage": "Indicating that the events element is interactive.",
                        "value": "button",
                        "attribute": "role"
                    },
                    {
                        "id": "k-scheduler-event-label",
                        "test": true,
                        "usage": "Label containing the title, start, and end date of the appointment, so that all of them are announced upon navigation to an appointment.",
                        "attribute": "aria-label"
                    }
                ]
            }
        ]
    },
    "slider": {
        "component": "slider",
        "rules": [
            {
                "selector": ".k-draghandle",
                "checks": [
                    {
                        "selector": ".k-draghandle",
                        "id": "k-slider-role",
                        "test": true,
                        "usage": "Sets the proper role for Slider.",
                        "value": "slider",
                        "attribute": "role"
                    },
                    {
                        "id": "k-slider-label",
                        "test": true,
                        "usage": "The Slider needs an accessible name to be assigned to it.",
                        "multiple": true,
                        "attribute": [
                            "aria-label",
                            "aria-labelledby",
                            "title"
                        ]
                    },
                    {
                        "id": "k-slider-valuenow",
                        "test": true,
                        "usage": "Specifies the currently selected value in the Slider.",
                        "attribute": "aria-valuenow"
                    },
                    {
                        "id": "k-slider-valuetext",
                        "test": true,
                        "usage": "Specifies the text that would be announced based on the currently selected value in the Slider.",
                        "attribute": "aria-valuetext"
                    },
                    {
                        "id": "k-slider-valuemin",
                        "test": true,
                        "usage": "Specifies the minimum available value in the Slider.",
                        "attribute": "aria-valuemin"
                    },
                    {
                        "id": "k-slider-valuemax",
                        "test": true,
                        "usage": "Specifies the maximum available value in the Slider.",
                        "attribute": "aria-valuemax"
                    },
                    {
                        "id": "k-slider-orientation",
                        "test": true,
                        "when": "vertical",
                        "usage": "Present only when slider is vertical.",
                        "value": "vertical",
                        "attribute": "aria-orientation"
                    },
                    {
                        "id": "k-slider-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the Slider is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-slider-readonly",
                        "test": true,
                        "when": "readonly",
                        "usage": "Attribute is rendered only when the Slider is readonly.",
                        "value": "true",
                        "attribute": "aria-readonly"
                    },
                    {
                        "id": "k-slider-tabindex",
                        "test": true,
                        "usage": "The element must be focusable.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "stepper": {
        "component": "stepper",
        "rules": [
            {
                "selector": ".k-stepper",
                "checks": [
                    {
                        "selector": ".k-stepper",
                        "id": "k-stepper-role",
                        "test": true,
                        "usage": "The landmark role `navigation` must be assigned to the component.",
                        "attribute": [
                            "role=navigation",
                            "nodeName=nav"
                        ]
                    }
                ]
            },
            {
                "selector": ".k-step-link",
                "checks": [
                    {
                        "selector": ".k-step-link",
                        "id": "k-stepper-link-current",
                        "test": true,
                        "when": "selected",
                        "usage": "The currently selected link.",
                        "value": "true",
                        "attribute": "aria-current"
                    },
                    {
                        "id": "k-stepper-link-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "A disabled (inactive) link.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    }
                ]
            },
            {
                "selector": ".k-step-current .k-step-link",
                "checks": [
                    {
                        "selector": ".k-step-current .k-step-link",
                        "id": "k-stepper-link-current",
                        "test": true,
                        "usage": "Indicates whether the tab control is activated and its associated panel is displayed, or not.",
                        "attribute": "aria-current",
                        "value": "true"
                    },
                    {
                        "id": "k-stepper-link-current-tabindex",
                        "test": true,
                        "usage": "Removes the element from the page Tab sequence. Set when a tab is not selected so that only the selected tab is in the page Tab sequence.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-step:not(.k-step-current) .k-step-link",
                "checks": [
                    {
                        "selector": ".k-step:not(.k-step-current) .k-step-link",
                        "id": "k-stepper-link-tabindex",
                        "test": true,
                        "usage": "Removes the element from the page Tab sequence. Set when a tab is not selected so that only the selected tab is in the page Tab sequence.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    },
    "switch": {
        "component": "switch",
        "rules": [
            {
                "selector": ".k-switch",
                "checks": [
                    {
                        "selector": ".k-switch",
                        "id": "k-switch-role",
                        "test": true,
                        "usage": "Announces the switch role of the element.",
                        "value": "switch",
                        "attribute": "role"
                    },
                    {
                        "id": "k-switch-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-switch-checked",
                        "test": true,
                        "usage": "Announces the checked state of the switch.",
                        "attribute": "aria-checked"
                    },
                    {
                        "id": "k-switch-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "Attribute is rendered only when the switch is disabled.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    }
                ]
            }
        ]
    },
    "tabstrip": {
        "component": "tabstrip",
        "rules": [
            {
                "selector": ".k-tabstrip",
                "checks": [
                    {
                        "selector": ".k-tabstrip",
                        "id": "k-tabstrip-role",
                        "test": true,
                        "usage": "Indicates the role of the tablist container element.",
                        "value": "tablist",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-tabstrip-items",
                "checks": [
                    {
                        "selector": ".k-tabstrip-items",
                        "id": "k-tabstrip-list-role",
                        "test": true,
                        "usage": "The implicit semantics of the items `ul` element must be removed.",
                        "value": "none",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-tabstrip-item",
                "checks": [
                    {
                        "selector": ".k-tabstrip-item",
                        "id": "k-tabstrip-item-role",
                        "test": true,
                        "usage": "The tab `li` element.",
                        "value": "tab",
                        "attribute": "role"
                    },
                    {
                        "id": "k-tabstrip-item-controls",
                        "test": true,
                        "usage": "Announces the relation between the panel and tab.",
                        "value": ".k-tabstrip-content id",
                        "attribute": "aria-controls"
                    },
                    {
                        "id": "k-tabstrip-item-selected",
                        "test": true,
                        "when": "selected",
                        "usage": "Announces the selected state of the tab.",
                        "value": "true",
                        "attribute": "aria-selected"
                    }
                ]
            },
            {
                "selector": ".k-tabstrip-content",
                "checks": [
                    {
                        "selector": ".k-tabstrip-content",
                        "id": "k-tabstrip-panel-role",
                        "test": true,
                        "usage": "The content `div` of the tab.",
                        "value": "tabpanel",
                        "attribute": "role"
                    },
                    {
                        "id": "k-tabstrip-panel-label",
                        "test": true,
                        "usage": "Refers to the tab element that controls the panel.",
                        "value": ".k-tabstrip-item id",
                        "attribute": "aria-labelledby"
                    }
                ]
            }
        ]
    },
    "textarea": {
        "component": "textarea",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-textarea-role",
                        "test": true,
                        "usage": "Describes the role of the component.",
                        "attribute": [
                            "role=textbox",
                            "nodeName=textarea"
                        ]
                    },
                    {
                        "id": "k-textarea-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-textarea-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the textarea is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ],
                        "value": "true"
                    }
                ]
            }
        ]
    },
    "textbox": {
        "component": "textbox",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "id": "k-textbox-role",
                        "test": true,
                        "usage": "Describes the role of the component.",
                        "attribute": [
                            "role=textbox",
                            "type=text"
                        ]
                    },
                    {
                        "id": "k-textbox-label",
                        "test": true,
                        "usage": "The input needs an accessible name to be assigned to it.",
                        "attribute": [
                            "label for=",
                            "aria-label",
                            "aria-labelledby"
                        ]
                    },
                    {
                        "id": "k-textbox-disabled",
                        "test": true,
                        "usage": "Attribute is rendered only when the textbox is disabled.",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ],
                        "value": "true"
                    }
                ]
            }
        ]
    },
    "timepicker": {
        "component": "timepicker",
        "rules": [
            {
                "selector": ".k-input-inner",
                "checks": [
                    {
                        "selector": ".k-input-inner",
                        "test": true,
                        "id": "k-timepicker-role",
                        "attribute": "role",
                        "value": "combobox",
                        "usage": "The input element should follow the `combobox` specification."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-controls",
                        "attribute": "aria-controls",
                        "value": ".k-animation-container id",
                        "usage": " Points to the popup element. Signifies that the `combobox` element controls the `dialog` popup."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-disabled",
                        "when": "disabled",
                        "multiple": true,
                        "attribute": [
                            "disabled",
                            "aria-disabled"
                        ],
                        "value": "true",
                        "usage": "Attribute is rendered only when the DatePicker is disabled."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-readonly",
                        "when": "readonly",
                        "multiple": true,
                        "attribute": [
                            "readonly",
                            "aria-readonly"
                        ],
                        "value": "true",
                        "usage": "Attribute is rendered only when the DatePicker is readonly."
                    }
                ]
            },
            {
                "selector": ".k-input-button",
                "checks": [
                    {
                        "selector": ".k-input-button",
                        "test": true,
                        "id": "k-timepicker-button-role",
                        "multiple": true,
                        "attribute": [
                            "role=button",
                            "nodeName=button"
                        ],
                        "usage": "The element must either be a `<button>` element or must have `role=button` assigned."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-button-tabindex",
                        "attribute": "tabindex",
                        "value": "-1",
                        "usage": "Button element must not be focusable."
                    }
                ]
            },
            {
                "selector": ".k-time-list",
                "checks": [
                    {
                        "selector": ".k-time-list",
                        "test": true,
                        "id": "k-timepicker-timelist-role",
                        "attribute": "role",
                        "value": "spinbutton",
                        "usage": "The timelist elements must have `spinbutton` role assigned."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-timelist-label",
                        "attribute": "aria-label",
                        "usage": "The spinbutton needs an accessible name to be assigned to it."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-timelist-valuetext",
                        "attribute": "aria-valuetext",
                        "usage": "The current selected value in the spinbutton as a text representation."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-timelist-valuenow",
                        "attribute": "aria-valuenow",
                        "usage": "The current selected value in the spinbutton."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-timelist-valuemin",
                        "attribute": "aria-valuemin",
                        "usage": "The minimum allowed value in the spinbutton."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-timelist-valuemax",
                        "attribute": "aria-valuemax",
                        "usage": "The maximum allowed value in the spinbutton."
                    }
                ]
            },
            {
                "selector": ".k-time-container",
                "checks": [
                    {
                        "selector": ".k-time-container",
                        "test": true,
                        "id": "k-timepicker-timecontainer-role",
                        "attribute": "role",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "usage": "The immediate children elements of the spinbuttons should not be available for the assistive technologies."
                    }
                ]
            },
            {
                "selector": ".k-time-list-wrapper:last-child .k-time-list",
                "checks": [
                    {
                        "selector": ".k-time-list-wrapper:last-child .k-time-list",
                        "test": true,
                        "id": "k-timepicker-ampm-role",
                        "attribute": "role",
                        "value": "listbox",
                        "usage": "The element role indicates it is a listbox."
                    },
                    {
                        "test": true,
                        "id": "k-timepicker-ampm-label",
                        "attribute": "aria-label",
                        "usage": "The listbox needs an accessible name to be assigned to it."
                    }
                ]
            },
            {
                "selector": ".k-time-list-wrapper:last-child .k-reset",
                "checks": [
                    {
                        "selector": ".k-time-list-wrapper:last-child .k-reset",
                        "test": true,
                        "id": "k-timepicker-ampm-reset-role",
                        "attribute": "role",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "usage": "The semantic role of the element must be negated."
                    }
                ]
            },
            {
                "selector": ".k-time-list-wrapper:last-child .k-item",
                "checks": [
                    {
                        "selector": ".k-time-list-wrapper:last-child .k-item",
                        "test": true,
                        "id": "k-timepicker-ampm-option-role",
                        "attribute": "role",
                        "value": "option",
                        "usage": "The two available options in the listbox must be marked as such."
                    }
                ]
            }
        ]
    },
    "togglebutton": {
        "component": "togglebutton",
        "rules": [
            {
                "selector": ".k-button",
                "checks": [
                    {
                        "selector": ".k-button",
                        "id": "k-togglebutton-pressed",
                        "test": true,
                        "usage": "Announced the toggle behaviour of the button.",
                        "value": [
                            "true",
                            "false"
                        ],
                        "attribute": "aria-pressed"
                    }
                ]
            }
        ]
    },
    "toolbar": {
        "component": "toolbar",
        "rules": [
            {
                "selector": ".k-toolbar",
                "checks": [
                    {
                        "selector": ".k-toolbar",
                        "id": "k-toolbar-role",
                        "test": true,
                        "usage": "The component role.",
                        "value": "toolbar",
                        "attribute": "role"
                    }
                ]
            }
        ]
    },
    "treeview": {
        "component": "treeview",
        "rules": [
            {
                "selector": ".k-treeview",
                "checks": [
                    {
                        "selector": ".k-treeview",
                        "id": "k-treeview-role",
                        "test": true,
                        "usage": "The root `div` element of the treeview.",
                        "value": "tree",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-treeview-group:not(.k-treeview-lines)",
                "checks": [
                    {
                        "selector": ".k-treeview-group:not(.k-treeview-lines)",
                        "id": "k-treeview-group-role",
                        "test": true,
                        "usage": "The `ul` element that wraps child nodes.",
                        "value": "group",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-treeview-item",
                "checks": [
                    {
                        "selector": ".k-treeview-item",
                        "id": "k-treeview-item-role",
                        "test": true,
                        "usage": "The `li` element rendered for a tree node.",
                        "value": "treeitem",
                        "attribute": "role"
                    },
                    {
                        "id": "k-treeview-item-level",
                        "test": true,
                        "usage": "Announces the level of the tree node item. The value of level is number-based(>=1).",
                        "attribute": "aria-level"
                    },
                    {
                        "id": "k-treeview-item-setsize",
                        "test": true,
                        "usage": "Announces the total count of the items at this level. Helps the user understand the position of the navigation (ex: item 3 of 14).",
                        "attribute": "aria-setsize"
                    },
                    {
                        "id": "k-treeview-item-selected",
                        "test": true,
                        "when": "selected",
                        "usage": "Rendered only when selection is enabled and announces the selected state of the node.",
                        "value": "true",
                        "attribute": "aria-selected"
                    },
                    {
                        "id": "k-treeview-item-checked",
                        "test": true,
                        "when": "checkboxes",
                        "usage": "Rendered only when checkboxes are enabled and announces the checked state of the node. If the checkbox is indeterminate, the value is `mixed`.",
                        "value": [
                            "true",
                            "false"
                        ],
                        "attribute": "aria-checked"
                    }
                ]
            },
            {
                "selector": ".k-checkbox",
                "checks": [
                    {
                        "selector": ".k-checkbox",
                        "id": "k-treeview-checkbox-role",
                        "test": true,
                        "when": "checkboxes",
                        "usage": "Added to the wrapper element of the checkbox to prevent duplicated information announced to the user. The checked state is controlled by `aria-checked`.",
                        "value": [
                            "none",
                            "presentation"
                        ],
                        "attribute": "role"
                    },
                    {
                        "id": "k-treeview-checkbox-hidden",
                        "test": true,
                        "when": "checkboxes",
                        "usage": "Added to the wrapper element of the checkbox to prevent duplicated information announced to the user. The checked state is controlled by `aria-checked`.",
                        "value": "true",
                        "attribute": "aria-hidden"
                    }
                ]
            }
        ]
    },
    "window": {
        "component": "window",
        "rules": [
            {
                "selector": ".k-window",
                "checks": [
                    {
                        "selector": ".k-window",
                        "id": "k-window-role",
                        "test": true,
                        "usage": "Announces the dialog role of the component.",
                        "value": "dialog",
                        "attribute": "role"
                    },
                    {
                        "id": "k-window-label",
                        "test": true,
                        "usage": "Associate the title of the dialog.",
                        "value": ".k-window-title id",
                        "attribute": "aria-labelledby"
                    },
                    {
                        "id": "k-window-modal",
                        "test": true,
                        "when": "modal",
                        "usage": "Announces that the dialog is modal. Attribute is added only when the dialog is modal.",
                        "value": "true",
                        "attribute": "aria-modal"
                    }
                ]
            }
        ]
    },
    "wizard": {
        "component": "wizard",
        "rules": [
            {
                "selector": ".k-step-list",
                "checks": [
                    {
                        "selector": ".k-step-list",
                        "id": "k-wizard-role",
                        "test": true,
                        "usage": "Indicates the role of the tablist container element.",
                        "value": "tablist",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-step",
                "checks": [
                    {
                        "selector": ".k-step",
                        "id": "k-wizard-step-role",
                        "test": true,
                        "usage": "The implicit semantics of the `li` element must be removed.",
                        "value": "none",
                        "attribute": "role"
                    }
                ]
            },
            {
                "selector": ".k-step-link",
                "checks": [
                    {
                        "selector": ".k-step-link",
                        "id": "k-wizard-link-role",
                        "test": true,
                        "usage": "Specifies the role for the step links.",
                        "value": "tab",
                        "attribute": "role"
                    },
                    {
                        "id": "k-wizard-link-disabled",
                        "test": true,
                        "when": "disabled",
                        "usage": "A disabled (inactive) tab.",
                        "value": "true",
                        "attribute": "aria-disabled"
                    },
                    {
                        "id": "k-wizard-link-controls",
                        "test": true,
                        "usage": "Refers to the tabpanel element associated with the tab.",
                        "value": ".k-wizard-step id",
                        "attribute": "aria-controls"
                    }
                ]
            },
            {
                "selector": ".k-step-current .k-step-link",
                "checks": [
                    {
                        "selector": ".k-step-current .k-step-link",
                        "id": "k-wizard-link-selected",
                        "test": true,
                        "usage": "Indicates whether the tab control is activated and its associated panel is displayed, or not.",
                        "attribute": "aria-selected"
                    },
                    {
                        "id": "k-wizard-link-current",
                        "test": true,
                        "usage": "Indicates whether the tab control is activated and its associated panel is displayed, or not.",
                        "attribute": "aria-current",
                        "value": "true"
                    },
                    {
                        "id": "k-wizard-link-current-tabindex",
                        "test": true,
                        "usage": "Removes the element from the page Tab sequence. Set when a tab is not selected so that only the selected tab is in the page Tab sequence.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-step:not(.k-step-current) .k-step-link",
                "checks": [
                    {
                        "selector": ".k-step:not(.k-step-current) .k-step-link",
                        "id": "k-wizard-link-tabindex",
                        "test": true,
                        "usage": "Removes the element from the page Tab sequence. Set when a tab is not selected so that only the selected tab is in the page Tab sequence.",
                        "value": "-1",
                        "attribute": "tabindex"
                    }
                ]
            },
            {
                "selector": ".k-wizard-step",
                "checks": [
                    {
                        "selector": ".k-wizard-step",
                        "id": "k-wizard-step-role",
                        "test": true,
                        "usage": "Specifies the role of the element.",
                        "value": "tabpanel",
                        "attribute": "role"
                    },
                    {
                        "id": "k-wizard-step-label",
                        "test": true,
                        "usage": "Specifies a label tor the panel. As the Wizard represents a step-by-step process, that is usually the pager text (e.g. \"Step 2 of 4\")",
                        "attribute": "aria-label"
                    },
                    {
                        "id": "k-wizard-step-tabindex",
                        "test": true,
                        "usage": "Keeps the tabpanel in the page tab sequence.",
                        "value": "0",
                        "attribute": "tabindex"
                    }
                ]
            }
        ]
    }
}