├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── agenda-item.md │ ├── apple-candidate-phase-review.md │ ├── bug.md │ ├── test-feedback.md │ ├── test-plan.md │ └── vispero-candidate-phase-review.md ├── dependabot.yml └── workflows │ ├── ensure-build-directory-is-absent.yml │ ├── generate-and-commit-files.yml │ ├── js-lint.yml │ ├── test.yml │ └── update-pr.yml ├── .gitignore ├── .husky └── pre-commit ├── .prettierignore ├── .prettierrc ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── __test__ ├── __mocks__ │ └── tests │ │ ├── alert │ │ ├── data │ │ │ ├── assertions.csv │ │ │ ├── jaws-commands.csv │ │ │ ├── js │ │ │ │ └── setFocusOnButton.js │ │ │ ├── nvda-commands.csv │ │ │ ├── references.csv │ │ │ ├── scripts.csv │ │ │ ├── tests.csv │ │ │ └── voiceover_macos-commands.csv │ │ └── reference │ │ │ └── 2022-4-8_144013 │ │ │ ├── alert.html │ │ │ ├── alert.setFocusOnButton.html │ │ │ ├── css │ │ │ └── alert.css │ │ │ └── js │ │ │ └── alert.js │ │ ├── banner │ │ ├── data │ │ │ ├── commands.csv │ │ │ ├── js │ │ │ │ ├── setFocusAfterBanner.js │ │ │ │ ├── setFocusAfterBannerAndHideBottomLink.js │ │ │ │ ├── setFocusBeforeBanner.js │ │ │ │ ├── setFocusBeforeBannerAndHideTopLink.js │ │ │ │ ├── setFocusOnBottomLink.js │ │ │ │ └── setFocusOnTopLink.js │ │ │ ├── references.csv │ │ │ └── tests.csv │ │ └── reference │ │ │ └── 2021-10-24_135455 │ │ │ ├── banner.html │ │ │ ├── banner.setFocusAfterBanner.html │ │ │ ├── banner.setFocusAfterBannerAndHideBottomLink.html │ │ │ ├── banner.setFocusBeforeBanner.html │ │ │ ├── banner.setFocusBeforeBannerAndHideTopLink.html │ │ │ ├── banner.setFocusOnBottomLink.html │ │ │ ├── banner.setFocusOnTopLink.html │ │ │ ├── css │ │ │ ├── bootstrap-accessibility.css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap.css │ │ │ ├── common.css │ │ │ └── visua11y.css │ │ │ ├── images │ │ │ ├── landmarks-jaws.png │ │ │ ├── landmarks-nvda.png │ │ │ ├── landmarks-orca.png │ │ │ ├── landmarks-skipto.png │ │ │ ├── landmarks-vo.png │ │ │ └── w3c.png │ │ │ └── js │ │ │ ├── bootstrap-accessibility-2.js │ │ │ ├── bootstrap-accessibility.min.js │ │ │ ├── bootstrap.min.js │ │ │ ├── jquery-2.1.1.min.js │ │ │ ├── show.js │ │ │ ├── skipto.min.js │ │ │ └── visua11y.js │ │ ├── command-button │ │ ├── data │ │ │ ├── assertions.csv │ │ │ ├── jaws-commands.csv │ │ │ ├── js │ │ │ │ ├── setFocusAfterButton.js │ │ │ │ ├── setFocusBeforeButton.js │ │ │ │ └── setFocusOnButton.js │ │ │ ├── nvda-commands.csv │ │ │ ├── references.csv │ │ │ ├── scripts.csv │ │ │ ├── tests.csv │ │ │ └── voiceover_macos-commands.csv │ │ └── reference │ │ │ └── 2022-4-8_124112 │ │ │ ├── button.html │ │ │ ├── button.setFocusAfterButton.html │ │ │ ├── button.setFocusBeforeButton.html │ │ │ ├── button.setFocusOnButton.html │ │ │ ├── css │ │ │ └── button.css │ │ │ └── js │ │ │ └── button.js │ │ └── horizontal-slider │ │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── setFocusAfterRedSlider.js │ │ │ ├── setFocusBeforeRedSlider.js │ │ │ └── setFocusOnRedSlider.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ │ └── reference │ │ └── 2022-4-11_11511 │ │ ├── css │ │ └── slider-color-viewer.css │ │ ├── js │ │ └── slider-color-viewer.js │ │ ├── slider-color-viewer.html │ │ ├── slider-color-viewer.setFocusAfterRedSlider.html │ │ ├── slider-color-viewer.setFocusBeforeRedSlider.html │ │ └── slider-color-viewer.setFocusOnRedSlider.html ├── __snapshots__ │ ├── createAllTests.test.js.snap │ └── createReviewPages.test.js.snap ├── createAllTests.test.js ├── createReviewPages.test.js └── utils │ └── index.js ├── babel.config.js ├── docs └── LOCAL_DEVELOPMENT.md ├── eslint.config.mjs ├── jest.config.js ├── lib ├── data │ ├── command-tuples-at-mode-task-lookup.js │ ├── example-scripts-template.js │ ├── parse-command-csv-row.js │ ├── parse-support.js │ ├── parse-test-csv-row.js │ ├── process-test-directory │ │ ├── index.js │ │ ├── utils.js │ │ └── v1.js │ └── templates │ │ └── collected-test.html.js └── util │ ├── console.js │ ├── csv.js │ ├── error.js │ ├── file-record-chain.js │ ├── file-record-types.js │ ├── file-record.js │ ├── lines.js │ └── queryable.js ├── metrics └── coverage.md ├── netlify.toml ├── package-lock.json ├── package.json ├── scripts ├── count-assertions.js ├── create-all-tests │ ├── createAllTests.js │ └── index.js ├── test-reviewer │ ├── createReviewPages.mjs │ ├── generateReviewPages.mjs │ ├── getCollectedTestsData.mjs │ ├── getReferenceForDirectory.mjs │ ├── getReferencesData.mjs │ ├── getRenderValues.mjs │ ├── getScriptsData.mjs │ ├── index.js │ ├── processCollectedTests.mjs │ ├── review-index-template.mustache │ ├── review-template.mustache │ └── utils.mjs ├── update-reference.js ├── v2maker.js ├── v2maker.json ├── v2makerUtil.js ├── v2substitutionsForAssertionIds.csv ├── v2substitutionsForCommands.csv └── v2substitutionsForTestIds.csv ├── tests ├── accordion │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── expandSecondAccordionHeaderAndSetFocusOnCollapsedFirstAccordionHeader.js │ │ │ ├── setFocusOnAndCollapseFirstAccordionHeader.js │ │ │ ├── setFocusOnFirstAccordionHeader.js │ │ │ ├── setFocusOnNameInputField.js │ │ │ ├── setFocusOnSecondAccordionHeader.js │ │ │ └── setFocusOnSecondAccordionHeaderAndCollapseFirstAccordionHeader.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2025-5-5_135654 │ │ ├── accordion.expandSecondAccordionHeaderAndSetFocusOnCollapsedFirstAccordionHeader.html │ │ ├── accordion.html │ │ ├── accordion.setFocusOnAndCollapseFirstAccordionHeader.html │ │ ├── accordion.setFocusOnFirstAccordionHeader.html │ │ ├── accordion.setFocusOnNameInputField.html │ │ ├── accordion.setFocusOnSecondAccordionHeader.html │ │ ├── accordion.setFocusOnSecondAccordionHeaderAndCollapseFirstAccordionHeader.html │ │ ├── css │ │ └── accordion.css │ │ └── js │ │ └── accordion.js ├── alert │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ └── setFocusOnButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2022-4-8_144013 │ │ ├── alert.html │ │ ├── alert.setFocusOnButton.html │ │ ├── css │ │ └── alert.css │ │ └── js │ │ └── alert.js ├── banner │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterBanner.js │ │ │ ├── setFocusAfterBannerAndHideBottomLink.js │ │ │ ├── setFocusBeforeBanner.js │ │ │ ├── setFocusBeforeBannerAndHideTopLink.js │ │ │ ├── setFocusOnBottomLink.js │ │ │ └── setFocusOnTopLink.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2021-10-24_135455 │ │ ├── banner.html │ │ ├── banner.setFocusAfterBanner.html │ │ ├── banner.setFocusAfterBannerAndHideBottomLink.html │ │ ├── banner.setFocusBeforeBanner.html │ │ ├── banner.setFocusBeforeBannerAndHideTopLink.html │ │ ├── banner.setFocusOnBottomLink.html │ │ ├── banner.setFocusOnTopLink.html │ │ ├── css │ │ ├── bootstrap-accessibility.css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap.css │ │ ├── common.css │ │ └── visua11y.css │ │ ├── images │ │ ├── landmarks-jaws.png │ │ ├── landmarks-nvda.png │ │ ├── landmarks-orca.png │ │ ├── landmarks-skipto.png │ │ ├── landmarks-vo.png │ │ └── w3c.png │ │ └── js │ │ ├── bootstrap-accessibility-2.js │ │ ├── bootstrap-accessibility.min.js │ │ ├── bootstrap.min.js │ │ ├── jquery-2.1.1.min.js │ │ ├── show.js │ │ ├── skipto.min.js │ │ └── visua11y.js ├── breadcrumb │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterLastBreadcrumbLink.js │ │ │ ├── setFocusBeforeFirstBreadcrumbLink.js │ │ │ ├── setFocusOnFirstBreadcrumbLink.js │ │ │ └── setFocusOnLastBreadcrumbLink.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2022-8-2_132648 │ │ ├── css │ │ └── breadcrumb.css │ │ ├── index.html │ │ ├── index.setFocusAfterLastBreadcrumbLink.html │ │ ├── index.setFocusBeforeFirstBreadcrumbLink.html │ │ ├── index.setFocusOnFirstBreadcrumbLink.html │ │ └── index.setFocusOnLastBreadcrumbLink.html ├── checkbox-tri-state │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── moveFocusAfterFirstCheckbox.js │ │ │ ├── moveFocusBeforeFirstCheckbox.js │ │ │ ├── moveFocusToAndUncheckFirstCheckbox.js │ │ │ └── moveFocusToFirstCheckbox.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2022-9-9_104148 │ │ ├── checkbox-mixed.html │ │ ├── checkbox-mixed.moveFocusAfterFirstCheckbox.html │ │ ├── checkbox-mixed.moveFocusBeforeFirstCheckbox.html │ │ ├── checkbox-mixed.moveFocusToAndUncheckFirstCheckbox.html │ │ ├── checkbox-mixed.moveFocusToFirstCheckbox.html │ │ ├── css │ │ ├── checkbox-mixed.css │ │ └── checkbox.css │ │ └── js │ │ ├── checkbox-mixed.js │ │ └── checkbox.js ├── checkbox │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── checkFirstCheckbox.js │ │ │ ├── moveFocusAndCheckFirstCheckbox.js │ │ │ └── moveFocusToFirstCheckbox.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2020-11-23_175030 │ │ ├── checkbox-1 │ │ ├── checkbox-1.checkFirstCheckbox.html │ │ ├── checkbox-1.html │ │ ├── checkbox-1.moveFocusAndCheckFirstCheckbox.html │ │ ├── checkbox-1.moveFocusToFirstCheckbox.html │ │ └── js │ │ │ └── checkbox.js │ │ ├── checkbox-2 │ │ └── js │ │ │ ├── checkboxMixed.js │ │ │ └── controlledCheckbox.js │ │ └── css │ │ └── checkbox.css ├── combobox-autocomplete-both-updated │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── moveFocusAfterCombobox.js │ │ │ ├── moveFocusAfterComboboxAndSetValueToAlabama.js │ │ │ ├── moveFocusBeforeCombobox.js │ │ │ ├── moveFocusBeforeComboboxAndSetValueToAlabama.js │ │ │ ├── moveFocusToAlabamaInListbox.js │ │ │ ├── moveFocusToAlabamaInListboxAndSetInputCursorAtBeginning.js │ │ │ ├── moveFocusToAlabamaInListboxAndSetInputCursorAtEnd.js │ │ │ ├── moveFocusToAlaskaInListbox.js │ │ │ ├── moveFocusToAndExpandCombobox.js │ │ │ ├── moveFocusToAndExpandComboboxAndSetValueToA.js │ │ │ ├── moveFocusToAndExpandComboboxAndSetValueToAWithInputTextDeselected.js │ │ │ ├── moveFocusToAndExpandComboboxAndSetValueToAlabama.js │ │ │ ├── moveFocusToCombobox.js │ │ │ ├── moveFocusToComboboxAndSetValueToA.js │ │ │ └── moveFocusToComboboxAndSetValueToAlabama.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2020-12-11_16649 │ │ ├── combobox-autocomplete-both.html │ │ ├── combobox-autocomplete-both.moveFocusAfterCombobox.html │ │ ├── combobox-autocomplete-both.moveFocusAfterComboboxAndSetValueToAlabama.html │ │ ├── combobox-autocomplete-both.moveFocusBeforeCombobox.html │ │ ├── combobox-autocomplete-both.moveFocusBeforeComboboxAndSetValueToAlabama.html │ │ ├── combobox-autocomplete-both.moveFocusToAlabamaInListbox.html │ │ ├── combobox-autocomplete-both.moveFocusToAlabamaInListboxAndSetInputCursorAtBeginning.html │ │ ├── combobox-autocomplete-both.moveFocusToAlabamaInListboxAndSetInputCursorAtEnd.html │ │ ├── combobox-autocomplete-both.moveFocusToAlaskaInListbox.html │ │ ├── combobox-autocomplete-both.moveFocusToAndExpandCombobox.html │ │ ├── combobox-autocomplete-both.moveFocusToAndExpandComboboxAndSetValueToA.html │ │ ├── combobox-autocomplete-both.moveFocusToAndExpandComboboxAndSetValueToAWithInputTextDeselected.html │ │ ├── combobox-autocomplete-both.moveFocusToAndExpandComboboxAndSetValueToAlabama.html │ │ ├── combobox-autocomplete-both.moveFocusToCombobox.html │ │ ├── combobox-autocomplete-both.moveFocusToComboboxAndSetValueToA.html │ │ ├── combobox-autocomplete-both.moveFocusToComboboxAndSetValueToAlabama.html │ │ ├── css │ │ └── combobox-autocomplete.css │ │ └── js │ │ └── combobox-autocomplete.js ├── combobox-select-only │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── moveFocusAfterCombobox.js │ │ │ ├── moveFocusBeforeCombobox.js │ │ │ ├── moveFocusToCombobox.js │ │ │ ├── openListbox.js │ │ │ ├── openListboxToApple.js │ │ │ ├── openListboxToGuava.js │ │ │ └── openListboxToHuckleberry.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ ├── combobox-select-only.html │ │ ├── combobox-select-only.moveFocusAfterCombobox.html │ │ ├── combobox-select-only.moveFocusBeforeCombobox.html │ │ ├── combobox-select-only.moveFocusToCombobox.html │ │ ├── combobox-select-only.openListbox.html │ │ ├── combobox-select-only.openListboxToApple.html │ │ ├── combobox-select-only.openListboxToGuava.html │ │ ├── combobox-select-only.openListboxToHuckleberry.html │ │ ├── css │ │ └── select-only.css │ │ └── js │ │ └── select-only.js ├── command-button │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── setFocusAfterButton.js │ │ │ ├── setFocusBeforeButton.js │ │ │ └── setFocusOnButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2022-4-8_124112 │ │ ├── button.html │ │ ├── button.setFocusAfterButton.html │ │ ├── button.setFocusBeforeButton.html │ │ ├── button.setFocusOnButton.html │ │ ├── css │ │ └── button.css │ │ └── js │ │ └── button.js ├── commands.json ├── complementary │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterComplementary.js │ │ │ ├── setFocusBeforeComplementary.js │ │ │ ├── setFocusOnBottomLink.js │ │ │ └── setFocusOnTopLink.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2021-10-24_142522 │ │ ├── complementary.html │ │ ├── complementary.setFocusAfterComplementary.html │ │ ├── complementary.setFocusBeforeComplementary.html │ │ ├── complementary.setFocusOnBottomLink.html │ │ ├── complementary.setFocusOnTopLink.html │ │ ├── css │ │ ├── bootstrap-accessibility.css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap.css │ │ ├── common.css │ │ └── visua11y.css │ │ ├── images │ │ ├── landmarks-jaws.png │ │ ├── landmarks-nvda.png │ │ ├── landmarks-orca.png │ │ ├── landmarks-skipto.png │ │ ├── landmarks-vo.png │ │ └── w3c.png │ │ └── js │ │ ├── bootstrap-accessibility-2.js │ │ ├── bootstrap-accessibility.min.js │ │ ├── bootstrap.min.js │ │ ├── jquery-2.1.1.min.js │ │ ├── show.js │ │ └── visua11y.js ├── contentinfo │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterContentinfo.js │ │ │ ├── setFocusBeforeContentinfo.js │ │ │ ├── setFocusOnBottomLink.js │ │ │ └── setFocusOnTopLink.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2021-10-24_151010 │ │ ├── contentinfo.html │ │ ├── contentinfo.setFocusAfterContentinfo.html │ │ ├── contentinfo.setFocusBeforeContentinfo.html │ │ ├── contentinfo.setFocusOnBottomLink.html │ │ ├── contentinfo.setFocusOnTopLink.html │ │ ├── css │ │ ├── bootstrap-accessibility.css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap.css │ │ ├── common.css │ │ └── visua11y.css │ │ ├── images │ │ ├── landmarks-jaws.png │ │ ├── landmarks-nvda.png │ │ ├── landmarks-orca.png │ │ ├── landmarks-skipto.png │ │ ├── landmarks-vo.png │ │ └── w3c.png │ │ └── js │ │ ├── bootstrap-accessibility-2.js │ │ ├── bootstrap-accessibility.min.js │ │ ├── bootstrap.min.js │ │ ├── jquery-2.1.1.min.js │ │ ├── show.js │ │ └── visua11y.js ├── datepicker-spin-button │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterSpinButtonAndSetPredefinedDate.js │ │ │ ├── setFocusBeforeSpinButtonAndSetPredefinedDate.js │ │ │ └── setFocusOnSpinButtonAndSetPredefinedDate.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2021-10-15_93728 │ │ ├── css │ │ └── datepicker-spinbuttons.css │ │ ├── datepicker-spinbuttons.html │ │ ├── datepicker-spinbuttons.setFocusAfterSpinButtonAndSetPredefinedDate.html │ │ ├── datepicker-spinbuttons.setFocusBeforeSpinButtonAndSetPredefinedDate.html │ │ ├── datepicker-spinbuttons.setFocusOnSpinButtonAndSetPredefinedDate.html │ │ └── js │ │ ├── datepicker-spinbuttons.js │ │ └── spinbutton-date.js ├── disclosure-faq │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── moveFocusAfterAndExpandFirstDisclosure.js │ │ │ ├── moveFocusAfterFirstDisclosure.js │ │ │ ├── moveFocusBeforeAndExpandFirstDisclosure.js │ │ │ ├── moveFocusBeforeFirstDisclosure.js │ │ │ ├── moveFocusToAndExpandFirstDisclosure.js │ │ │ └── moveFocusToFirstDisclosure.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2020-12-3_11559 │ │ ├── css │ │ └── disclosure-faq.css │ │ ├── disclosure-faq.html │ │ ├── disclosure-faq.moveFocusAfterAndExpandFirstDisclosure.html │ │ ├── disclosure-faq.moveFocusAfterFirstDisclosure.html │ │ ├── disclosure-faq.moveFocusBeforeAndExpandFirstDisclosure.html │ │ ├── disclosure-faq.moveFocusBeforeFirstDisclosure.html │ │ ├── disclosure-faq.moveFocusToAndExpandFirstDisclosure.html │ │ ├── disclosure-faq.moveFocusToFirstDisclosure.html │ │ ├── images │ │ ├── down-arrow-brown.png │ │ └── right-arrow-brown.png │ │ └── js │ │ └── disclosureButton.js ├── disclosure-navigation │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── expandFirstDisclosureAndMoveFocusToCampusToursLink.js │ │ │ ├── expandFirstDisclosureAndMoveFocusToOverviewLink.js │ │ │ ├── expandFirstDisclosureHideDropdownAndMoveFocusToSecondDisclosure.js │ │ │ ├── expandThirdDisclosureHideDropdownAndMoveFocusAfterDisclosure.js │ │ │ ├── moveFocusAfterThirdDisclosure.js │ │ │ ├── moveFocusBeforeAndExpandFirstDisclosure.js │ │ │ ├── moveFocusBeforeFirstDisclosure.js │ │ │ ├── moveFocusToAndExpandFirstDisclosure.js │ │ │ ├── moveFocusToAndExpandFirstDisclosureAndSetCurrentPage.js │ │ │ ├── moveFocusToFirstDisclosure.js │ │ │ ├── moveFocusToSecondDisclosure.js │ │ │ ├── moveFocusToSecondDisclosureAndExpandFirstDisclosure.js │ │ │ └── moveFocusToSecondDisclosureAndExpandThirdDisclosure.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2022-9-9_13844 │ │ ├── css │ │ ├── disclosure-faq.css │ │ ├── disclosure-image-description.css │ │ └── disclosure-navigation.css │ │ ├── disclosure-navigation.expandFirstDisclosureAndMoveFocusToCampusToursLink.html │ │ ├── disclosure-navigation.expandFirstDisclosureAndMoveFocusToOverviewLink.html │ │ ├── disclosure-navigation.expandFirstDisclosureHideDropdownAndMoveFocusToSecondDisclosure.html │ │ ├── disclosure-navigation.expandThirdDisclosureHideDropdownAndMoveFocusAfterDisclosure.html │ │ ├── disclosure-navigation.html │ │ ├── disclosure-navigation.moveFocusAfterThirdDisclosure.html │ │ ├── disclosure-navigation.moveFocusBeforeAndExpandFirstDisclosure.html │ │ ├── disclosure-navigation.moveFocusBeforeFirstDisclosure.html │ │ ├── disclosure-navigation.moveFocusToAndExpandFirstDisclosure.html │ │ ├── disclosure-navigation.moveFocusToAndExpandFirstDisclosureAndSetCurrentPage.html │ │ ├── disclosure-navigation.moveFocusToFirstDisclosure.html │ │ ├── disclosure-navigation.moveFocusToSecondDisclosure.html │ │ ├── disclosure-navigation.moveFocusToSecondDisclosureAndExpandFirstDisclosure.html │ │ ├── disclosure-navigation.moveFocusToSecondDisclosureAndExpandThirdDisclosure.html │ │ └── js │ │ ├── disclosure-button.js │ │ └── disclosureMenu.js ├── form │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterForm.js │ │ │ ├── setFocusAfterFormAndHideBottomControls.js │ │ │ ├── setFocusBeforeForm.js │ │ │ ├── setFocusBeforeFormAndHideTopLink.js │ │ │ ├── setFocusOnBottomLink.js │ │ │ └── setFocusOnTopLink.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2021-10-24_152221 │ │ ├── css │ │ ├── bootstrap-accessibility.css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap.css │ │ ├── common.css │ │ └── visua11y.css │ │ ├── form.html │ │ ├── form.setFocusAfterForm.html │ │ ├── form.setFocusAfterFormAndHideBottomControls.html │ │ ├── form.setFocusBeforeForm.html │ │ ├── form.setFocusBeforeFormAndHideTopLink.html │ │ ├── form.setFocusOnBottomLink.html │ │ ├── form.setFocusOnTopLink.html │ │ ├── images │ │ ├── landmarks-jaws.png │ │ ├── landmarks-nvda.png │ │ ├── landmarks-orca.png │ │ ├── landmarks-skipto.png │ │ ├── landmarks-vo.png │ │ └── w3c.png │ │ └── js │ │ ├── bootstrap-accessibility-2.js │ │ ├── bootstrap-accessibility.min.js │ │ ├── bootstrap.min.js │ │ ├── jquery-2.1.1.min.js │ │ ├── show.js │ │ └── visua11y.js ├── horizontal-slider │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── setFocusAfterRedSlider.js │ │ │ ├── setFocusBeforeRedSlider.js │ │ │ └── setFocusOnRedSlider.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2022-4-11_11511 │ │ ├── css │ │ └── slider-color-viewer.css │ │ ├── js │ │ └── slider-color-viewer.js │ │ ├── slider-color-viewer.html │ │ ├── slider-color-viewer.setFocusAfterRedSlider.html │ │ ├── slider-color-viewer.setFocusBeforeRedSlider.html │ │ └── slider-color-viewer.setFocusOnRedSlider.html ├── link-css │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── setFocusAfterLink.js │ │ │ ├── setFocusBeforeLink.js │ │ │ └── setFocusOnLink.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2023-3-13_142620 │ │ ├── css │ │ └── link.css │ │ ├── images │ │ └── w3c-logo.svg │ │ ├── js │ │ └── link.js │ │ ├── link-css.html │ │ ├── link-css.setFocusAfterLink.html │ │ ├── link-css.setFocusBeforeLink.html │ │ └── link-css.setFocusOnLink.html ├── link-img-alt │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── setFocusAfterLink.js │ │ │ ├── setFocusBeforeLink.js │ │ │ └── setFocusOnLink.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2023-3-13_11377 │ │ ├── css │ │ └── link.css │ │ ├── images │ │ └── w3c-logo.svg │ │ ├── js │ │ └── link.js │ │ ├── link-img-alt.html │ │ ├── link-img-alt.setFocusAfterLink.html │ │ ├── link-img-alt.setFocusBeforeLink.html │ │ └── link-img-alt.setFocusOnLink.html ├── link-span-text │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── setFocusAfterLink.js │ │ │ ├── setFocusBeforeLink.js │ │ │ └── setFocusOnLink.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2022-4-6_14258 │ │ ├── css │ │ └── link.css │ │ ├── js │ │ └── link.js │ │ ├── link.html │ │ ├── link.setFocusAfterLink.html │ │ ├── link.setFocusBeforeLink.html │ │ └── link.setFocusOnLink.html ├── main │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterMain.js │ │ │ ├── setFocusBeforeMain.js │ │ │ ├── setFocusOnBottomLink.js │ │ │ └── setFocusOnTopLink.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2022-4-28_91451 │ │ ├── css │ │ ├── bootstrap-accessibility.css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap.css │ │ ├── common.css │ │ └── visua11y.css │ │ ├── images │ │ ├── landmarks-jaws.png │ │ ├── landmarks-nvda.png │ │ ├── landmarks-orca.png │ │ ├── landmarks-skipto.png │ │ ├── landmarks-vo.png │ │ └── w3c.png │ │ ├── js │ │ ├── bootstrap-accessibility-2.js │ │ ├── bootstrap-accessibility.min.js │ │ ├── bootstrap.min.js │ │ ├── jquery-2.1.1.min.js │ │ ├── show.js │ │ ├── skipto.min.js │ │ ├── tabs.js │ │ └── visua11y.js │ │ ├── main.html │ │ ├── main.setFocusAfterMain.html │ │ ├── main.setFocusBeforeMain.html │ │ ├── main.setFocusOnBottomLink.html │ │ └── main.setFocusOnTopLink.html ├── menu-button-actions-active-descendant │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── openMenuAndSetFocusToFirstItem.js │ │ │ ├── openMenuAndSetFocusToLastItem.js │ │ │ ├── setFocusAfterMenuButton.js │ │ │ ├── setFocusBeforeMenuButton.js │ │ │ └── setFocusOnMenuButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2024-7-21_174946 │ │ ├── css │ │ ├── menu-button-actions.css │ │ └── menu-button-links.css │ │ ├── js │ │ ├── menu-button-actions-active-descendant.js │ │ ├── menu-button-actions.js │ │ └── menu-button-links.js │ │ ├── menu-button-actions-active-descendant.html │ │ ├── menu-button-actions-active-descendant.openMenuAndSetFocusToFirstItem.html │ │ ├── menu-button-actions-active-descendant.openMenuAndSetFocusToLastItem.html │ │ ├── menu-button-actions-active-descendant.setFocusAfterMenuButton.html │ │ ├── menu-button-actions-active-descendant.setFocusBeforeMenuButton.html │ │ └── menu-button-actions-active-descendant.setFocusOnMenuButton.html ├── menu-button-actions │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── openMenuAndSetFocusToFirstItem.js │ │ │ ├── openMenuAndSetFocusToLastItem.js │ │ │ ├── setFocusAfterMenuButton.js │ │ │ ├── setFocusBeforeMenuButton.js │ │ │ └── setFocusOnMenuButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2024-8-28_1295 │ │ ├── css │ │ ├── menu-button-actions.css │ │ └── menu-button-links.css │ │ ├── js │ │ ├── menu-button-actions-active-descendant.js │ │ ├── menu-button-actions.js │ │ └── menu-button-links.js │ │ ├── menu-button-actions.html │ │ ├── menu-button-actions.openMenuAndSetFocusToFirstItem.html │ │ ├── menu-button-actions.openMenuAndSetFocusToLastItem.html │ │ ├── menu-button-actions.setFocusAfterMenuButton.html │ │ ├── menu-button-actions.setFocusBeforeMenuButton.html │ │ └── menu-button-actions.setFocusOnMenuButton.html ├── menu-button-navigation │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── openMenuAndSetFocusToFirstItem.js │ │ │ ├── openMenuAndSetFocusToLastItem.js │ │ │ ├── setFocusAfterMenuButton.js │ │ │ ├── setFocusBeforeMenuButton.js │ │ │ └── setFocusOnMenuButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2024-8-12_123937 │ │ ├── css │ │ ├── menu-button-actions.css │ │ └── menu-button-links.css │ │ ├── js │ │ ├── menu-button-actions-active-descendant.js │ │ ├── menu-button-actions.js │ │ └── menu-button-links.js │ │ ├── menu-button-links.html │ │ ├── menu-button-links.openMenuAndSetFocusToFirstItem.html │ │ ├── menu-button-links.openMenuAndSetFocusToLastItem.html │ │ ├── menu-button-links.setFocusAfterMenuButton.html │ │ ├── menu-button-links.setFocusBeforeMenuButton.html │ │ └── menu-button-links.setFocusOnMenuButton.html ├── menubar-editor │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── focusonfirstlink.js │ │ │ ├── focusonfont.js │ │ │ ├── focusonsize.js │ │ │ ├── focusonstylecolor.js │ │ │ └── focusontextalign.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ ├── 2020-11-19_152059 │ │ ├── css │ │ │ ├── menubar-editor.css │ │ │ └── menubar-navigation.css │ │ ├── images │ │ │ ├── checkbox-checked-focus.svg │ │ │ ├── checkbox-checked.svg │ │ │ ├── down-arrow-focus.svg │ │ │ ├── down-arrow.svg │ │ │ ├── radio-checked-focus.svg │ │ │ ├── radio-checked.svg │ │ │ ├── separator.svg │ │ │ ├── up-arrow-focus.svg │ │ │ └── up-arrow.svg │ │ ├── js │ │ │ ├── menubar-editor.js │ │ │ ├── menubar-navigation.js │ │ │ └── style-manager.js │ │ └── menubar-editor.html │ │ ├── 2020-11-20_13316 │ │ ├── css │ │ │ ├── menubar-editor.css │ │ │ └── menubar-navigation.css │ │ ├── images │ │ │ ├── checkbox-checked-focus.svg │ │ │ ├── checkbox-checked.svg │ │ │ ├── down-arrow-focus.svg │ │ │ ├── down-arrow.svg │ │ │ ├── radio-checked-focus.svg │ │ │ ├── radio-checked.svg │ │ │ ├── separator.svg │ │ │ ├── up-arrow-focus.svg │ │ │ └── up-arrow.svg │ │ ├── js │ │ │ ├── menubar-editor.js │ │ │ ├── menubar-navigation.js │ │ │ └── style-manager.js │ │ └── menubar-editor.html │ │ └── 2020-11-23_175528 │ │ ├── css │ │ ├── menubar-editor.css │ │ └── menubar-navigation.css │ │ ├── images │ │ ├── checkbox-checked-focus.svg │ │ ├── checkbox-checked.svg │ │ ├── down-arrow-focus.svg │ │ ├── down-arrow.svg │ │ ├── radio-checked-focus.svg │ │ ├── radio-checked.svg │ │ ├── separator.svg │ │ ├── up-arrow-focus.svg │ │ └── up-arrow.svg │ │ ├── js │ │ ├── menubar-editor.js │ │ ├── menubar-navigation.js │ │ └── style-manager.js │ │ ├── menubar-editor.focusonfirstlink.html │ │ ├── menubar-editor.focusonfont.html │ │ ├── menubar-editor.focusonsize.html │ │ ├── menubar-editor.focusonstylecolor.html │ │ ├── menubar-editor.focusontextalign.html │ │ └── menubar-editor.html ├── meter │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterMeter.js │ │ │ ├── setFocusBeforeMeter.js │ │ │ ├── setFocusOnButton.js │ │ │ └── setFocusOnMeter.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2022-8-2_11826 │ │ ├── css │ │ └── meter.css │ │ ├── js │ │ └── meter.js │ │ ├── meter.html │ │ ├── meter.setFocusAfterMeter.html │ │ ├── meter.setFocusBeforeMeter.html │ │ ├── meter.setFocusOnButton.html │ │ └── meter.setFocusOnMeter.html ├── minimal-data-grid │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterGrid.js │ │ │ ├── setFocusBeforeGrid.js │ │ │ ├── setFocusOnFifthDataCell.js │ │ │ ├── setFocusOnFirstDataCell.js │ │ │ ├── setFocusOnFirstLinkedCell.js │ │ │ ├── setFocusOnFourthDataCell.js │ │ │ ├── setFocusOnLastDataCell.js │ │ │ ├── setFocusOnSecondDataCell.js │ │ │ ├── setFocusOnSecondLinkedCell.js │ │ │ └── setFocusOnSixthDataCell.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2021-3-8_151542 │ │ ├── css │ │ └── dataGrids.css │ │ ├── dataGrids.html │ │ ├── dataGrids.setFocusAfterGrid.html │ │ ├── dataGrids.setFocusBeforeGrid.html │ │ ├── dataGrids.setFocusOnFifthDataCell.html │ │ ├── dataGrids.setFocusOnFirstDataCell.html │ │ ├── dataGrids.setFocusOnFirstLinkedCell.html │ │ ├── dataGrids.setFocusOnFourthDataCell.html │ │ ├── dataGrids.setFocusOnLastDataCell.html │ │ ├── dataGrids.setFocusOnSecondDataCell.html │ │ ├── dataGrids.setFocusOnSecondLinkedCell.html │ │ ├── dataGrids.setFocusOnSixthDataCell.html │ │ ├── imgs │ │ └── black_keys.png │ │ └── js │ │ ├── dataGrid.js │ │ ├── dataGrids.js │ │ └── utils.js ├── modal-dialog │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── moveFocusToAddDeliveryAddressButton.js │ │ │ ├── openAddDeliveryAddressDialogAndFocusAddButton.js │ │ │ ├── openAddDeliveryAddressDialogAndFocusAddDeliveryAddressHeading.js │ │ │ ├── openAddDeliveryAddressDialogAndFocusCancelButton.js │ │ │ ├── openAddDeliveryAddressDialogAndFocusFirstInput.js │ │ │ ├── openAddressAddedDialogAndFocusAddressAddedHeading.js │ │ │ ├── openAddressAddedDialogAndFocusOKButton.js │ │ │ └── openVerificationResultDialogAndFocusCloseButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2022-4-7_15544 │ │ ├── css │ │ └── dialog.css │ │ ├── dialog.html │ │ ├── dialog.moveFocusToAddDeliveryAddressButton.html │ │ ├── dialog.openAddDeliveryAddressDialogAndFocusAddButton.html │ │ ├── dialog.openAddDeliveryAddressDialogAndFocusAddDeliveryAddressHeading.html │ │ ├── dialog.openAddDeliveryAddressDialogAndFocusCancelButton.html │ │ ├── dialog.openAddDeliveryAddressDialogAndFocusFirstInput.html │ │ ├── dialog.openAddressAddedDialogAndFocusAddressAddedHeading.html │ │ ├── dialog.openAddressAddedDialogAndFocusOKButton.html │ │ ├── dialog.openVerificationResultDialogAndFocusCloseButton.html │ │ └── js │ │ ├── dialog.js │ │ └── utils.js ├── radiogroup-aria-activedescendant │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── checkFirstRadioButtonAndSetFocusAfterRadioGroup.js │ │ │ ├── checkFirstRadioButtonAndSetFocusBeforeRadioGroup.js │ │ │ ├── checkThirdRadioButtonAndSetFocusAfterRadioGroup.js │ │ │ ├── setFocusAfterRadioGroup.js │ │ │ ├── setFocusBeforeRadioGroup.js │ │ │ ├── setFocusOnAndCheckFirstRadioButton.js │ │ │ ├── setFocusOnFirstRadioButton.js │ │ │ ├── setFocusOnFirstRadioButtonAndCheckSecondRadioButton.js │ │ │ ├── setFocusOnSecondRadioButton.js │ │ │ ├── setFocusOnSecondRadioButtonAndCheckFirstRadioButton.js │ │ │ └── setFocusOnThirdRadioButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2022-4-7_113015 │ │ ├── css │ │ └── radio.css │ │ ├── js │ │ └── radio-activedescendant.js │ │ ├── radio-activedescendant.checkFirstRadioButtonAndSetFocusAfterRadioGroup.html │ │ ├── radio-activedescendant.checkFirstRadioButtonAndSetFocusBeforeRadioGroup.html │ │ ├── radio-activedescendant.checkThirdRadioButtonAndSetFocusAfterRadioGroup.html │ │ ├── radio-activedescendant.html │ │ ├── radio-activedescendant.setFocusAfterRadioGroup.html │ │ ├── radio-activedescendant.setFocusBeforeRadioGroup.html │ │ ├── radio-activedescendant.setFocusOnAndCheckFirstRadioButton.html │ │ ├── radio-activedescendant.setFocusOnFirstRadioButton.html │ │ ├── radio-activedescendant.setFocusOnFirstRadioButtonAndCheckSecondRadioButton.html │ │ ├── radio-activedescendant.setFocusOnSecondRadioButton.html │ │ ├── radio-activedescendant.setFocusOnSecondRadioButtonAndCheckFirstRadioButton.html │ │ └── radio-activedescendant.setFocusOnThirdRadioButton.html ├── radiogroup-roving-tabindex │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── checkFirstRadioButtonAndSetFocusAfterRadioGroup.js │ │ │ ├── checkFirstRadioButtonAndSetFocusBeforeRadioGroup.js │ │ │ ├── checkThirdRadioButtonAndSetFocusAfterRadioGroup.js │ │ │ ├── setFocusAfterRadioGroup.js │ │ │ ├── setFocusBeforeRadioGroup.js │ │ │ ├── setFocusOnAndCheckFirstRadioButton.js │ │ │ ├── setFocusOnFirstRadioButton.js │ │ │ ├── setFocusOnFirstRadioButtonAndCheckSecondRadioButton.js │ │ │ ├── setFocusOnSecondRadioButton.js │ │ │ ├── setFocusOnSecondRadioButtonAndCheckFirstRadioButton.js │ │ │ └── setFocusOnThirdRadioButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2021-3-15_144141 │ │ ├── css │ │ └── radio.css │ │ ├── js │ │ └── radio.js │ │ ├── radio.checkFirstRadioButtonAndSetFocusAfterRadioGroup.html │ │ ├── radio.checkFirstRadioButtonAndSetFocusBeforeRadioGroup.html │ │ ├── radio.checkThirdRadioButtonAndSetFocusAfterRadioGroup.html │ │ ├── radio.html │ │ ├── radio.setFocusAfterRadioGroup.html │ │ ├── radio.setFocusBeforeRadioGroup.html │ │ ├── radio.setFocusOnAndCheckFirstRadioButton.html │ │ ├── radio.setFocusOnFirstRadioButton.html │ │ ├── radio.setFocusOnFirstRadioButtonAndCheckSecondRadioButton.html │ │ ├── radio.setFocusOnSecondRadioButton.html │ │ ├── radio.setFocusOnSecondRadioButtonAndCheckFirstRadioButton.html │ │ └── radio.setFocusOnThirdRadioButton.html ├── rating-radio-group │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── checkFifthRadioButtonAndSetFocusAfterRadioGroup.js │ │ │ ├── checkFirstRadioButtonAndSetFocusBeforeRadioGroup.js │ │ │ ├── setFocusAfterRadioGroup.js │ │ │ ├── setFocusBeforeRadioGroup.js │ │ │ ├── setFocusOnAndCheckFirstRadioButton.js │ │ │ ├── setFocusOnFifthRadioButton.js │ │ │ ├── setFocusOnFirstRadioButton.js │ │ │ ├── setFocusOnFirstRadioButtonAndCheckSecondRadioButton.js │ │ │ ├── setFocusOnSecondRadioButton.js │ │ │ └── setFocusOnSecondRadioButtonAndCheckFirstRadioButton.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2025-4-8_12716 │ │ ├── css │ │ ├── radio-rating.css │ │ └── radio.css │ │ ├── js │ │ ├── radio-activedescendant.js │ │ ├── radio-rating.js │ │ └── radio.js │ │ ├── radio-rating.checkFifthRadioButtonAndSetFocusAfterRadioGroup.html │ │ ├── radio-rating.checkFirstRadioButtonAndSetFocusBeforeRadioGroup.html │ │ ├── radio-rating.html │ │ ├── radio-rating.setFocusAfterRadioGroup.html │ │ ├── radio-rating.setFocusBeforeRadioGroup.html │ │ ├── radio-rating.setFocusOnAndCheckFirstRadioButton.html │ │ ├── radio-rating.setFocusOnFifthRadioButton.html │ │ ├── radio-rating.setFocusOnFirstRadioButton.html │ │ ├── radio-rating.setFocusOnFirstRadioButtonAndCheckSecondRadioButton.html │ │ ├── radio-rating.setFocusOnSecondRadioButton.html │ │ └── radio-rating.setFocusOnSecondRadioButtonAndCheckFirstRadioButton.html ├── rating-slider │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterSlider.js │ │ │ ├── setFocusBeforeSlider.js │ │ │ ├── setFocusOnSlider.js │ │ │ ├── setFocusOnSliderAndSetValueToFive.js │ │ │ ├── setFocusOnSliderAndSetValueToOne.js │ │ │ └── setFocusOnSliderAndSetValueToOneHalfStar.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2021-9-21_13436 │ │ ├── css │ │ └── slider-rating.css │ │ ├── js │ │ └── slider-rating.js │ │ ├── slider-rating.html │ │ ├── slider-rating.setFocusAfterSlider.html │ │ ├── slider-rating.setFocusBeforeSlider.html │ │ ├── slider-rating.setFocusOnSlider.html │ │ ├── slider-rating.setFocusOnSliderAndSetValueToFive.html │ │ ├── slider-rating.setFocusOnSliderAndSetValueToOne.html │ │ └── slider-rating.setFocusOnSliderAndSetValueToOneHalfStar.html ├── resources │ ├── EXAMPLE_RESULT.html │ ├── TEMPLATE_TEST_FILE.html │ ├── aria-at-harness.mjs │ ├── aria-at-test-io-format.mjs │ ├── aria-at-test-run.mjs │ ├── aria-at-test-window.mjs │ ├── at-commands.mjs │ ├── keys.mjs │ ├── types │ │ ├── aria-at-test-result.js │ │ └── aria-at-test-run.js │ └── vrender.mjs ├── seek-slider │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── setFocusAfterSlider.js │ │ │ ├── setFocusBeforeSlider.js │ │ │ └── setFocusOnSlider.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ ├── 2021-9-21_14461 │ │ ├── css │ │ │ └── slider-seek.css │ │ ├── js │ │ │ └── slider-seek.js │ │ └── slider-seek.html │ │ └── 2021-9-21_14462 │ │ ├── css │ │ └── slider-seek.css │ │ ├── js │ │ └── slider-seek.js │ │ ├── slider-seek.html │ │ ├── slider-seek.setFocusAfterSlider.html │ │ ├── slider-seek.setFocusBeforeSlider.html │ │ └── slider-seek.setFocusOnSlider.html ├── slider-multithumb │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterSlider.js │ │ │ ├── setFocusBeforeSlider.js │ │ │ ├── setFocusOnSlider.js │ │ │ ├── setFocusOnSliderAndSetValueToFive.js │ │ │ ├── setFocusOnSliderAndSetValueToOne.js │ │ │ └── setFocusOnSliderAndSetValueToOneHalfStar.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2023-3-20_134749 │ │ ├── css │ │ └── slider-multithumb.css │ │ ├── js │ │ └── slider-multithumb.js │ │ ├── slider-multithumb.html │ │ ├── slider-multithumb.setFocusAfterSlider.html │ │ ├── slider-multithumb.setFocusBeforeSlider.html │ │ ├── slider-multithumb.setFocusOnSlider.html │ │ ├── slider-multithumb.setFocusOnSliderAndSetValueToFive.html │ │ ├── slider-multithumb.setFocusOnSliderAndSetValueToOne.html │ │ └── slider-multithumb.setFocusOnSliderAndSetValueToOneHalfStar.html ├── support.json ├── switch │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── setFocusAfterAndTurnOnSwitch.js │ │ │ ├── setFocusAfterSwitch.js │ │ │ ├── setFocusBeforeAndTurnOnSwitch.js │ │ │ ├── setFocusBeforeSwitch.js │ │ │ ├── setFocusOnAndTurnOnSwitch.js │ │ │ └── setFocusOnSwitch.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2022-8-1_103716 │ │ ├── css │ │ ├── switch-button.css │ │ ├── switch-checkbox.css │ │ └── switch.css │ │ ├── js │ │ ├── switch-button.js │ │ ├── switch-checkbox.js │ │ └── switch.js │ │ ├── switch.html │ │ ├── switch.setFocusAfterAndTurnOnSwitch.html │ │ ├── switch.setFocusAfterSwitch.html │ │ ├── switch.setFocusBeforeAndTurnOnSwitch.html │ │ ├── switch.setFocusBeforeSwitch.html │ │ ├── switch.setFocusOnAndTurnOnSwitch.html │ │ └── switch.setFocusOnSwitch.html ├── tabs-manual-activation │ ├── data │ │ ├── commands.csv │ │ ├── js │ │ │ ├── activateThirdTabAndSetFocusOnTabpanel.js │ │ │ ├── setFocusAfterTabpanel.js │ │ │ ├── setFocusBeforeTablist.js │ │ │ ├── setFocusOnFirstTab.js │ │ │ ├── setFocusOnSecondTab.js │ │ │ └── setFocusOnThirdTab.js │ │ ├── references.csv │ │ └── tests.csv │ └── reference │ │ └── 2021-2-15_124757 │ │ ├── css │ │ └── tabs.css │ │ ├── js │ │ └── tabs.js │ │ ├── tabs.activateThirdTabAndSetFocusOnTabpanel.html │ │ ├── tabs.html │ │ ├── tabs.setFocusAfterTabpanel.html │ │ ├── tabs.setFocusBeforeTablist.html │ │ ├── tabs.setFocusOnFirstTab.html │ │ ├── tabs.setFocusOnSecondTab.html │ │ └── tabs.setFocusOnThirdTab.html ├── toggle-button │ ├── data │ │ ├── assertions.csv │ │ ├── jaws-commands.csv │ │ ├── js │ │ │ ├── setFocusAfterButton.js │ │ │ ├── setFocusAfterButtonAndSetStateToPressed.js │ │ │ ├── setFocusBeforeButton.js │ │ │ ├── setFocusBeforeButtonAndSetStateToPressed.js │ │ │ ├── setFocusOnButton.js │ │ │ └── setFocusOnButtonAndSetStateToPressed.js │ │ ├── nvda-commands.csv │ │ ├── references.csv │ │ ├── scripts.csv │ │ ├── tests.csv │ │ └── voiceover_macos-commands.csv │ └── reference │ │ └── 2022-4-8_135651 │ │ ├── button.html │ │ ├── button.setFocusAfterButton.html │ │ ├── button.setFocusAfterButtonAndSetStateToPressed.html │ │ ├── button.setFocusBeforeButton.html │ │ ├── button.setFocusBeforeButtonAndSetStateToPressed.html │ │ ├── button.setFocusOnButton.html │ │ ├── button.setFocusOnButtonAndSetStateToPressed.html │ │ ├── css │ │ └── button.css │ │ └── js │ │ └── button.js └── vertical-temperature-slider │ ├── data │ ├── assertions.csv │ ├── jaws-commands.csv │ ├── js │ │ ├── setFocusAfterSlider.js │ │ ├── setFocusBeforeSlider.js │ │ └── setFocusOnSlider.js │ ├── nvda-commands.csv │ ├── references.csv │ ├── scripts.csv │ ├── tests.csv │ └── voiceover_macos-commands.csv │ └── reference │ └── 2021-9-21_142211 │ ├── css │ └── slider-temperature.css │ ├── js │ └── slider-temperature.js │ ├── slider-temperature.html │ ├── slider-temperature.setFocusAfterSlider.html │ ├── slider-temperature.setFocusBeforeSlider.html │ └── slider-temperature.setFocusOnSlider.html ├── types ├── aria-at-csv.js ├── aria-at-file.js ├── aria-at-parsed.js └── aria-at-validated.js └── w3c.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent coding styles 2 | # between different editors and IDEs. 3 | 4 | # EditorConfig has support in a wide range of text editors. You can view a 5 | # complete list—or download a plugin—at the EditorConfig website: 6 | # http://editorconfig.org/#download 7 | 8 | # More about editorconfig files on their website: http://EditorConfig.org 9 | 10 | # For now, this is the topmost editor config file. 11 | # Set to false if aria repo gets one. 12 | root = true 13 | 14 | 15 | # Unix-style newlines with a newline ending every file 16 | [*] 17 | charset = "utf-8" 18 | end_of_line = lf 19 | insert_final_newline = true 20 | trim_trailing_whitespace = true 21 | 22 | [*.{html,css,js}] 23 | indent_style = space 24 | indent_size = 2 25 | 26 | [*.md] 27 | trim_trailing_whitespace = false 28 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js text eol=lf 2 | *.mjs text eol=lf 3 | 4 | # build folder 5 | /build/**/*.json -diff -merge 6 | /build/**/*.html linguist-generated=true 7 | /build/*.json -diff -merge 8 | /build/*.html linguist-generated=true 9 | /build/index.html -diff -merge 10 | /build/index.html linguist-generated=true 11 | /build/review/*.html -diff -merge 12 | /build/review/*.html linguist-generated=true 13 | /build/tests/*/*.html -diff -merge 14 | /build/tests/*/*.html linguist-generated=true 15 | /build/tests/*/*.json -diff -merge 16 | /build/tests/*/*.json linguist-generated=true 17 | /build/tests/*/*.mjs -diff -merge 18 | /build/tests/*/*.mjs linguist-generated=true 19 | 20 | 21 | # ignore line endings changes for *.html files inside tests folder 22 | /tests/**/*.html -crlf 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/agenda-item.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Add an agenda item 3 | about: Use this template to bring up a topic in the weekly ARIA-AT Community Group 4 | meeting. 5 | title: '' 6 | labels: '' 7 | assignees: '' 8 | --- 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Report a bug 3 | about: Use this template for bugs. 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | --- 8 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/test-feedback.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feedback about tests 3 | about: Use this template to give feedback about tests. 4 | title: 'Feedback on test:' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | 14 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'npm' 4 | open-pull-requests-limit: 99 5 | directory: '/' 6 | schedule: 7 | interval: 'monthly' 8 | groups: 9 | dependencies: 10 | applies-to: version-updates 11 | patterns: 12 | - '*' 13 | update-types: 14 | - 'minor' 15 | - 'patch' 16 | - package-ecosystem: 'github-actions' 17 | open-pull-requests-limit: 99 18 | directory: '/' 19 | schedule: 20 | interval: 'daily' 21 | -------------------------------------------------------------------------------- /.github/workflows/ensure-build-directory-is-absent.yml: -------------------------------------------------------------------------------- 1 | name: Ensure that the "build" directory is absent 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | ensure-build-directory-is-absent: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v4 12 | with: 13 | ref: refs/pull/${{ github.event.pull_request.number }}/head 14 | fetch-depth: 0 15 | 16 | - name: Verify that the "build" directory is absent 17 | run: '[ ! -d build ]' 18 | -------------------------------------------------------------------------------- /.github/workflows/generate-and-commit-files.yml: -------------------------------------------------------------------------------- 1 | name: Generate and Commit Files 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | generate-and-commit-files: 8 | runs-on: ${{ matrix.os }} 9 | 10 | strategy: 11 | fail-fast: false 12 | matrix: 13 | os: [ubuntu-latest, windows-latest] 14 | 15 | steps: 16 | - uses: actions/checkout@v4 17 | with: 18 | ref: refs/pull/${{ github.event.pull_request.number }}/head 19 | fetch-depth: 0 20 | 21 | - name: Use Node.js 22 | uses: actions/setup-node@v4 23 | with: 24 | node-version: '20.x' 25 | cache: 'npm' 26 | 27 | - name: Install dependencies 28 | run: npm ci 29 | 30 | - name: Generate test and review files 31 | run: | 32 | npm run create-all-tests -- --verbose 33 | npm run review-tests 34 | 35 | - uses: stefanzweifel/git-auto-commit-action@v5 36 | if: ${{ matrix.os == 'ubuntu-latest' && github.actor != 'dependabot[bot]' }} 37 | with: 38 | commit_message: Generate .html source files with scripts automatically 39 | -------------------------------------------------------------------------------- /.github/workflows/js-lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint JS 2 | 3 | on: 4 | push: 5 | paths: 6 | - '**/*.js' 7 | - 'package*.json' 8 | - '.eslintrc.json' 9 | - '.github/workflows/js-lint.yml' 10 | branches-ignore: 11 | - 'dependabot/**' 12 | pull_request: 13 | paths: 14 | - '**/*.js' 15 | - 'package*.json' 16 | - '.eslintrc.json' 17 | - '.github/workflows/js-lint.yml' 18 | 19 | jobs: 20 | lint: 21 | runs-on: ubuntu-latest 22 | 23 | steps: 24 | - uses: actions/checkout@v4 25 | 26 | - name: Use Node.js 27 | uses: actions/setup-node@v4 28 | with: 29 | node-version: '20.x' 30 | cache: 'npm' 31 | 32 | - name: Install dependencies 33 | run: npm ci 34 | 35 | - name: Run linter 36 | run: npm run lint 37 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Run tests 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | test: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v4 12 | with: 13 | ref: refs/pull/${{ github.event.pull_request.number }}/head 14 | fetch-depth: 0 15 | 16 | - name: Use Node.js 17 | uses: actions/setup-node@v4 18 | with: 19 | node-version: '20.x' 20 | cache: 'npm' 21 | 22 | - name: Install dependencies 23 | run: npm ci 24 | 25 | - name: Run npm test 26 | run: npm test 27 | -------------------------------------------------------------------------------- /.github/workflows/update-pr.yml: -------------------------------------------------------------------------------- 1 | name: 'Update Pull Request with Preview Link' 2 | 3 | on: pull_request_target 4 | 5 | jobs: 6 | update_pr: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: tzkhan/pr-update-action@v2 10 | with: 11 | repo-token: '${{ secrets.GITHUB_TOKEN }}' 12 | head-branch-regex: '.*' 13 | title-template: '' 14 | body-template: '[Preview Tests](https://deploy-preview-${{ github.event.pull_request.number }}--aria-at.netlify.app)' 15 | body-update-action: prefix 16 | body-uppercase-head-match: false 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .#* 3 | .DS_* 4 | .eslintcache 5 | build 6 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npx lint-staged 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | tests/resources/keys.mjs 2 | 3 | tests/**/reference/**/* 4 | build/tests/**/* 5 | 6 | __test__/__mocks__/tests/**/reference/**/* 7 | __test__/build/tests/**/* 8 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "printWidth": 100, 4 | "arrowParens": "avoid", 5 | "trailingComma": "es5" 6 | } 7 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | All documentation, code and communication under this repository are covered by the [W3C Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/). 4 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Accessible Rich Internet Applications Working Group 2 | 3 | Contributions to this repository are intended to become part of Recommendation-track documents governed by the 4 | [W3C Patent Policy](https://www.w3.org/Consortium/Patent-Policy-20040205/) and 5 | [Document License](https://www.w3.org/Consortium/Legal/copyright-documents). To make substantive contributions to specifications, you must either participate 6 | in the relevant W3C Working Group or make a non-member patent licensing commitment. 7 | 8 | If you are not the sole contributor to a contribution (pull request), please identify all 9 | contributors in the pull request comment. 10 | 11 | To add a contributor (other than yourself, that's automatic), mark them one per line as follows: 12 | 13 | ``` 14 | +@github_username 15 | ``` 16 | 17 | If you added a contributor by mistake, you can remove them in a comment with: 18 | 19 | ``` 20 | -@github_username 21 | ``` 22 | 23 | If you are making a pull request on behalf of someone else but you had no part in designing the 24 | feature, you can remove yourself with the above syntax. 25 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | All documents in this Repository are licensed by contributors 2 | under the 3 | [W3C Document License](https://www.w3.org/Consortium/Legal/copyright-documents). 4 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/data/assertions.csv: -------------------------------------------------------------------------------- 1 | assertionId,priority,assertionStatement,assertionPhrase,refIds 2 | roleAlert,3,Role 'alert' is conveyed,convey role 'alert', 3 | textHello,1,Text 'Hello' is conveyed,convey text 'Hello', 4 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | triggerAlert,space,virtualCursor,,1.0 3 | triggerAlert,enter,virtualCursor,,1.1 4 | triggerAlert,space,pcCursor,,2.0 5 | triggerAlert,jaws nvda vo del delete esc escape jaws+space nvda+space vo+space,pcCursor,,2.1 6 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/data/js/setFocusOnButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Trigger Alert' button 2 | testPageDocument.querySelector('#alert-trigger').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | triggerAlert,space,browseMode,,1.0 3 | triggerAlert,enter,browseMode,,1.1 4 | triggerAlert,space,focusMode,,2.0 5 | triggerAlert,enter,focusMode,,2.1 6 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Alert Example, 5 | reference,metadata,reference/2022-4-8_144013/alert.html,Test Case Page for Alert Example 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/alert/,APG Pattern: Alert 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/alert/examples/alert/,APG Example: Alert 8 | alert,aria,alert,alert 9 | aria-live,aria,aria-live,aria-live 10 | aria-atomic,aria,aria-atomic,aria-atomic 11 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusOnButton,sets focus on the 'Trigger Alert' button 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/data/tests.csv: -------------------------------------------------------------------------------- 1 | testId,title,presentationNumber,setupScript,instructions,assertions 2 | triggerAlert,Trigger an alert,3,setFocusOnButton,"Starting at the 'Trigger Alert' button, activate the button to trigger the alert.",roleAlert textHello 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | triggerAlert,ctrl+opt+space,,,3.0 3 | triggerAlert,space,,,3.1 4 | triggerAlert,enter,,,3.2 5 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/reference/2022-4-8_144013/css/alert.css: -------------------------------------------------------------------------------- 1 | [role="alert"] { 2 | padding: 10px; 3 | border: 2px solid hsl(206deg 74% 54%); 4 | border-radius: 4px; 5 | background: hsl(206deg 74% 90%); 6 | } 7 | 8 | [role="alert"]:empty { 9 | display: none; 10 | } 11 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/alert/reference/2022-4-8_144013/js/alert.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This content is licensed according to the W3C Software License at 3 | * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document 4 | * 5 | */ 6 | 7 | 'use strict'; 8 | 9 | window.addEventListener('load', function () { 10 | var button = document.getElementById('alert-trigger'); 11 | 12 | button.addEventListener('click', addAlert); 13 | }); 14 | 15 | /* 16 | * @function addAlert 17 | * 18 | * @desc Adds an alert to the page 19 | * 20 | * @param {object} event - Standard W3C event object 21 | * 22 | */ 23 | 24 | function addAlert() { 25 | var example = document.getElementById('example'); 26 | var template = document.getElementById('alert-template').innerHTML; 27 | 28 | example.innerHTML = template; 29 | } 30 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/data/js/setFocusAfterBanner.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the banner landmark 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/data/js/setFocusAfterBannerAndHideBottomLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the banner landmark, and hides the last link inside the landmark region 2 | testPageDocument.getElementById('bottom').setAttribute('hidden', ''); 3 | testPageDocument.getElementById('afterlink').focus(); 4 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/data/js/setFocusBeforeBanner.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the banner landmark 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/data/js/setFocusBeforeBannerAndHideTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the banner landmark, and hides the first link inside the landmark region 2 | testPageDocument.getElementById('top').setAttribute('hidden', ''); 3 | testPageDocument.getElementById('beforelink').focus(); 4 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/data/js/setFocusOnBottomLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Bottom' link 2 | testPageDocument.getElementById('bottom').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/data/js/setFocusOnTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Top' link 2 | testPageDocument.getElementById('top').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Banner Landmark 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2021-10-24_135455/banner.html 6 | designPattern,https://w3c.github.io/aria-practices/#aria_lh_banner 7 | example,https://w3c.github.io/aria-practices/examples/landmarks/banner.html 8 | banner,https://w3c.github.io/aria/#banner 9 | aria-haspopup,https://w3c.github.io/aria/#aria-haspopup 10 | aria-describedby,https://w3c.github.io/aria/#aria-describedby 11 | aria-expanded,https://w3c.github.io/aria/#aria-expanded -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-jaws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-jaws.png -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-nvda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-nvda.png -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-orca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-orca.png -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-skipto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-skipto.png -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-vo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/landmarks-vo.png -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/w3c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/__test__/__mocks__/tests/banner/reference/2021-10-24_135455/images/w3c.png -------------------------------------------------------------------------------- /__test__/__mocks__/tests/banner/reference/2021-10-24_135455/js/bootstrap-accessibility-2.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 University of Illinois 3 | * Authors: Jon Gunderson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /* global $ */ 19 | 20 | 'use strict'; 21 | 22 | // Removes the "tablist" role from bootstrap.js "nav" class objects 23 | $(document).ready(function () { 24 | $('ul.nav-stacked').removeAttr('role'); 25 | }); 26 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/assertions.csv: -------------------------------------------------------------------------------- 1 | assertionId,priority,assertionStatement,assertionPhrase,refIds 2 | namePrintPage,1,Name 'Print Page' is conveyed,convey name 'Print Page', 3 | roleButton,1,Role 'button' is conveyed,convey role 'button', 4 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToButton,down,virtualCursor,,1.0 3 | navForwardsToButton,b,virtualCursor,,1.1 4 | navForwardsToButton,f,virtualCursor,,1.2 5 | navForwardsToButton,tab,virtualCursor,,1.3 6 | navBackToButton,up,virtualCursor,,2.0 7 | navBackToButton,shift+b,virtualCursor,,2.1 8 | navBackToButton,shift+f,virtualCursor,,2.2 9 | navBackToButton,shift+tab,virtualCursor,,2.3 10 | navForwardsToButton,tab,pcCursor,,3.0 11 | navBackToButton,shift+tab,pcCursor,,4.0 12 | reqInfoAboutButton,ins+tab,virtualCursor,,7.0 13 | reqInfoAboutButton,ins+up,virtualCursor,,7.1 14 | reqInfoAboutButton,ins+tab,pcCursor,,8.0 15 | reqInfoAboutButton,ins+up,pcCursor,,8.1 16 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/js/setFocusAfterButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the button 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/js/setFocusBeforeButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the button 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/js/setFocusOnButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the button 2 | testPageDocument.querySelector('#action').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToButton,down,browseMode,,1.0 3 | navForwardsToButton,b,browseMode,,1.1 4 | navForwardsToButton,f,browseMode,,1.2 5 | navForwardsToButton,tab,browseMode,,1.3 6 | navBackToButton,up,browseMode,,2.0 7 | navBackToButton,shift+b,browseMode,,2.1 8 | navBackToButton,shift+f,browseMode,,2.2 9 | navBackToButton,shift+tab,browseMode,,2.3 10 | navForwardsToButton,tab,focusMode,,3.0 11 | navBackToButton,shift+tab,focusMode,,4.0 12 | reqInfoAboutButton,ins+tab,browseMode,,7.0 13 | reqInfoAboutButton,ins+up,browseMode,,7.1 14 | reqInfoAboutButton,ins+tab,focusMode,,8.0 15 | reqInfoAboutButton,ins+up,focusMode,,8.1 16 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Command Button Example, 5 | reference,metadata,reference/2022-4-8_124112/button.html,Test Case Page for Command Button Example 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/button/,APG Pattern: Button 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/button/examples/button/,APG Example: Button 8 | button,aria,button,button 9 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterButton,sets focus on a link after the button 3 | setFocusBeforeButton,sets focus on a link before the button 4 | setFocusOnButton,sets focus on the button 5 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/tests.csv: -------------------------------------------------------------------------------- 1 | testId,title,presentationNumber,setupScript,instructions,assertions 2 | navForwardsToButton,Navigate forwards to a button,5,setFocusBeforeButton,"Starting at the 'Navigate forwards from here' link, navigate to the 'Print Page' button.",roleButton namePrintPage 3 | navBackToButton,Navigate backwards to a button,6,setFocusAfterButton,"Starting at the 'Navigate backwards from here' link, navigate to the 'Print Page' button.",roleButton namePrintPage 4 | reqInfoAboutButton,Request information about a button,9,setFocusOnButton,"Starting at the 'Print Page' button, read information about the button.",roleButton namePrintPage 5 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/command-button/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToButton,ctrl+opt+right,,,5 3 | navForwardsToButton,b,singleQuickKeyNavOn,,5.3 4 | navForwardsToButton,tab,,,5.1 5 | navForwardsToButton,j ,singleQuickKeyNavOn,,5.2 6 | navBackToButton,ctrl+opt+left,,,6 7 | navBackToButton,shift+b,singleQuickKeyNavOn,,6.3 8 | navBackToButton,shift+tab,,,6.1 9 | navBackToButton,shift+j,singleQuickKeyNavOn,,6.2 10 | reqInfoAboutButton,ctrl+opt+f3,,,9 11 | reqInfoAboutButton,ctrl+opt+f4,,,9.1 12 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/horizontal-slider/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToSlider,down down,virtualCursor,,1 3 | navForwardsToSlider,f,virtualCursor,,1.1 4 | navForwardsToSlider,tab,virtualCursor,2:interactionModeEnabled,1.2 5 | navForwardsToSlider,tab,pcCursor,,1.3 6 | navBackToSlider,up,virtualCursor,,2 7 | navBackToSlider,shift+f,virtualCursor,,2.1 8 | navBackToSlider,shift+tab,virtualCursor,2:interactionModeEnabled,2.2 9 | navBackToSlider,shift+tab,pcCursor,,2.3 10 | reqInfoAboutSlider,ins+tab,virtualCursor,,7 11 | reqInfoAboutSlider,ins+up,virtualCursor,,7.1 12 | reqInfoAboutSlider,ins+tab,pcCursor,,8 13 | reqInfoAboutSlider,ins+up,pcCursor,,8.1 14 | incrementSliderByOneStep,right,pcCursor,,10 15 | incrementSliderByOneStep,up,pcCursor,,10.1 16 | decrementSliderByOneStep,left,pcCursor,,12 17 | decrementSliderByOneStep,down,pcCursor,,12.1 18 | incrementSliderByTenSteps,pageUp,pcCursor,,14 19 | decrementSliderByTenSteps,pageDown,pcCursor,,16 20 | decrementSliderToMinimumValue,home,pcCursor,,18 21 | incrementSliderToMaximumValue,end,pcCursor,,20 22 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/horizontal-slider/data/js/setFocusAfterRedSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the Red slider 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/horizontal-slider/data/js/setFocusBeforeRedSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the Red slider 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/horizontal-slider/data/js/setFocusOnRedSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Red' slider 2 | testPageDocument.querySelector('[role="slider"].red').focus(); 3 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/horizontal-slider/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToSlider,down down,browseMode,,1 3 | navForwardsToSlider,f,browseMode,,1.1 4 | navForwardsToSlider,tab,browseMode,2:interactionModeEnabled,1.2 5 | navForwardsToSlider,tab,focusMode,,1.3 6 | navBackToSlider,up,browseMode,,2 7 | navBackToSlider,shift+f,browseMode,,2.1 8 | navBackToSlider,shift+tab,browseMode,2:interactionModeEnabled,2.2 9 | navBackToSlider,shift+tab,focusMode,,2.3 10 | reqInfoAboutSlider,ins+tab,browseMode,,7 11 | reqInfoAboutSlider,ins+up,browseMode,,7.1 12 | reqInfoAboutSlider,ins+tab,focusMode,,8 13 | reqInfoAboutSlider,ins+up,focusMode,,8.1 14 | incrementSliderByOneStep,right,focusMode,,10 15 | incrementSliderByOneStep,up,focusMode,,10.1 16 | decrementSliderByOneStep,left,focusMode,,12 17 | decrementSliderByOneStep,down,focusMode,,12.1 18 | incrementSliderByTenSteps,pageUp,focusMode,,14 19 | decrementSliderByTenSteps,pageDown,focusMode,,16 20 | decrementSliderToMinimumValue,home,focusMode,,18 21 | incrementSliderToMaximumValue,end,focusMode,,20 22 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/horizontal-slider/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | title,metadata,Color Viewer Slider, 4 | authorEmail,metadata,isa.delcastillo5@gmail.com, 5 | reference,metadata,reference/2022-4-11_11511/slider-color-viewer.html,Test Case Page for Color Viewer Slider 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/slider/,APG Pattern: Slider 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/slider/examples/slider-color-viewer/,APG Example: Color Viewer Slider 8 | slider,aria,slider,slider 9 | aria-labelledby,aria,aria-labelledby,aria-labelledby 10 | aria-valuenow,aria,aria-valuenow,aria-valuenow 11 | aria-valuemin,aria,aria-valuemin,aria-valuemin 12 | aria-valuemax,aria,aria-valuemax,aria-valuemax 13 | aria-orientation,aria,aria-orientation,aria-orientation 14 | -------------------------------------------------------------------------------- /__test__/__mocks__/tests/horizontal-slider/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterRedSlider,sets focus on a link after the Red slider 3 | setFocusBeforeRedSlider,sets focus on a link before the Red slider 4 | setFocusOnRedSlider,sets focus on the 'Red' slider 5 | -------------------------------------------------------------------------------- /__test__/utils/index.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | /** 5 | * @param {string} directoryPath 6 | * @param {string[]} extensions - eg. ['.html', '.json'] 7 | * @returns {string[]} 8 | */ 9 | function getFiles(directoryPath, extensions = []) { 10 | const files = fs.readdirSync(directoryPath); 11 | 12 | // Return all files in directory 13 | if (!extensions.length) return files; 14 | 15 | // Return only files included in 'extensions' 16 | return files.filter(file => extensions.includes(path.extname(file).toLowerCase())); 17 | } 18 | 19 | function getFileContent(filePath) { 20 | return fs.readFileSync(filePath, 'utf-8'); 21 | } 22 | 23 | module.exports = { 24 | getFiles, 25 | getFileContent, 26 | }; 27 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['@babel/preset-env'], 3 | }; 4 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(js?|tsx?|ts?)$', 3 | transform: { 4 | '^.+\\.mjs$': 'babel-jest', 5 | }, 6 | testPathIgnorePatterns: ['/build/', '/node_modules/'], 7 | moduleFileExtensions: ['js', 'mjs'], 8 | }; 9 | -------------------------------------------------------------------------------- /lib/data/parse-support.js: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | 'use strict'; 5 | 6 | /** 7 | * @param {AriaATCSV.Support} supportRaw 8 | * @returns {AriaATParsed.Support} 9 | */ 10 | function parseSupport(supportRaw) { 11 | return { 12 | ats: supportRaw.ats, 13 | atGroups: [ 14 | ...Object.entries(supportRaw.applies_to).map(([name, value]) => ({ 15 | key: name.toLowerCase(), 16 | name, 17 | ats: value.map(key => supportRaw.ats.find(at => at.key === key) || { key }), 18 | })), 19 | ...supportRaw.ats.map(at => ({ 20 | key: at.key, 21 | name: at.name, 22 | ats: [at], 23 | })), 24 | ], 25 | testPlanStrings: supportRaw.testPlanStrings, 26 | references: supportRaw.references, 27 | }; 28 | } 29 | 30 | exports.parseSupport = parseSupport; 31 | -------------------------------------------------------------------------------- /lib/util/console.js: -------------------------------------------------------------------------------- 1 | const colors = { 2 | reset: '\x1b[0m', 3 | red: '\x1b[91m', 4 | green: '\x1b[92m', 5 | yellow: '\x1b[93m', 6 | }; 7 | 8 | const text = (text, { color = '', severity = 'log', performReset = true }) => { 9 | console[severity](`${color}${text}${performReset ? colors.reset : ''}`); 10 | }; 11 | 12 | module.exports = { 13 | consoleColors: colors, 14 | consoleText: text, 15 | }; 16 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "npm ci && npm run build" 3 | publish = "build" 4 | 5 | [build.environment] 6 | NODE_VERSION = "16" 7 | -------------------------------------------------------------------------------- /scripts/create-all-tests/index.js: -------------------------------------------------------------------------------- 1 | const createAllTests = require('./createAllTests'); 2 | 3 | createAllTests() 4 | .then(() => { 5 | // Do nothing, successfully ran 6 | }) 7 | .catch(error => { 8 | console.error(`createAllTests failed to successfully run: ${error.message}`); 9 | }); 10 | -------------------------------------------------------------------------------- /scripts/test-reviewer/getReferenceForDirectory.mjs: -------------------------------------------------------------------------------- 1 | /** 2 | * Get parsed values from tests//data/references.csv 3 | * 4 | * @param {AriaATCSV.Reference[]} references 5 | * @param {string} refId 6 | * @returns {{linkText: string, type: string, value: string}} 7 | */ 8 | const getReferenceForDirectory = (references, refId) => { 9 | const { type, value, linkText } = references.find(el => el.refId === refId) || {}; 10 | return { type, value, linkText }; 11 | }; 12 | 13 | export default getReferenceForDirectory; 14 | -------------------------------------------------------------------------------- /scripts/test-reviewer/getScriptsData.mjs: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import fse from 'fs-extra'; 3 | 4 | /** 5 | * @param {string} testPlanDirectory 6 | * @returns {string[]} 7 | */ 8 | const getScriptsData = testPlanDirectory => { 9 | const scriptsPath = path.join(testPlanDirectory, 'data', 'js'); 10 | const scripts = []; 11 | 12 | fse.readdirSync(scriptsPath).forEach(function (scriptFile) { 13 | let script = ''; 14 | try { 15 | const data = fse.readFileSync(path.join(scriptsPath, scriptFile), 'UTF-8'); 16 | const lines = data.split(/\r?\n/); 17 | lines.forEach(line => { 18 | if (line.trim().length) script += '\t' + line.trim() + '\n'; 19 | }); 20 | } catch (err) { 21 | console.error(err); 22 | } 23 | scripts.push(`\t${scriptFile.split('.js')[0]}: function(testPageDocument){\n${script}}`); 24 | }); 25 | 26 | return scripts; 27 | }; 28 | 29 | export default getScriptsData; 30 | -------------------------------------------------------------------------------- /scripts/test-reviewer/index.js: -------------------------------------------------------------------------------- 1 | const minimist = require('minimist'); 2 | // const createReviewPages = require('./createReviewPages.mjs').createReviewPages; 3 | 4 | const cliArgs = minimist(process.argv.slice(2), { 5 | alias: { 6 | h: 'help', 7 | t: 'testplan', 8 | }, 9 | }); 10 | 11 | if (cliArgs.help) { 12 | console.log(`Default use: 13 | No arguments: 14 | Generate review pages. 15 | Arguments: 16 | -h, --help 17 | Show this message. 18 | -t, --testplan 19 | Generate review page for an individual test plan directory. eg. --testplan=checkbox 20 | `); 21 | process.exit(); 22 | } 23 | 24 | const config = { args: cliArgs }; 25 | 26 | async function loadCreateReviewPages(config) { 27 | const _module = await import('./createReviewPages.mjs'); 28 | _module.createReviewPages(config); 29 | } 30 | 31 | loadCreateReviewPages(config) 32 | .then(() => console.log('Done.')) 33 | .catch(error => { 34 | console.error(`createReviewPages failed to successfully run: ${error.stack}`); 35 | }); 36 | -------------------------------------------------------------------------------- /scripts/test-reviewer/utils.mjs: -------------------------------------------------------------------------------- 1 | const unescapeHTML = string => 2 | string.replace( 3 | /&|<|>|'|"/g, 4 | tag => 5 | ({ 6 | '&': '&', 7 | '<': '<', 8 | '>': '>', 9 | ''': "'", 10 | '"': '"', 11 | })[tag] || tag 12 | ); 13 | 14 | export { unescapeHTML }; 15 | -------------------------------------------------------------------------------- /scripts/v2substitutionsForAssertionIds.csv: -------------------------------------------------------------------------------- 1 | oldWords,newWords 2 | a, 3 | an, 4 | backwards,back 5 | Change in state,state change 6 | in, 7 | information,info 8 | is conveyed, 9 | of, 10 | previous,prev 11 | radio button,radio 12 | the, 13 | -------------------------------------------------------------------------------- /scripts/v2substitutionsForCommands.csv: -------------------------------------------------------------------------------- 1 | screenReader,oldCommand,newCommand,settings 2 | VoiceOver,CTRL_OPT_CMD_(\w),$1 ,quickNavOn 3 | VoiceOver,SHIFT_CTRL_OPT_CMD_(\w),$1 ,quickNavOn 4 | VoiceOver,LEFT,LEFT,quickNavOff 5 | VoiceOver,RIGHT,RIGHT,quickNavOff 6 | VoiceOver,DOWN,DOWN,quickNavOff 7 | VoiceOver,UP,UP,quickNavOff 8 | -------------------------------------------------------------------------------- /scripts/v2substitutionsForTestIds.csv: -------------------------------------------------------------------------------- 1 | oldWords,newWords 2 | a, 3 | an, 4 | backwards,back 5 | in, 6 | in a group, 7 | information,info 8 | interaction, 9 | is conveyed, 10 | mode, 11 | Navigate,nav 12 | of, 13 | previous,prev 14 | radio button,radio 15 | Read,req 16 | reading, 17 | the, 18 | -------------------------------------------------------------------------------- /tests/accordion/data/js/setFocusOnAndCollapseFirstAccordionHeader.js: -------------------------------------------------------------------------------- 1 | // collapses and sets focus on the 'Personal Information' accordion header 2 | (() => { 3 | const header1Button = document.querySelector('#accordion1id'); 4 | const panel1 = document.querySelector('#sect1'); 5 | 6 | if (header1Button && panel1) { 7 | // Collapse the first accordion section 8 | header1Button.setAttribute('aria-expanded', 'false'); 9 | panel1.setAttribute('hidden', ''); // or panel1.hidden = true; 10 | 11 | header1Button.focus(); 12 | } else { 13 | console.error('SetupScript 2 Error: Accordion 1 elements not found (#accordion1id or #sect1)'); 14 | } 15 | })(); 16 | -------------------------------------------------------------------------------- /tests/accordion/data/js/setFocusOnFirstAccordionHeader.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Personal Information' accordion header 2 | testPageDocument.querySelector('button[aria-controls="sect1"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/accordion/data/js/setFocusOnNameInputField.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Name' input field in the 'Personal Information' region 2 | 3 | (() => { 4 | const nameInput = document.querySelector('#cufc1'); 5 | 6 | if (nameInput) { 7 | // Ensure the 'Personal Information' section is expanded (it is by default) 8 | 9 | nameInput.focus(); 10 | } else { 11 | console.error("SetupScript Error: 'Name' input field with ID #cufc1 not found."); 12 | } 13 | })(); 14 | -------------------------------------------------------------------------------- /tests/accordion/data/js/setFocusOnSecondAccordionHeader.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Billing Address' accordion header 2 | testPageDocument.querySelector('button[aria-controls="sect2"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/accordion/data/js/setFocusOnSecondAccordionHeaderAndCollapseFirstAccordionHeader.js: -------------------------------------------------------------------------------- 1 | // collapses the 'Personal Information' accordion header, and sets focus on the 'Billing Address' accordion header 2 | (() => { 3 | const header1Button = document.querySelector('#accordion1id'); 4 | const panel1 = document.querySelector('#sect1'); 5 | const header2Button = document.querySelector('#accordion2id'); 6 | 7 | if (header1Button && panel1 && header2Button) { 8 | header1Button.setAttribute('aria-expanded', 'false'); 9 | panel1.setAttribute('hidden', ''); // or panel1.hidden = true; 10 | 11 | header2Button.focus(); 12 | } else { 13 | console.error( 14 | 'SetupScript 4 Error: Accordion elements not found (#accordion1id, #sect1, or #accordion2id)' 15 | ); 16 | } 17 | })(); 18 | -------------------------------------------------------------------------------- /tests/accordion/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Accordion, 5 | reference,metadata,reference/2025-5-5_135654/accordion.html,Test Case Page for Accordion Example 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/accordion/,APG Pattern: Accordion 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/accordion/examples/accordion/,APG Example: Accordion Example 8 | aria-expanded,aria,aria-expanded,aria-expanded 9 | aria-labelledby,aria,aria-labelledby,aria-labelledby 10 | aria-required,aria,aria-required,aria-required 11 | region,aria,region,region 12 | button,htmlAam,button,button 13 | heading,htmlAam,heading,heading 14 | inputTypeText,htmlAam,inputTypeText,inputTypeText 15 | -------------------------------------------------------------------------------- /tests/accordion/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusBeforeAndCollapseFirstAccordionHeader,"collapses the 'Personal Information' accordion header, and sets focus on a link before it" 3 | setFocusBeforeFirstAccordionHeader,sets focus on a link before the 'Personal Information' accordion header 4 | setFocusOnAndCollapseFirstAccordionHeader,collapses and sets focus on the 'Personal Information' accordion header 5 | setFocusOnFirstAccordionHeader,sets focus on the 'Personal Information' accordion header 6 | setFocusOnSecondAccordionHeader,sets focus on the 'Billing Address' accordion header 7 | setFocusOnSecondAccordionHeaderAndCollapseFirstAccordionHeader,"collapses the 'Personal Information' accordion header, and sets focus on the 'Billing Address' accordion header" 8 | setFocusOnNameInputField,sets focus on the 'Name' input field in the 'Personal Information' region 9 | expandSecondAccordionHeaderAndSetFocusOnCollapsedFirstAccordionHeader,"expands the 'Billing Address' accordion header, and sets focus on the 'Personal Information' accordion header" 10 | -------------------------------------------------------------------------------- /tests/alert/data/assertions.csv: -------------------------------------------------------------------------------- 1 | assertionId,priority,assertionStatement,assertionPhrase,refIds 2 | roleAlert,3,Role 'alert' is conveyed,convey role 'alert', 3 | textHello,1,Text 'Hello' is conveyed,convey text 'Hello', 4 | -------------------------------------------------------------------------------- /tests/alert/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | triggerAlert,space,virtualCursor,,1.0 3 | triggerAlert,enter,virtualCursor,,1.1 4 | triggerAlert,space,pcCursor,,2.0 5 | triggerAlert,enter,pcCursor,,2.1 6 | -------------------------------------------------------------------------------- /tests/alert/data/js/setFocusOnButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Trigger Alert' button 2 | testPageDocument.querySelector('#alert-trigger').focus(); 3 | -------------------------------------------------------------------------------- /tests/alert/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | triggerAlert,space,browseMode,,1.0 3 | triggerAlert,enter,browseMode,,1.1 4 | triggerAlert,space,focusMode,,2.0 5 | triggerAlert,enter,focusMode,,2.1 6 | -------------------------------------------------------------------------------- /tests/alert/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Alert Example, 5 | reference,metadata,reference/2022-4-8_144013/alert.html,Test Case Page for Alert Example 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/alert/,APG Pattern: Alert 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/alert/examples/alert/,APG Example: Alert 8 | alert,aria,alert,alert 9 | aria-live,aria,aria-live,aria-live 10 | aria-atomic,aria,aria-atomic,aria-atomic 11 | -------------------------------------------------------------------------------- /tests/alert/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusOnButton,sets focus on the 'Trigger Alert' button 3 | -------------------------------------------------------------------------------- /tests/alert/data/tests.csv: -------------------------------------------------------------------------------- 1 | testId,title,presentationNumber,setupScript,instructions,assertions 2 | triggerAlert,Trigger an alert,3,setFocusOnButton,"Starting at the 'Trigger Alert' button, activate the button to trigger the alert.",roleAlert textHello 3 | -------------------------------------------------------------------------------- /tests/alert/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | triggerAlert,ctrl+opt+space,,,3.0 3 | triggerAlert,space,,,3.1 4 | triggerAlert,enter,,,3.2 5 | -------------------------------------------------------------------------------- /tests/alert/reference/2022-4-8_144013/css/alert.css: -------------------------------------------------------------------------------- 1 | [role="alert"] { 2 | padding: 10px; 3 | border: 2px solid hsl(206deg 74% 54%); 4 | border-radius: 4px; 5 | background: hsl(206deg 74% 90%); 6 | } 7 | 8 | [role="alert"]:empty { 9 | display: none; 10 | } 11 | -------------------------------------------------------------------------------- /tests/alert/reference/2022-4-8_144013/js/alert.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This content is licensed according to the W3C Software License at 3 | * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document 4 | * 5 | */ 6 | 7 | 'use strict'; 8 | 9 | window.addEventListener('load', function () { 10 | var button = document.getElementById('alert-trigger'); 11 | 12 | button.addEventListener('click', addAlert); 13 | }); 14 | 15 | /* 16 | * @function addAlert 17 | * 18 | * @desc Adds an alert to the page 19 | * 20 | * @param {object} event - Standard W3C event object 21 | * 22 | */ 23 | 24 | function addAlert() { 25 | var example = document.getElementById('example'); 26 | var template = document.getElementById('alert-template').innerHTML; 27 | 28 | example.innerHTML = template; 29 | } 30 | -------------------------------------------------------------------------------- /tests/banner/data/js/setFocusAfterBanner.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the banner landmark 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/banner/data/js/setFocusAfterBannerAndHideBottomLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the banner landmark, and hides the last link inside the landmark region 2 | testPageDocument.getElementById('bottom').setAttribute('hidden', ''); 3 | testPageDocument.getElementById('afterlink').focus(); 4 | -------------------------------------------------------------------------------- /tests/banner/data/js/setFocusBeforeBanner.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the banner landmark 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/banner/data/js/setFocusBeforeBannerAndHideTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the banner landmark, and hides the first link inside the landmark region 2 | testPageDocument.getElementById('top').setAttribute('hidden', ''); 3 | testPageDocument.getElementById('beforelink').focus(); 4 | -------------------------------------------------------------------------------- /tests/banner/data/js/setFocusOnBottomLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Bottom' link 2 | testPageDocument.getElementById('bottom').focus(); 3 | -------------------------------------------------------------------------------- /tests/banner/data/js/setFocusOnTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Top' link 2 | testPageDocument.getElementById('top').focus(); 3 | -------------------------------------------------------------------------------- /tests/banner/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Banner Landmark 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2021-10-24_135455/banner.html 6 | designPattern,https://w3c.github.io/aria-practices/#aria_lh_banner 7 | example,https://w3c.github.io/aria-practices/examples/landmarks/banner.html 8 | banner,https://w3c.github.io/aria/#banner 9 | aria-haspopup,https://w3c.github.io/aria/#aria-haspopup 10 | aria-describedby,https://w3c.github.io/aria/#aria-describedby 11 | aria-expanded,https://w3c.github.io/aria/#aria-expanded -------------------------------------------------------------------------------- /tests/banner/reference/2021-10-24_135455/images/landmarks-jaws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/banner/reference/2021-10-24_135455/images/landmarks-jaws.png -------------------------------------------------------------------------------- /tests/banner/reference/2021-10-24_135455/images/landmarks-nvda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/banner/reference/2021-10-24_135455/images/landmarks-nvda.png -------------------------------------------------------------------------------- /tests/banner/reference/2021-10-24_135455/images/landmarks-orca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/banner/reference/2021-10-24_135455/images/landmarks-orca.png -------------------------------------------------------------------------------- /tests/banner/reference/2021-10-24_135455/images/landmarks-skipto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/banner/reference/2021-10-24_135455/images/landmarks-skipto.png -------------------------------------------------------------------------------- /tests/banner/reference/2021-10-24_135455/images/landmarks-vo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/banner/reference/2021-10-24_135455/images/landmarks-vo.png -------------------------------------------------------------------------------- /tests/banner/reference/2021-10-24_135455/images/w3c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/banner/reference/2021-10-24_135455/images/w3c.png -------------------------------------------------------------------------------- /tests/banner/reference/2021-10-24_135455/js/bootstrap-accessibility-2.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 University of Illinois 3 | * Authors: Jon Gunderson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /* global $ */ 19 | 20 | 'use strict'; 21 | 22 | // Removes the "tablist" role from bootstrap.js "nav" class objects 23 | $(document).ready(function () { 24 | $('ul.nav-stacked').removeAttr('role'); 25 | }); 26 | -------------------------------------------------------------------------------- /tests/breadcrumb/data/js/setFocusAfterLastBreadcrumbLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the 'Breadcrumb Example' link 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/breadcrumb/data/js/setFocusBeforeFirstBreadcrumbLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the 'WAI-ARIA Authoring Practices' link 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/breadcrumb/data/js/setFocusOnFirstBreadcrumbLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'WAI-ARIA Authoring Practices' link 2 | testPageDocument.getElementById('breadcrumb1').focus(); 3 | -------------------------------------------------------------------------------- /tests/breadcrumb/data/js/setFocusOnLastBreadcrumbLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Breadcrumb Example' link 2 | testPageDocument.querySelector('[aria-current="page"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/breadcrumb/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | authorEmail,isa.delcastillo5@gmail.com 4 | title,Breadcrumb Example 5 | reference,reference/2022-8-2_132648/index.html 6 | designPattern,https://w3c.github.io/aria-practices/#breadcrumb 7 | example,https://w3c.github.io/aria-practices/examples/breadcrumb/index.html 8 | aria-label,https://w3c.github.io/aria/#aria-label 9 | aria-current,https://w3c.github.io/aria/#aria-current -------------------------------------------------------------------------------- /tests/breadcrumb/reference/2022-8-2_132648/css/breadcrumb.css: -------------------------------------------------------------------------------- 1 | nav.breadcrumb { 2 | padding: 0.8em 1em; 3 | border: 1px solid hsl(0deg 0% 90%); 4 | border-radius: 4px; 5 | background: hsl(300deg 14% 97%); 6 | } 7 | 8 | nav.breadcrumb ol { 9 | margin: 0; 10 | padding-left: 0; 11 | list-style: none; 12 | } 13 | 14 | nav.breadcrumb li { 15 | display: inline; 16 | } 17 | 18 | nav.breadcrumb li + li::before { 19 | display: inline-block; 20 | margin: 0 0.25em; 21 | transform: rotate(15deg); 22 | border-right: 0.1em solid currentcolor; 23 | height: 0.8em; 24 | content: ""; 25 | } 26 | 27 | nav.breadcrumb [aria-current="page"] { 28 | color: #000; 29 | font-weight: 700; 30 | text-decoration: none; 31 | } 32 | -------------------------------------------------------------------------------- /tests/checkbox-tri-state/data/js/moveFocusAfterFirstCheckbox.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the first checkbox 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/checkbox-tri-state/data/js/moveFocusBeforeFirstCheckbox.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the first checkbox 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/checkbox-tri-state/data/js/moveFocusToAndUncheckFirstCheckbox.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first checkbox and sets its state to unchecked 2 | const checkbox = testPageDocument.querySelector('[role="checkbox"]'); 3 | checkbox.setAttribute('aria-checked', 'false'); 4 | checkbox.focus(); 5 | -------------------------------------------------------------------------------- /tests/checkbox-tri-state/data/js/moveFocusToFirstCheckbox.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first checkbox 2 | testPageDocument.querySelector('[role="checkbox"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/checkbox-tri-state/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | authorEmail,isa.delcastillo5@gmail.com 4 | title,Checkbox Example (Mixed-State) 5 | reference,reference/2022-9-9_104148/checkbox-mixed.html 6 | designPattern,https://w3c.github.io/aria-practices/#checkbox 7 | example,https://w3c.github.io/aria-practices/examples/checkbox/checkbox-mixed.html 8 | checkbox,https://w3c.github.io/aria/#checkbox 9 | aria-controls,https://w3c.github.io/aria/#aria-controls 10 | aria-checked,https://w3c.github.io/aria/#aria-checked 11 | -------------------------------------------------------------------------------- /tests/checkbox/data/js/checkFirstCheckbox.js: -------------------------------------------------------------------------------- 1 | // Set aria-checked on first checkbox 2 | testPageDocument.querySelector('[role="checkbox"]').setAttribute('aria-checked', 'true'); 3 | -------------------------------------------------------------------------------- /tests/checkbox/data/js/moveFocusAndCheckFirstCheckbox.js: -------------------------------------------------------------------------------- 1 | // Move focus and set aria-checked on first checkbox 2 | const checkbox = testPageDocument.querySelector('[role="checkbox"]'); 3 | checkbox.focus(); 4 | checkbox.setAttribute('aria-checked', 'true'); 5 | -------------------------------------------------------------------------------- /tests/checkbox/data/js/moveFocusToFirstCheckbox.js: -------------------------------------------------------------------------------- 1 | // Move focus to first checkbox 2 | testPageDocument.querySelector('[role="checkbox"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/checkbox/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Michael Fairchild 3 | authorEmail,michael.fairchild@deque.com 4 | title,Checkbox Example (Two State) 5 | reference,reference/2020-11-23_175030/checkbox-1/checkbox-1.html 6 | designPattern,https://w3c.github.io/aria-practices/#checkbox 7 | example,https://w3c.github.io/aria-practices/examples/checkbox/checkbox-1/checkbox-1.html 8 | checkbox,https://w3c.github.io/aria/#checkbox 9 | group,https://w3c.github.io/aria/#group 10 | aria-checked,https://w3c.github.io/aria/#aria-checked 11 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby 12 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusAfterCombobox.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the Combobox 2 | testPageDocument.querySelector('#cb1-button').style.display = 'none'; 3 | testPageDocument.querySelector('#afterlink').focus(); 4 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusAfterComboboxAndSetValueToAlabama.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the Combobox, and sets the combobox value to 'Alabama' 2 | testPageDocument.querySelector('#cb1-button').style.display = 'none'; 3 | testPageDocument.defaultView.comboboxController.setValue('Alabama'); 4 | testPageDocument.querySelector('#afterlink').focus(); 5 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusBeforeCombobox.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the Combobox 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusBeforeComboboxAndSetValueToAlabama.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the Combobox, and sets the combobox value to 'Alabama' 2 | testPageDocument.defaultView.comboboxController.setValue('Alabama'); 3 | testPageDocument.querySelector('#beforelink').focus(); 4 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToAlabamaInListbox.js: -------------------------------------------------------------------------------- 1 | // expands the Combobox and places focus on 'Alabama' in the listbox popup 2 | testPageDocument.defaultView.comboboxController.open(); 3 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 4 | testPageDocument.defaultView.comboboxController.setVisualFocusListbox(); 5 | let opt = testPageDocument.querySelector('#lb1-al'); 6 | testPageDocument.defaultView.comboboxController.setOption(opt, true); 7 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToAlabamaInListboxAndSetInputCursorAtBeginning.js: -------------------------------------------------------------------------------- 1 | // expands the combobox, sets the combobox value to 'Alabama', places focus on that option in the listbox popup and positions the editing cursor at the beginning of the textbox 2 | testPageDocument.defaultView.comboboxController.open(); 3 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 4 | testPageDocument.defaultView.comboboxController.setVisualFocusListbox(); 5 | let opt = testPageDocument.querySelector('#lb1-al'); 6 | testPageDocument.defaultView.comboboxController.setOption(opt, true); 7 | testPageDocument.defaultView.comboboxController.comboboxNode.setSelectionRange(0, 0); 8 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToAlabamaInListboxAndSetInputCursorAtEnd.js: -------------------------------------------------------------------------------- 1 | // expands the combobox, sets the combobox value to 'Alabama', places focus on that option in the listbox popup and positions the editing cursor at the end of the textbox 2 | testPageDocument.defaultView.comboboxController.open(); 3 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 4 | testPageDocument.defaultView.comboboxController.setVisualFocusListbox(); 5 | let opt = testPageDocument.querySelector('#lb1-al'); 6 | let optTextLength = opt.textContent.length; 7 | testPageDocument.defaultView.comboboxController.setOption(opt, true); 8 | testPageDocument.defaultView.comboboxController.comboboxNode.setSelectionRange( 9 | optTextLength, 10 | optTextLength 11 | ); 12 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToAlaskaInListbox.js: -------------------------------------------------------------------------------- 1 | // expands the combobox, sets the combobox value to 'Alaska' and places focus on that option in the listbox popup 2 | testPageDocument.defaultView.comboboxController.open(); 3 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 4 | testPageDocument.defaultView.comboboxController.setVisualFocusListbox(); 5 | let opt = testPageDocument.querySelector('#lb1-ak'); 6 | testPageDocument.defaultView.comboboxController.setOption(opt, true); 7 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToAndExpandCombobox.js: -------------------------------------------------------------------------------- 1 | // sets focus on and expands the combobox 2 | testPageDocument.defaultView.comboboxController.open(); 3 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 4 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToAndExpandComboboxAndSetValueToA.js: -------------------------------------------------------------------------------- 1 | // sets focus on and expands the combobox, and sets the combobox value to 'a' 2 | testPageDocument.defaultView.comboboxController.setValue('a'); 3 | testPageDocument.defaultView.comboboxController.open(); 4 | testPageDocument.defaultView.comboboxController.comboboxNode.select(); 5 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 6 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToAndExpandComboboxAndSetValueToAWithInputTextDeselected.js: -------------------------------------------------------------------------------- 1 | // sets focus on and expands the combobox, sets the combobox value to 'a', and de-selects all text in the input 2 | testPageDocument.defaultView.comboboxController.setValue('a'); 3 | testPageDocument.defaultView.comboboxController.open(); 4 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 5 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToAndExpandComboboxAndSetValueToAlabama.js: -------------------------------------------------------------------------------- 1 | // sets focus on and expands the combobox, and sets the combobox value to 'Alabama' 2 | testPageDocument.defaultView.comboboxController.setValue('Alabama'); 3 | testPageDocument.defaultView.comboboxController.open(); 4 | testPageDocument.defaultView.comboboxController.comboboxNode.select(); 5 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 6 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToCombobox.js: -------------------------------------------------------------------------------- 1 | // sets focus on the combobox 2 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 3 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToComboboxAndSetValueToA.js: -------------------------------------------------------------------------------- 1 | // sets focus on the combobox, and sets the combobox value to 'a' 2 | testPageDocument.defaultView.comboboxController.setValue('a'); 3 | testPageDocument.defaultView.comboboxController.comboboxNode.select(); 4 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 5 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/js/moveFocusToComboboxAndSetValueToAlabama.js: -------------------------------------------------------------------------------- 1 | // sets focus on the combobox, and sets the combobox value to 'Alabama' 2 | testPageDocument.defaultView.comboboxController.setValue('Alabama'); 3 | testPageDocument.defaultView.comboboxController.comboboxNode.select(); 4 | testPageDocument.defaultView.comboboxController.comboboxNode.focus(); 5 | -------------------------------------------------------------------------------- /tests/combobox-autocomplete-both-updated/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,James Scholes 3 | authorEmail,james@pac.bz 4 | title,Combobox with Both List and Inline Autocomplete Example 5 | reference,reference/2020-12-11_16649/combobox-autocomplete-both.html 6 | designPattern,https://w3c.github.io/aria-practices/#combobox 7 | example,https://w3c.github.io/aria-practices/examples/combobox/combobox-autocomplete-both.html 8 | combobox,https://w3c.github.io/aria/#combobox 9 | listbox,https://w3c.github.io/aria/#listbox 10 | option,https://w3c.github.io/aria/#option 11 | aria-activedescendant,https://w3c.github.io/aria/#aria-activedescendant 12 | aria-autocomplete,https://w3c.github.io/aria/#aria-autocomplete 13 | aria-controls,https://w3c.github.io/aria/#aria-controls 14 | aria-label,https://w3c.github.io/aria/#aria-label 15 | aria-expanded,https://w3c.github.io/aria/#aria-expanded 16 | aria-selected,https://w3c.github.io/aria/#aria-selected 17 | -------------------------------------------------------------------------------- /tests/combobox-select-only/data/js/moveFocusAfterCombobox.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the Combobox 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/combobox-select-only/data/js/moveFocusBeforeCombobox.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the Combobox 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/combobox-select-only/data/js/moveFocusToCombobox.js: -------------------------------------------------------------------------------- 1 | // sets focus on the combobox 2 | testPageDocument.querySelector('[role="combobox"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/combobox-select-only/data/js/openListbox.js: -------------------------------------------------------------------------------- 1 | // sets focus on and expands the Combobox 2 | testPageDocument.querySelector('[role="combobox"]').focus(); 3 | testPageDocument.defaultView.selectController.updateMenuState(true); 4 | -------------------------------------------------------------------------------- /tests/combobox-select-only/data/js/openListboxToApple.js: -------------------------------------------------------------------------------- 1 | // sets focus on and expands the Combobox, and sets the focused option to 'Apple' 2 | testPageDocument.querySelector('[role="combobox"]').focus(); 3 | testPageDocument.defaultView.selectController.updateMenuState(true); 4 | testPageDocument.defaultView.selectController.onOptionChange(1); 5 | -------------------------------------------------------------------------------- /tests/combobox-select-only/data/js/openListboxToGuava.js: -------------------------------------------------------------------------------- 1 | // sets focus on and expands the Combobox, and sets the focused option to 'Guave' 2 | testPageDocument.querySelector('[role="combobox"]').focus(); 3 | testPageDocument.defaultView.selectController.updateMenuState(true); 4 | testPageDocument.defaultView.selectController.onOptionChange(11); 5 | -------------------------------------------------------------------------------- /tests/combobox-select-only/data/js/openListboxToHuckleberry.js: -------------------------------------------------------------------------------- 1 | // sets focus on and expands the Combobox, and sets the focused option to 'Huckleberry' 2 | testPageDocument.querySelector('[role="combobox"]').focus(); 3 | testPageDocument.defaultView.selectController.updateMenuState(true); 4 | testPageDocument.defaultView.selectController.onOptionChange(12); 5 | -------------------------------------------------------------------------------- /tests/combobox-select-only/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,James Scholes 3 | authorEmail,james@pac.bz 4 | title,Select Only Combobox Example 5 | reference,reference/combobox-select-only.html 6 | example,https://w3c.github.io/aria-practices/examples/combobox/combobox-select-only.html 7 | combobox,https://w3c.github.io/aria-practices/#combobox 8 | listbox,https://w3c.github.io/aria/#listbox 9 | option,https://w3c.github.io/aria/#option 10 | aria-activedescendant,https://w3c.github.io/aria/#aria-activedescendant 11 | aria-controls,https://w3c.github.io/aria/#aria-controls 12 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby 13 | aria-expanded,https://w3c.github.io/aria/#aria-expanded 14 | aria-selected,https://w3c.github.io/aria/#aria-selected 15 | -------------------------------------------------------------------------------- /tests/command-button/data/assertions.csv: -------------------------------------------------------------------------------- 1 | assertionId,priority,assertionStatement,assertionPhrase,refIds 2 | namePrintPage,1,Name 'Print Page' is conveyed,convey name 'Print Page', 3 | roleButton,1,Role 'button' is conveyed,convey role 'button', 4 | -------------------------------------------------------------------------------- /tests/command-button/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToButton,down,virtualCursor,,1.0 3 | navForwardsToButton,b,virtualCursor,,1.1 4 | navForwardsToButton,f,virtualCursor,,1.2 5 | navForwardsToButton,tab,virtualCursor,,1.3 6 | navBackToButton,up,virtualCursor,,2.0 7 | navBackToButton,shift+b,virtualCursor,,2.1 8 | navBackToButton,shift+f,virtualCursor,,2.2 9 | navBackToButton,shift+tab,virtualCursor,,2.3 10 | navForwardsToButton,tab,pcCursor,,3.0 11 | navBackToButton,shift+tab,pcCursor,,4.0 12 | reqInfoAboutButton,ins+tab,virtualCursor,,7.0 13 | reqInfoAboutButton,ins+up,virtualCursor,,7.1 14 | reqInfoAboutButton,ins+tab,pcCursor,,8.0 15 | reqInfoAboutButton,ins+up,pcCursor,,8.1 16 | -------------------------------------------------------------------------------- /tests/command-button/data/js/setFocusAfterButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the button 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/command-button/data/js/setFocusBeforeButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the button 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/command-button/data/js/setFocusOnButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the button 2 | testPageDocument.querySelector('#action').focus(); 3 | -------------------------------------------------------------------------------- /tests/command-button/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToButton,down,browseMode,,1.0 3 | navForwardsToButton,b,browseMode,,1.1 4 | navForwardsToButton,f,browseMode,,1.2 5 | navForwardsToButton,tab,browseMode,,1.3 6 | navBackToButton,up,browseMode,,2.0 7 | navBackToButton,shift+b,browseMode,,2.1 8 | navBackToButton,shift+f,browseMode,,2.2 9 | navBackToButton,shift+tab,browseMode,,2.3 10 | navForwardsToButton,tab,focusMode,,3.0 11 | navBackToButton,shift+tab,focusMode,,4.0 12 | reqInfoAboutButton,ins+tab,browseMode,,7.0 13 | reqInfoAboutButton,ins+up,browseMode,,7.1 14 | reqInfoAboutButton,ins+tab,focusMode,,8.0 15 | reqInfoAboutButton,ins+up,focusMode,,8.1 16 | -------------------------------------------------------------------------------- /tests/command-button/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Command Button Example, 5 | reference,metadata,reference/2022-4-8_124112/button.html,Test Case Page for Command Button Example 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/button/,APG Pattern: Button 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/button/examples/button/,APG Example: Button 8 | button,aria,button,button 9 | -------------------------------------------------------------------------------- /tests/command-button/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterButton,sets focus on a link after the button 3 | setFocusBeforeButton,sets focus on a link before the button 4 | setFocusOnButton,sets focus on the button 5 | -------------------------------------------------------------------------------- /tests/command-button/data/tests.csv: -------------------------------------------------------------------------------- 1 | testId,title,presentationNumber,setupScript,instructions,assertions 2 | navForwardsToButton,Navigate forwards to a button,5,setFocusBeforeButton,"Starting at the 'Navigate forwards from here' link, navigate to the 'Print Page' button.",roleButton namePrintPage 3 | navBackToButton,Navigate backwards to a button,6,setFocusAfterButton,"Starting at the 'Navigate backwards from here' link, navigate to the 'Print Page' button.",roleButton namePrintPage 4 | reqInfoAboutButton,Request information about a button,9,setFocusOnButton,"Starting at the 'Print Page' button, read information about the button.",roleButton namePrintPage 5 | -------------------------------------------------------------------------------- /tests/command-button/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToButton,ctrl+opt+right,,,5 3 | navForwardsToButton,b,singleQuickKeyNavOn,,5.3 4 | navForwardsToButton,tab,,,5.1 5 | navForwardsToButton,j ,singleQuickKeyNavOn,,5.2 6 | navBackToButton,ctrl+opt+left,,,6 7 | navBackToButton,shift+b,singleQuickKeyNavOn,,6.3 8 | navBackToButton,shift+tab,,,6.1 9 | navBackToButton,shift+j,singleQuickKeyNavOn,,6.2 10 | reqInfoAboutButton,ctrl+opt+f3,,,9 11 | reqInfoAboutButton,ctrl+opt+f4,,,9.1 12 | -------------------------------------------------------------------------------- /tests/complementary/data/js/setFocusAfterComplementary.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the complementary landmark 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/complementary/data/js/setFocusBeforeComplementary.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the complementary landmark 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/complementary/data/js/setFocusOnBottomLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Bottom' link 2 | testPageDocument.getElementById('bottom').focus(); 3 | -------------------------------------------------------------------------------- /tests/complementary/data/js/setFocusOnTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Top' link 2 | testPageDocument.getElementById('top').focus(); 3 | -------------------------------------------------------------------------------- /tests/complementary/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Complementary Landmark 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2021-10-24_142522/complementary.html 6 | designPattern,https://w3c.github.io/aria-practices/#aria_lh_complementary 7 | example,https://w3c.github.io/aria-practices/examples/landmarks/complementary.html 8 | complementary,https://w3c.github.io/aria/#complementary -------------------------------------------------------------------------------- /tests/complementary/reference/2021-10-24_142522/images/landmarks-jaws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/complementary/reference/2021-10-24_142522/images/landmarks-jaws.png -------------------------------------------------------------------------------- /tests/complementary/reference/2021-10-24_142522/images/landmarks-nvda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/complementary/reference/2021-10-24_142522/images/landmarks-nvda.png -------------------------------------------------------------------------------- /tests/complementary/reference/2021-10-24_142522/images/landmarks-orca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/complementary/reference/2021-10-24_142522/images/landmarks-orca.png -------------------------------------------------------------------------------- /tests/complementary/reference/2021-10-24_142522/images/landmarks-skipto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/complementary/reference/2021-10-24_142522/images/landmarks-skipto.png -------------------------------------------------------------------------------- /tests/complementary/reference/2021-10-24_142522/images/landmarks-vo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/complementary/reference/2021-10-24_142522/images/landmarks-vo.png -------------------------------------------------------------------------------- /tests/complementary/reference/2021-10-24_142522/images/w3c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/complementary/reference/2021-10-24_142522/images/w3c.png -------------------------------------------------------------------------------- /tests/complementary/reference/2021-10-24_142522/js/bootstrap-accessibility-2.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 University of Illinois 3 | * Authors: Jon Gunderson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /* global $ */ 19 | 20 | 'use strict'; 21 | 22 | // Removes the "tablist" role from bootstrap.js "nav" class objects 23 | $(document).ready(function () { 24 | $('ul.nav-stacked').removeAttr('role'); 25 | }); 26 | -------------------------------------------------------------------------------- /tests/contentinfo/data/js/setFocusAfterContentinfo.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the contentinfo landmark 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/contentinfo/data/js/setFocusBeforeContentinfo.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the contentinfo landmark 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/contentinfo/data/js/setFocusOnBottomLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Bottom' link 2 | testPageDocument.getElementById('bottom').focus(); 3 | -------------------------------------------------------------------------------- /tests/contentinfo/data/js/setFocusOnTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Top' link 2 | testPageDocument.getElementById('top').focus(); 3 | -------------------------------------------------------------------------------- /tests/contentinfo/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Contentinfo Landmark 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2021-10-24_151010/contentinfo.html 6 | designPattern,https://w3c.github.io/aria-practices/#aria_lh_contentinfo 7 | example,https://w3c.github.io/aria-practices/examples/landmarks/contentinfo.html 8 | contentinfo,https://w3c.github.io/aria/#contentinfo -------------------------------------------------------------------------------- /tests/contentinfo/reference/2021-10-24_151010/images/landmarks-jaws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/contentinfo/reference/2021-10-24_151010/images/landmarks-jaws.png -------------------------------------------------------------------------------- /tests/contentinfo/reference/2021-10-24_151010/images/landmarks-nvda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/contentinfo/reference/2021-10-24_151010/images/landmarks-nvda.png -------------------------------------------------------------------------------- /tests/contentinfo/reference/2021-10-24_151010/images/landmarks-orca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/contentinfo/reference/2021-10-24_151010/images/landmarks-orca.png -------------------------------------------------------------------------------- /tests/contentinfo/reference/2021-10-24_151010/images/landmarks-skipto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/contentinfo/reference/2021-10-24_151010/images/landmarks-skipto.png -------------------------------------------------------------------------------- /tests/contentinfo/reference/2021-10-24_151010/images/landmarks-vo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/contentinfo/reference/2021-10-24_151010/images/landmarks-vo.png -------------------------------------------------------------------------------- /tests/contentinfo/reference/2021-10-24_151010/images/w3c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/contentinfo/reference/2021-10-24_151010/images/w3c.png -------------------------------------------------------------------------------- /tests/contentinfo/reference/2021-10-24_151010/js/bootstrap-accessibility-2.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 University of Illinois 3 | * Authors: Jon Gunderson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /* global $ */ 19 | 20 | 'use strict'; 21 | 22 | // Removes the "tablist" role from bootstrap.js "nav" class objects 23 | $(document).ready(function () { 24 | $('ul.nav-stacked').removeAttr('role'); 25 | }); 26 | -------------------------------------------------------------------------------- /tests/datepicker-spin-button/data/js/setFocusAfterSpinButtonAndSetPredefinedDate.js: -------------------------------------------------------------------------------- 1 | // sets the date picker to March 19, 2021, and sets focus on a link after the 'Year' spin button 2 | testPageDocument.defaultView.datepicker.spinbuttonYear.setValue(2021); 3 | testPageDocument.defaultView.datepicker.spinbuttonMonth.setValue(2); 4 | testPageDocument.defaultView.datepicker.spinbuttonDay.setValue(19); 5 | testPageDocument.querySelectorAll('button').forEach(btn => (btn.style.display = 'none')); 6 | testPageDocument.querySelector('#afterlink').focus(); 7 | -------------------------------------------------------------------------------- /tests/datepicker-spin-button/data/js/setFocusBeforeSpinButtonAndSetPredefinedDate.js: -------------------------------------------------------------------------------- 1 | // sets the date picker to March 19, 2021, and sets focus on a link before the 'Day' spin button 2 | testPageDocument.defaultView.datepicker.spinbuttonYear.setValue(2021); 3 | testPageDocument.defaultView.datepicker.spinbuttonMonth.setValue(2); 4 | testPageDocument.defaultView.datepicker.spinbuttonDay.setValue(19); 5 | testPageDocument.querySelectorAll('button').forEach(btn => (btn.style.display = 'none')); 6 | testPageDocument.querySelector('#beforelink').focus(); 7 | -------------------------------------------------------------------------------- /tests/datepicker-spin-button/data/js/setFocusOnSpinButtonAndSetPredefinedDate.js: -------------------------------------------------------------------------------- 1 | // sets the date picker to March 19, 2021, and sets focus on the 'Day' spin button 2 | testPageDocument.defaultView.datepicker.spinbuttonYear.setValue(2021); 3 | testPageDocument.defaultView.datepicker.spinbuttonMonth.setValue(2); 4 | testPageDocument.defaultView.datepicker.spinbuttonDay.setValue(19); 5 | testPageDocument.querySelectorAll('button').forEach(btn => (btn.style.display = 'none')); 6 | testPageDocument.defaultView.datepicker.spinbuttonDay.spinbuttonNode.focus(); 7 | -------------------------------------------------------------------------------- /tests/datepicker-spin-button/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | authorEmail,isa.delcastillo5@gmail.com 4 | title,Date Picker Spin Button Example 5 | reference,reference/2021-10-15_93728/datepicker-spinbuttons.html 6 | designPattern,https://w3c.github.io/aria-practices/#spinbutton 7 | example,https://w3c.github.io/aria-practices/examples/spinbutton/datepicker-spinbuttons.html 8 | group,https://w3c.github.io/aria/#group 9 | spinbutton,https://w3c.github.io/aria/#spinbutton 10 | aria-label,https://w3c.github.io/aria/#aria-label 11 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby 12 | aria-valuenow,https://w3c.github.io/aria/#aria-valuenow 13 | aria-valuetext,https://w3c.github.io/aria/#aria-valuetext 14 | aria-valuemin,https://w3c.github.io/aria/#aria-valuemin 15 | aria-valuemax,https://w3c.github.io/aria/#aria-valuemax 16 | aria-hidden,https://w3c.github.io/aria/#aria-hidden -------------------------------------------------------------------------------- /tests/disclosure-faq/data/js/moveFocusAfterAndExpandFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets the state of the first disclosure button to expanded, and sets focus on a link after the button 2 | const btn = testPageDocument.querySelector('button[aria-controls="faq1_desc"]'); 3 | const answer = testPageDocument.querySelector('#faq1_desc'); 4 | btn.setAttribute('aria-expanded', 'true'); 5 | answer.style.display = 'block'; 6 | testPageDocument.querySelector('#afterlink').focus(); 7 | -------------------------------------------------------------------------------- /tests/disclosure-faq/data/js/moveFocusAfterFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the first disclosure button 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/disclosure-faq/data/js/moveFocusBeforeAndExpandFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the first disclosure button, and sets the state of the first button to expanded 2 | const btn = testPageDocument.querySelector('button[aria-controls="faq1_desc"]'); 3 | const answer = testPageDocument.querySelector('#faq1_desc'); 4 | btn.setAttribute('aria-expanded', 'true'); 5 | answer.style.display = 'block'; 6 | testPageDocument.querySelector('#beforelink').focus(); 7 | -------------------------------------------------------------------------------- /tests/disclosure-faq/data/js/moveFocusBeforeFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the first disclosure button 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/disclosure-faq/data/js/moveFocusToAndExpandFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first disclosure button, and sets its state to expanded 2 | const btn = testPageDocument.querySelector('button[aria-controls="faq1_desc"]'); 3 | const answer = testPageDocument.querySelector('#faq1_desc'); 4 | btn.setAttribute('aria-expanded', 'true'); 5 | answer.style.display = 'block'; 6 | // Hide the link after the button so it doesn't get in the way 7 | testPageDocument.querySelector('#afterlink').style.display = 'none'; 8 | btn.focus(); 9 | -------------------------------------------------------------------------------- /tests/disclosure-faq/data/js/moveFocusToFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first disclosure button 2 | testPageDocument.querySelector('button[aria-controls="faq1_desc"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/disclosure-faq/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,James Scholes 3 | authorEmail,james@pac.bz 4 | title,Disclosure of Answers to Frequently Asked Questions Example 5 | reference,reference/2020-12-3_11559/disclosure-faq.html 6 | designPattern,https://w3c.github.io/aria-practices/#disclosure 7 | example,https://w3c.github.io/aria-practices/examples/disclosure/disclosure-faq.html 8 | button,https://w3c.github.io/aria/#button 9 | aria-expanded,https://w3c.github.io/aria/#aria-expanded 10 | -------------------------------------------------------------------------------- /tests/disclosure-faq/reference/2020-12-3_11559/css/disclosure-faq.css: -------------------------------------------------------------------------------- 1 | dl.faq button { 2 | margin: 0; 3 | padding: 0; 4 | margin-top: 1em; 5 | font-weight: bold; 6 | font-size: 110%; 7 | border: thin solid transparent; 8 | background-color: transparent; 9 | padding-left: 0.125em; 10 | } 11 | 12 | dl dd { 13 | margin: 0; 14 | padding: 0; 15 | margin-left: 1.5em; 16 | } 17 | 18 | dl.faq .desc { 19 | margin: 0; 20 | padding: 0.5em; 21 | font-size: 110%; 22 | display: none; 23 | background-color: #fffedb; 24 | } 25 | 26 | dl.faq button:hover, 27 | dl.faq button:focus { 28 | background-color: #eee; 29 | } 30 | 31 | dl.faq button:focus { 32 | border-color: #630; 33 | } 34 | 35 | dl.faq button:hover { 36 | text-decoration: underline; 37 | } 38 | 39 | dl.faq button:active { 40 | background-color: #bbb; 41 | } 42 | 43 | dl.faq button[aria-expanded="false"]::before { 44 | content: url("../images/right-arrow-brown.png"); 45 | padding-right: 0.35em; 46 | } 47 | 48 | dl.faq button[aria-expanded="true"]::before { 49 | content: url("../images/down-arrow-brown.png"); 50 | padding-right: 0.35em; 51 | } 52 | -------------------------------------------------------------------------------- /tests/disclosure-faq/reference/2020-12-3_11559/images/down-arrow-brown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/disclosure-faq/reference/2020-12-3_11559/images/down-arrow-brown.png -------------------------------------------------------------------------------- /tests/disclosure-faq/reference/2020-12-3_11559/images/right-arrow-brown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/disclosure-faq/reference/2020-12-3_11559/images/right-arrow-brown.png -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/expandFirstDisclosureAndMoveFocusToCampusToursLink.js: -------------------------------------------------------------------------------- 1 | // expands the first disclosure and sets focus on the 'Campus Tours' link 2 | testPageDocument.defaultView.disclosureController.toggleExpand(0, true); 3 | testPageDocument.getElementById('campus-tours-link').focus(); 4 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/expandFirstDisclosureAndMoveFocusToOverviewLink.js: -------------------------------------------------------------------------------- 1 | // expands the first disclosure and sets focus on the 'Overview' link 2 | testPageDocument.defaultView.disclosureController.toggleExpand(0, true); 3 | testPageDocument.querySelector('#id_about_menu a').focus(); 4 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/expandFirstDisclosureHideDropdownAndMoveFocusToSecondDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets the state of the first disclosure button to expanded, hides the associated dropdown and sets focus on the second disclosure 2 | testPageDocument.defaultView.disclosureController.toggleExpand(0, true); 3 | testPageDocument.getElementById('id_about_menu').style.display = 'none'; 4 | testPageDocument.querySelector('button[aria-controls="id_admissions_menu"]').focus(); 5 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/expandThirdDisclosureHideDropdownAndMoveFocusAfterDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets the state of the third disclosure button to expanded, hides the associated dropdown and sets focus on the link after the disclosure 2 | testPageDocument.defaultView.disclosureController.toggleExpand(2, true); 3 | testPageDocument.getElementById('id_academics_menu').style.display = 'none'; 4 | testPageDocument.getElementById('afterlink').focus(); 5 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusAfterThirdDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the disclosure button 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusBeforeAndExpandFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the first disclosure button, and sets the state of the first button to 'expanded' 2 | testPageDocument.defaultView.disclosureController.toggleExpand(0, true); 3 | testPageDocument.querySelector('#beforelink').focus(); 4 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusBeforeFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the disclosure button 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusToAndExpandFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first disclosure button, and sets its state to expanded 2 | testPageDocument.defaultView.disclosureController.toggleExpand(0, true); 3 | testPageDocument.querySelector('button[aria-controls="id_about_menu"]').focus(); 4 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusToAndExpandFirstDisclosureAndSetCurrentPage.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first disclosure button, sets its state to expanded, and marks the first link in the associated dropdown as being the current page 2 | testPageDocument.defaultView.disclosureController.toggleExpand(0, true); 3 | testPageDocument.querySelector('#id_about_menu a').setAttribute('aria-current', 'page'); 4 | testPageDocument.querySelector('button[aria-controls="id_about_menu"]').focus(); 5 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusToFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first disclosure button 2 | testPageDocument.querySelector('button[aria-controls="id_about_menu"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusToSecondDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second disclosure button 2 | testPageDocument.querySelector('button[aria-controls="id_admissions_menu"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusToSecondDisclosureAndExpandFirstDisclosure.js: -------------------------------------------------------------------------------- 1 | // expands the first disclosure button and sets focus on the second disclosure button 2 | testPageDocument.defaultView.disclosureController.toggleExpand(0, true); 3 | testPageDocument.querySelector('button[aria-controls="id_admissions_menu"]').focus(); 4 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/js/moveFocusToSecondDisclosureAndExpandThirdDisclosure.js: -------------------------------------------------------------------------------- 1 | // sets the state of the third disclosure button to expanded and sets focus on the second disclosure button 2 | testPageDocument.defaultView.disclosureController.toggleExpand(2, true); 3 | testPageDocument.querySelector('button[aria-controls="id_admissions_menu"]').focus(); 4 | -------------------------------------------------------------------------------- /tests/disclosure-navigation/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,James Scholes, 3 | authorEmail,metadata,james@pac.bz, 4 | title,metadata,Disclosure Navigation Menu Example, 5 | reference,metadata,reference/2022-9-9_13844/disclosure-navigation.html,Test Case Page for Disclosure Navigation Menu Example 6 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/examples/disclosure-navigation/,APG Example: Disclosure Navigation Menu 7 | button,htmlAam,button,button 8 | heading,htmlAam,heading,heading 9 | list,htmlAam,list,list 10 | link,htmlAam,a,anchor 11 | nav,htmlAam,nav,nav 12 | region,aria,region,region 13 | aria-label,aria,aria-label,aria-label 14 | aria-current,aria,aria-current,aria-current 15 | aria-expanded,aria,aria-expanded,aria-expanded 16 | -------------------------------------------------------------------------------- /tests/form/data/js/setFocusAfterForm.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the form landmark 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/form/data/js/setFocusAfterFormAndHideBottomControls.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the form landmark, and hides the 'Bottom' link and 'Add Contact' button 2 | testPageDocument.querySelector('[type="submit"]').style.display = 'none'; 3 | testPageDocument.getElementById('bottom').setAttribute('hidden', ''); 4 | testPageDocument.getElementById('afterlink').focus(); 5 | -------------------------------------------------------------------------------- /tests/form/data/js/setFocusBeforeForm.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the form landmark 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/form/data/js/setFocusBeforeFormAndHideTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the form landmark, and hides the 'Top' link 2 | testPageDocument.getElementById('top').setAttribute('hidden', ''); 3 | testPageDocument.getElementById('beforelink').focus(); 4 | -------------------------------------------------------------------------------- /tests/form/data/js/setFocusOnBottomLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Bottom' link 2 | testPageDocument.getElementById('bottom').focus(); 3 | -------------------------------------------------------------------------------- /tests/form/data/js/setFocusOnTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Top' link 2 | testPageDocument.getElementById('top').focus(); 3 | -------------------------------------------------------------------------------- /tests/form/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Form Landmark 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2021-10-24_152221/form.html 6 | designPattern,https://w3c.github.io/aria-practices/#aria_lh_form 7 | example,https://w3c.github.io/aria-practices/examples/landmarks/form.html 8 | form,https://w3c.github.io/aria/#form 9 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby -------------------------------------------------------------------------------- /tests/form/reference/2021-10-24_152221/images/landmarks-jaws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/form/reference/2021-10-24_152221/images/landmarks-jaws.png -------------------------------------------------------------------------------- /tests/form/reference/2021-10-24_152221/images/landmarks-nvda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/form/reference/2021-10-24_152221/images/landmarks-nvda.png -------------------------------------------------------------------------------- /tests/form/reference/2021-10-24_152221/images/landmarks-orca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/form/reference/2021-10-24_152221/images/landmarks-orca.png -------------------------------------------------------------------------------- /tests/form/reference/2021-10-24_152221/images/landmarks-skipto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/form/reference/2021-10-24_152221/images/landmarks-skipto.png -------------------------------------------------------------------------------- /tests/form/reference/2021-10-24_152221/images/landmarks-vo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/form/reference/2021-10-24_152221/images/landmarks-vo.png -------------------------------------------------------------------------------- /tests/form/reference/2021-10-24_152221/images/w3c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/form/reference/2021-10-24_152221/images/w3c.png -------------------------------------------------------------------------------- /tests/form/reference/2021-10-24_152221/js/bootstrap-accessibility-2.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 University of Illinois 3 | * Authors: Jon Gunderson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /* global $ */ 19 | 20 | 'use strict'; 21 | 22 | // Removes the "tablist" role from bootstrap.js "nav" class objects 23 | $(document).ready(function () { 24 | $('ul.nav-stacked').removeAttr('role'); 25 | }); 26 | -------------------------------------------------------------------------------- /tests/horizontal-slider/data/js/setFocusAfterRedSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the Red slider 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/horizontal-slider/data/js/setFocusBeforeRedSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the Red slider 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/horizontal-slider/data/js/setFocusOnRedSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Red' slider 2 | testPageDocument.querySelector('[role="slider"].red').focus(); 3 | -------------------------------------------------------------------------------- /tests/horizontal-slider/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | title,metadata,Color Viewer Slider, 4 | authorEmail,metadata,isa.delcastillo5@gmail.com, 5 | reference,metadata,reference/2022-4-11_11511/slider-color-viewer.html,Test Case Page for Color Viewer Slider 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/slider/,APG Pattern: Slider 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/slider/examples/slider-color-viewer/,APG Example: Color Viewer Slider 8 | slider,aria,slider,slider 9 | aria-labelledby,aria,aria-labelledby,aria-labelledby 10 | aria-valuenow,aria,aria-valuenow,aria-valuenow 11 | aria-valuemin,aria,aria-valuemin,aria-valuemin 12 | aria-valuemax,aria,aria-valuemax,aria-valuemax 13 | aria-orientation,aria,aria-orientation,aria-orientation 14 | -------------------------------------------------------------------------------- /tests/horizontal-slider/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterRedSlider,sets focus on a link after the Red slider 3 | setFocusBeforeRedSlider,sets focus on a link before the Red slider 4 | setFocusOnRedSlider,sets focus on the 'Red' slider 5 | -------------------------------------------------------------------------------- /tests/horizontal-slider/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToSlider,ctrl+opt+right ctrl+opt+right,,,5 3 | navForwardsToSlider,j,singleQuickKeyNavOn,,5.1 4 | navForwardsToSlider,tab,,,5.2 5 | navBackToSlider,ctrl+opt+left ctrl+opt+left,,,6 6 | navBackToSlider,shift+j,singleQuickKeyNavOn,,6.1 7 | navBackToSlider,shift+tab,,,6.2 8 | reqInfoAboutSlider,ctrl+opt+f3,,,9 9 | reqInfoAboutSlider,ctrl+opt+f4,,,9.1 10 | incrementSliderByOneStep,right,quickNavOff,,11 11 | incrementSliderByOneStep,up,quickNavOff,,11.1 12 | incrementSliderByOneStep,ctrl+opt+shift+down ctrl+opt+up,,,11.2 13 | incrementSliderByOneStep,ctrl+opt+shift+down ctrl+opt+right,,,11.3 14 | decrementSliderByOneStep,left,quickNavOff,,13 15 | decrementSliderByOneStep,down,quickNavOff,,13.1 16 | decrementSliderByOneStep,ctrl+opt+shift+down ctrl+opt+down,,,13.2 17 | decrementSliderByOneStep,ctrl+opt+shift+down ctrl+opt+left,,,13.3 18 | incrementSliderByTenSteps,pageUp,,,15 19 | decrementSliderByTenSteps,pageDown,,,17 20 | decrementSliderToMinimumValue,home,,,19 21 | incrementSliderToMaximumValue,end,,,21 22 | -------------------------------------------------------------------------------- /tests/link-css/data/assertions.csv: -------------------------------------------------------------------------------- 1 | assertionId,priority,assertionStatement,assertionPhrase,refIds 2 | nameW3cWebsite,1,Name 'W3C website' is conveyed,convey name 'W3C website',aria-label 3 | roleLink,1,Role 'link' is conveyed,convey role 'link',link 4 | -------------------------------------------------------------------------------- /tests/link-css/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,u,virtualCursor,,1.0 3 | navForwardsToLink,tab,virtualCursor,,1.1 4 | navForwardsToLink,down,virtualCursor,,1.2 5 | navForwardsToLink,tab,pcCursor,,2.0 6 | navBackToLink,shift+u,virtualCursor,,4.0 7 | navBackToLink,up,virtualCursor,,4.1 8 | navBackToLink,shift+tab,virtualCursor,,4.2 9 | navBackToLink,shift+tab,pcCursor,,5.0 10 | reqInfoAboutLink,ins+tab,virtualCursor,,7.0 11 | reqInfoAboutLink,ins+up,virtualCursor,,7.1 12 | reqInfoAboutLink,ins+tab,pcCursor,,8.0 13 | reqInfoAboutLink,ins+up,pcCursor,,8.1 14 | -------------------------------------------------------------------------------- /tests/link-css/data/js/setFocusAfterLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the 'W3C website' link 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-css/data/js/setFocusBeforeLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the 'W3C website' link 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-css/data/js/setFocusOnLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'W3C website' link 2 | testPageDocument.getElementById('link').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-css/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,u,browseMode,,1.0 3 | navForwardsToLink,k,browseMode,,1.1 4 | navForwardsToLink,tab,browseMode,,1.2 5 | navForwardsToLink,down,browseMode,,1.3 6 | navForwardsToLink,tab,focusMode,,2.0 7 | navBackToLink,shift+u,browseMode,,4.0 8 | navBackToLink,shift+k,browseMode,,4.1 9 | navBackToLink,up,browseMode,,4.2 10 | navBackToLink,shift+tab,browseMode,,4.3 11 | navBackToLink,shift+tab,focusMode,,5.0 12 | reqInfoAboutLink,ins+tab,browseMode,,7.0 13 | reqInfoAboutLink,ins+up,browseMode,,7.1 14 | reqInfoAboutLink,ins+tab,focusMode,,8.0 15 | reqInfoAboutLink,ins+up,focusMode,,8.1 16 | -------------------------------------------------------------------------------- /tests/link-css/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Link Example 3 (CSS :before content property on a span element), 5 | reference,metadata,reference/2023-3-13_142620/link-css.html,Test Case Page for Link Example 3 (CSS :before content property on a span element) 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/link/,APG Design Pattern 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/link/examples/link/,APG Link Examples 8 | aria-label,aria,aria-label,aria-label 9 | link,aria,link,link 10 | -------------------------------------------------------------------------------- /tests/link-css/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterLink,sets focus on a link after the 'W3C website' link 3 | setFocusBeforeLink,sets focus on a link before the 'W3C website' link 4 | setFocusOnLink,sets focus on the 'W3C website' link 5 | -------------------------------------------------------------------------------- /tests/link-css/data/tests.csv: -------------------------------------------------------------------------------- 1 | testId,title,presentationNumber,setupScript,instructions,assertions 2 | navForwardsToLink,Navigate forwards to a link,3,setFocusBeforeLink,"With focus on the 'Navigate forwards from here' link, navigate to the 'W3C website' link.",roleLink nameW3cWebsite 3 | navBackToLink,Navigate backwards to a link,6,setFocusAfterLink,"With focus on the 'Navigate backwards from here' link, navigate to the 'W3C website' link.",roleLink nameW3cWebsite 4 | reqInfoAboutLink,Request information about a link,9,setFocusOnLink,"With focus on the 'W3C website' link, read information about the link.",roleLink nameW3cWebsite 5 | -------------------------------------------------------------------------------- /tests/link-css/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,ctrl+opt+right,,,3.0 3 | navForwardsToLink,tab,,,3.1 4 | navForwardsToLink,l,quickNavOn,,3.2 5 | navBackToLink,ctrl+opt+left,,,6.0 6 | navBackToLink,shift+tab,,,6.1 7 | navBackToLink,shift+l,quickNavOn,,6.2 8 | reqInfoAboutLink,ctrl+opt+f3,,,9.0 9 | reqInfoAboutLink,ctrl+opt+f4,,,9.1 10 | -------------------------------------------------------------------------------- /tests/link-css/reference/2023-3-13_142620/js/link.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This content is licensed according to the W3C Software License at 3 | * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document 4 | */ 5 | 6 | /* exported goToLink */ 7 | 8 | 'use strict'; 9 | 10 | function goToLink(event, url) { 11 | var type = event.type; 12 | 13 | if (type === 'click' || (type === 'keydown' && event.keyCode === 13)) { 14 | window.location.href = url; 15 | 16 | event.preventDefault(); 17 | event.stopPropagation(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/assertions.csv: -------------------------------------------------------------------------------- 1 | assertionId,priority,assertionStatement,assertionPhrase,refIds 2 | nameW3cWebsite,1,Name 'W3C website' is conveyed.,convey name 'W3C website'., 3 | roleLink,1,Role 'link' is conveyed,convey role 'link',link 4 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,u,virtualCursor,,1.0 3 | navForwardsToLink,tab,virtualCursor,,1.1 4 | navForwardsToLink,down,virtualCursor,,1.2 5 | navForwardsToLink,tab,pcCursor,,2.0 6 | navBackToLink,shift+u,virtualCursor,,4.0 7 | navBackToLink,up,virtualCursor,,4.1 8 | navBackToLink,shift+tab,virtualCursor,,4.2 9 | navBackToLink,shift+tab,pcCursor,,5.0 10 | reqInfoAboutLink,ins+tab,virtualCursor,,7.0 11 | reqInfoAboutLink,ins+up,virtualCursor,,7.1 12 | reqInfoAboutLink,ins+tab,pcCursor,,8.0 13 | reqInfoAboutLink,ins+up,pcCursor,,8.1 14 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/js/setFocusAfterLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the 'W3C website' link 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/js/setFocusBeforeLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the 'W3C website' link 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/js/setFocusOnLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'W3C website' link 2 | testPageDocument.getElementById('link').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,u,browseMode,,1.0 3 | navForwardsToLink,k,browseMode,,1.1 4 | navForwardsToLink,tab,browseMode,,1.2 5 | navForwardsToLink,down,browseMode,,1.3 6 | navForwardsToLink,tab,focusMode,,2.0 7 | navBackToLink,shift+u,browseMode,,4.0 8 | navBackToLink,shift+k,browseMode,,4.1 9 | navBackToLink,up,browseMode,,4.2 10 | navBackToLink,shift+tab,browseMode,,4.3 11 | navBackToLink,shift+tab,focusMode,,5.0 12 | reqInfoAboutLink,ins+tab,browseMode,,7.0 13 | reqInfoAboutLink,ins+up,browseMode,,7.1 14 | reqInfoAboutLink,ins+tab,focusMode,,8.0 15 | reqInfoAboutLink,ins+up,focusMode,,8.1 16 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | title,metadata,Link Example 2 (img element with alt attribute), 4 | authorEmail,metadata,isa.delcastillo5@gmail.com, 5 | reference,metadata,reference/2023-3-13_11377/link-img-alt.html,Test Case Page for Link Example 2 (img element with alt attribute) 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/link/,APG Design Pattern 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/link/examples/link/,APG Link Examples 8 | link,aria,link,link 9 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterLink,sets focus on a link after the 'W3C website' link 3 | setFocusBeforeLink,sets focus on a link before the 'W3C website' link 4 | setFocusOnLink,sets focus on the 'W3C website' link 5 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/tests.csv: -------------------------------------------------------------------------------- 1 | testId,title,presentationNumber,setupScript,instructions,assertions 2 | navForwardsToLink,Navigate forwards to a link,3,setFocusBeforeLink,"With focus on the 'Navigate forwards from here' link, navigate to the 'W3C website' link.",roleLink nameW3cWebsite 3 | navBackToLink,Navigate backwards to a link,6,setFocusAfterLink,"With focus on the 'Navigate backwards from here' link, navigate to the 'W3C website' link.",roleLink nameW3cWebsite 4 | reqInfoAboutLink,Request information about a link,9,setFocusOnLink,"With focus on the 'W3C website' link, read information about the link.",roleLink nameW3cWebsite 5 | -------------------------------------------------------------------------------- /tests/link-img-alt/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,ctrl+opt+right,,,3.0 3 | navForwardsToLink,tab,,,3.1 4 | navForwardsToLink,l,quickNavOn,,3.2 5 | navBackToLink,ctrl+opt+left,,,6.0 6 | navBackToLink,shift+tab,,,6.1 7 | navBackToLink,shift+l,quickNavOn,,6.2 8 | reqInfoAboutLink,ctrl+opt+f3,,,9.0 9 | reqInfoAboutLink,ctrl+opt+f4,,,9.1 10 | -------------------------------------------------------------------------------- /tests/link-img-alt/reference/2023-3-13_11377/js/link.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This content is licensed according to the W3C Software License at 3 | * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document 4 | */ 5 | 6 | /* exported goToLink */ 7 | 8 | 'use strict'; 9 | 10 | function goToLink(event, url) { 11 | var type = event.type; 12 | 13 | if (type === 'click' || (type === 'keydown' && event.keyCode === 13)) { 14 | window.location.href = url; 15 | 16 | event.preventDefault(); 17 | event.stopPropagation(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/link-span-text/data/assertions.csv: -------------------------------------------------------------------------------- 1 | assertionId,priority,assertionStatement,assertionPhrase,refIds 2 | nameW3cWebsite,1,Name 'W3C website' is conveyed,convey name 'W3C website', 3 | roleLink,1,Role 'link' is conveyed,convey role 'link', 4 | -------------------------------------------------------------------------------- /tests/link-span-text/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,u,virtualCursor,,1.0 3 | navForwardsToLink,tab,virtualCursor,,1.1 4 | navForwardsToLink,down,virtualCursor,,1.2 5 | navForwardsToLink,tab,pcCursor,,2.0 6 | navBackToLink,shift+u,virtualCursor,,4.0 7 | navBackToLink,up,virtualCursor,,4.1 8 | navBackToLink,shift+tab,virtualCursor,,4.2 9 | navBackToLink,shift+tab,pcCursor,,5.0 10 | reqInfoAboutLink,ins+tab,virtualCursor,,7.0 11 | reqInfoAboutLink,ins+up,virtualCursor,,7.1 12 | reqInfoAboutLink,ins+tab,pcCursor,,8.0 13 | reqInfoAboutLink,ins+up,pcCursor,,8.1 14 | -------------------------------------------------------------------------------- /tests/link-span-text/data/js/setFocusAfterLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the 'W3C website' link 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-span-text/data/js/setFocusBeforeLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the 'W3C website' link 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-span-text/data/js/setFocusOnLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'W3C website' link 2 | testPageDocument.getElementById('link').focus(); 3 | -------------------------------------------------------------------------------- /tests/link-span-text/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,u,browseMode,,1.0 3 | navForwardsToLink,k,browseMode,,1.1 4 | navForwardsToLink,tab,browseMode,,1.2 5 | navForwardsToLink,down,browseMode,,1.3 6 | navForwardsToLink,tab,focusMode,,2.0 7 | navBackToLink,shift+u,browseMode,,4.0 8 | navBackToLink,shift+k,browseMode,,4.1 9 | navBackToLink,up,browseMode,,4.2 10 | navBackToLink,shift+tab,browseMode,,4.3 11 | navBackToLink,shift+tab,focusMode,,5.0 12 | reqInfoAboutLink,ins+tab,browseMode,,7.0 13 | reqInfoAboutLink,ins+up,browseMode,,7.1 14 | reqInfoAboutLink,ins+tab,focusMode,,8.0 15 | reqInfoAboutLink,ins+up,focusMode,,8.1 16 | -------------------------------------------------------------------------------- /tests/link-span-text/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | title,metadata,Link Example 1 (span element with text content), 4 | authorEmail,metadata,isa.delcastillo5@gmail.com, 5 | reference,metadata,reference/2022-4-6_14258/link.html,Test Case Page for Link Example 1 (span element with text content) 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/link/,APG Pattern: Link 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/link/examples/link/,APG Example: Link 8 | link,aria,link,link 9 | -------------------------------------------------------------------------------- /tests/link-span-text/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterLink,sets focus on a link after the 'W3C website' link 3 | setFocusBeforeLink,sets focus on a link before the 'W3C website' link 4 | setFocusOnLink,sets focus on the 'W3C website' link 5 | -------------------------------------------------------------------------------- /tests/link-span-text/data/tests.csv: -------------------------------------------------------------------------------- 1 | testId,title,presentationNumber,setupScript,instructions,assertions 2 | navForwardsToLink,Navigate forwards to a link,3,setFocusBeforeLink,"Starting at the 'Navigate forwards from here' link, navigate to the 'W3C website' link.",roleLink nameW3cWebsite 3 | navBackToLink,Navigate backwards to a link,6,setFocusAfterLink,"Starting at the 'Navigate backwards from here' link, navigate to the 'W3C website' link.",roleLink nameW3cWebsite 4 | reqInfoAboutLink,Request information about a link,9,setFocusOnLink,"Starting at the 'W3C website' link, read information about the link.",roleLink nameW3cWebsite 5 | -------------------------------------------------------------------------------- /tests/link-span-text/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToLink,ctrl+opt+right,,,3 3 | navForwardsToLink,tab,,,3.1 4 | navForwardsToLink,l ,singleQuickKeyNavOn,,3.2 5 | navBackToLink,ctrl+opt+left,,,6 6 | navBackToLink,shift+tab,,,6.1 7 | navBackToLink,shift+l,singleQuickKeyNavOn,,6.2 8 | reqInfoAboutLink,ctrl+opt+f3,,,9 9 | reqInfoAboutLink,ctrl+opt+f4,,,9.1 10 | -------------------------------------------------------------------------------- /tests/link-span-text/reference/2022-4-6_14258/js/link.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This content is licensed according to the W3C Software License at 3 | * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document 4 | */ 5 | 6 | /* exported goToLink */ 7 | 8 | 'use strict'; 9 | 10 | function goToLink(event, url) { 11 | var type = event.type; 12 | 13 | if (type === 'click' || (type === 'keydown' && event.keyCode === 13)) { 14 | window.location.href = url; 15 | 16 | event.preventDefault(); 17 | event.stopPropagation(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/main/data/js/setFocusAfterMain.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the main landmark 2 | testPageDocument.querySelector('.button-run-test-setup').parentElement.style.display = 'none'; 3 | testPageDocument.getElementById('afterlink').focus(); 4 | -------------------------------------------------------------------------------- /tests/main/data/js/setFocusBeforeMain.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the main landmark 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/main/data/js/setFocusOnBottomLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Bottom' link 2 | testPageDocument.querySelector('.button-run-test-setup').parentElement.style.display = 'none'; 3 | testPageDocument.getElementById('bottom').focus(); 4 | -------------------------------------------------------------------------------- /tests/main/data/js/setFocusOnTopLink.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Top' link 2 | testPageDocument.getElementById('top').focus(); 3 | -------------------------------------------------------------------------------- /tests/main/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Main Landmark 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2022-4-28_91451/main.html 6 | designPattern,https://w3c.github.io/aria-practices/#aria_lh_main 7 | example,https://w3c.github.io/aria-practices/examples/landmarks/main.html 8 | main,https://w3c.github.io/aria/#main -------------------------------------------------------------------------------- /tests/main/reference/2022-4-28_91451/images/landmarks-jaws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/main/reference/2022-4-28_91451/images/landmarks-jaws.png -------------------------------------------------------------------------------- /tests/main/reference/2022-4-28_91451/images/landmarks-nvda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/main/reference/2022-4-28_91451/images/landmarks-nvda.png -------------------------------------------------------------------------------- /tests/main/reference/2022-4-28_91451/images/landmarks-orca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/main/reference/2022-4-28_91451/images/landmarks-orca.png -------------------------------------------------------------------------------- /tests/main/reference/2022-4-28_91451/images/landmarks-skipto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/main/reference/2022-4-28_91451/images/landmarks-skipto.png -------------------------------------------------------------------------------- /tests/main/reference/2022-4-28_91451/images/landmarks-vo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/main/reference/2022-4-28_91451/images/landmarks-vo.png -------------------------------------------------------------------------------- /tests/main/reference/2022-4-28_91451/images/w3c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/main/reference/2022-4-28_91451/images/w3c.png -------------------------------------------------------------------------------- /tests/main/reference/2022-4-28_91451/js/bootstrap-accessibility-2.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 University of Illinois 3 | * Authors: Jon Gunderson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /* global $ */ 19 | 20 | 'use strict'; 21 | 22 | // Removes the "tablist" role from bootstrap.js "nav" class objects 23 | $(document).ready(function () { 24 | $('ul.nav-stacked').removeAttr('role'); 25 | }); 26 | -------------------------------------------------------------------------------- /tests/main/reference/2022-4-28_91451/js/tabs.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 University of Illinois 3 | * Authors: Thomas Foltz and Jon Gunderson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /* global $ */ 19 | 20 | 'use strict'; 21 | 22 | $('#myTabs a').click(function (e) { 23 | e.preventDefault(); 24 | $(this).tab('show'); 25 | }); 26 | -------------------------------------------------------------------------------- /tests/menu-button-actions-active-descendant/data/js/openMenuAndSetFocusToFirstItem.js: -------------------------------------------------------------------------------- 1 | // opens the menu, and sets focus on 'Action 1' 2 | testPageDocument.defaultView.menuController.openPopup(); 3 | testPageDocument.defaultView.menuController.setFocusToFirstMenuitem(); 4 | -------------------------------------------------------------------------------- /tests/menu-button-actions-active-descendant/data/js/openMenuAndSetFocusToLastItem.js: -------------------------------------------------------------------------------- 1 | // opens the menu, and sets focus on 'Action 4' 2 | testPageDocument.defaultView.menuController.openPopup(); 3 | testPageDocument.defaultView.menuController.setFocusToLastMenuitem(); 4 | -------------------------------------------------------------------------------- /tests/menu-button-actions-active-descendant/data/js/setFocusAfterMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the menu button 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-actions-active-descendant/data/js/setFocusBeforeMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the menu button 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-actions-active-descendant/data/js/setFocusOnMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the menu button 2 | testPageDocument.querySelector('#menubutton1').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-actions-active-descendant/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | openMenuAndSetFocusToFirstItem,"opens the menu, and sets focus on 'Action 1'" 3 | openMenuAndSetFocusToLastItem,"opens the menu, and sets focus on 'Action 4'" 4 | setFocusAfterMenuButton,sets focus on a link after the menu button 5 | setFocusBeforeMenuButton,sets focus on a link before the menu button 6 | setFocusOnMenuButton,sets focus on the menu button 7 | -------------------------------------------------------------------------------- /tests/menu-button-actions-active-descendant/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToMenuButton,tab,,,5 3 | navForwardsToMenuButton,ctrl+opt+right,,,5.1 4 | navForwardsToMenuButton,b,quickNavOn,,5.2 5 | navForwardsToMenuButton,j,quickNavOn,,5.3 6 | navBackToMenuButton,shift+tab,,,6 7 | navBackToMenuButton,ctrl+opt+left,,,6.1 8 | navBackToMenuButton,shift+b,quickNavOn,,6.2 9 | navBackToMenuButton,shift+j,quickNavOn,,6.3 10 | reqInfoAboutMenuButton,ctrl+opt+f3,,,9 11 | reqInfoAboutMenuButton,ctrl+opt+f4,,,9.1 12 | openMenu,ctrl+opt+space,,,12 13 | openMenu,space,,,12.1 14 | openMenu,enter,,,12.2 15 | openMenu,down,quickNavOff,,12.3 16 | openMenuToLastItem,up,quickNavOff,,14 17 | reqInfoAboutMenuItem,ctrl+opt+f3,,,16 18 | reqInfoAboutMenuItem,ctrl+opt+f4,,,16.1 19 | navToFirstItemMenu,home,,,18 20 | navToFirstItemMenu,down,quickNavOff,,18.1 21 | navToLastItemMenu,end,,,20 22 | navToLastItemMenu,up,quickNavOff,,20.1 23 | navToItemMenuByTypingCharacter,a,quickNavOff,,22 24 | activateMenuItem,ctrl+opt+space,,,24 25 | activateMenuItem,enter,,,24.1 26 | closeMenu,esc,,,26 27 | -------------------------------------------------------------------------------- /tests/menu-button-actions/data/js/openMenuAndSetFocusToFirstItem.js: -------------------------------------------------------------------------------- 1 | // opens the menu, and sets focus on 'Action 1' 2 | testPageDocument.defaultView.menuController.openPopup(); 3 | testPageDocument.defaultView.menuController.setFocusToFirstMenuitem(); 4 | -------------------------------------------------------------------------------- /tests/menu-button-actions/data/js/openMenuAndSetFocusToLastItem.js: -------------------------------------------------------------------------------- 1 | // opens the menu, and sets focus on 'Action 4' 2 | testPageDocument.defaultView.menuController.openPopup(); 3 | testPageDocument.defaultView.menuController.setFocusToLastMenuitem(); 4 | -------------------------------------------------------------------------------- /tests/menu-button-actions/data/js/setFocusAfterMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the menu button 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-actions/data/js/setFocusBeforeMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the menu button 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-actions/data/js/setFocusOnMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the menu button 2 | testPageDocument.querySelector('#menubutton1').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-actions/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Action Menu Button Example Using element.focus(), 5 | reference,metadata,reference/2024-8-28_1295/menu-button-actions.html,Test Case Page for Action Menu Button Example Using element.focus() 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/,APG Pattern: Menu Button 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/examples/menu-button-actions-active-descendant/,APG Example: Actions Menu Button Using element.focus() 8 | menu,aria,menu,menu 9 | menuitem,aria,menuitem,menuitem 10 | aria-haspopup,aria,aria-haspopup,aria-haspopup 11 | aria-controls,aria,aria-controls,aria-controls 12 | aria-labelledby,aria,aria-labelledby,aria-labelledby 13 | aria-expanded,aria,aria-expanded,aria-expanded 14 | aria-posinset,aria,aria-posinset,aria-posinset 15 | aria-setsize,aria,aria-setsize,aria-setsize 16 | button,htmlAam,button,button 17 | -------------------------------------------------------------------------------- /tests/menu-button-actions/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | openMenuAndSetFocusToFirstItem,"opens the menu, and sets focus on 'Action 1'" 3 | openMenuAndSetFocusToLastItem,"opens the menu, and sets focus on 'Action 4'" 4 | setFocusAfterMenuButton,sets focus on a link after the menu button 5 | setFocusBeforeMenuButton,sets focus on a link before the menu button 6 | setFocusOnMenuButton,sets focus on the menu button 7 | -------------------------------------------------------------------------------- /tests/menu-button-actions/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToMenuButton,tab,,,5 3 | navForwardsToMenuButton,ctrl+opt+right,,,5.1 4 | navForwardsToMenuButton,b,quickNavOn,,5.2 5 | navForwardsToMenuButton,j,quickNavOn,,5.3 6 | navBackToMenuButton,shift+tab,,,6 7 | navBackToMenuButton,ctrl+opt+left,,,6.1 8 | navBackToMenuButton,shift+b,quickNavOn,,6.2 9 | navBackToMenuButton,shift+j,quickNavOn,,6.3 10 | reqInfoAboutMenuButton,ctrl+opt+f3,,,9 11 | reqInfoAboutMenuButton,ctrl+opt+f4,,,9.1 12 | openMenu,ctrl+opt+space,,,12 13 | openMenu,space,,,12.1 14 | openMenu,enter,,,12.2 15 | openMenu,down,quickNavOff,,12.3 16 | openMenuToLastItem,up,quickNavOff,,14 17 | reqInfoAboutMenuItem,ctrl+opt+f3,,,16 18 | reqInfoAboutMenuItem,ctrl+opt+f4,,,16.1 19 | navToFirstItemMenu,home,,,18 20 | navToFirstItemMenu,down,quickNavOff,,18.1 21 | navToLastItemMenu,end,,,20 22 | navToLastItemMenu,up,quickNavOff,,20.1 23 | navToItemMenuByTypingCharacter,a,quickNavOff,,22 24 | activateMenuItem,ctrl+opt+space,,,24 25 | activateMenuItem,enter,,,24.1 26 | closeMenu,esc,,,26 27 | -------------------------------------------------------------------------------- /tests/menu-button-navigation/data/js/openMenuAndSetFocusToFirstItem.js: -------------------------------------------------------------------------------- 1 | // opens the menu, and sets focus on 'W3C Home Page' 2 | testPageDocument.defaultView.menuController.openPopup(); 3 | testPageDocument.defaultView.menuController.setFocusToFirstMenuitem(); 4 | -------------------------------------------------------------------------------- /tests/menu-button-navigation/data/js/openMenuAndSetFocusToLastItem.js: -------------------------------------------------------------------------------- 1 | // opens the menu, and sets focus on 'Accessible Name and Description' 2 | testPageDocument.defaultView.menuController.openPopup(); 3 | testPageDocument.defaultView.menuController.setFocusToLastMenuitem(); 4 | -------------------------------------------------------------------------------- /tests/menu-button-navigation/data/js/setFocusAfterMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the menu button 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-navigation/data/js/setFocusBeforeMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the menu button 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-navigation/data/js/setFocusOnMenuButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the menu button 2 | testPageDocument.querySelector('#menubutton').focus(); 3 | -------------------------------------------------------------------------------- /tests/menu-button-navigation/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Navigation Menu Button, 5 | reference,metadata,reference/2024-8-12_123937/menu-button-links.html,Test Case Page for Navigation Menu Button 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/,APG Pattern: Menu Button 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/examples/menu-button-links/,APG Example: Actions Menu Button Using 8 | menu,aria,menu,menu 9 | menuitem,aria,menuitem,menuitem 10 | aria-haspopup,aria,aria-haspopup,aria-haspopup 11 | aria-controls,aria,aria-controls,aria-controls 12 | aria-labelledby,aria,aria-labelledby,aria-labelledby 13 | aria-expanded,aria,aria-expanded,aria-expanded 14 | aria-posinset,aria,aria-posinset,aria-posinset 15 | aria-setsize,aria,aria-setsize,aria-setsize 16 | button,htmlAam,button,button 17 | -------------------------------------------------------------------------------- /tests/menu-button-navigation/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | openMenuAndSetFocusToFirstItem,"opens the menu, and sets focus on 'W3C Home Page'" 3 | openMenuAndSetFocusToLastItem,"opens the menu, and sets focus on 'Accessible Name and Description'" 4 | setFocusAfterMenuButton,sets focus on a link after the menu button 5 | setFocusBeforeMenuButton,sets focus on a link before the menu button 6 | setFocusOnMenuButton,sets focus on the menu button 7 | -------------------------------------------------------------------------------- /tests/menu-button-navigation/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToMenuButton,tab,,,5 3 | navForwardsToMenuButton,ctrl+opt+right,,,5.1 4 | navForwardsToMenuButton,b,quickNavOn,,5.2 5 | navForwardsToMenuButton,j,quickNavOn,,5.3 6 | navBackToMenuButton,shift+tab,,,6 7 | navBackToMenuButton,ctrl+opt+left,,,6.1 8 | navBackToMenuButton,shift+b,quickNavOn,,6.2 9 | navBackToMenuButton,shift+j,quickNavOn,,6.3 10 | reqInfoAboutMenuButton,ctrl+opt+f3,,,9 11 | reqInfoAboutMenuButton,ctrl+opt+f4,,,9.1 12 | openMenu,ctrl+opt+space,,,12 13 | openMenu,space,,,12.1 14 | openMenu,enter,,,12.2 15 | openMenu,down,quickNavOff,,12.3 16 | openMenuToLastItem,up,quickNavOff,,14 17 | reqInfoAboutMenuItem,ctrl+opt+f3,,,16 18 | reqInfoAboutMenuItem,ctrl+opt+f4,,,16.1 19 | navToFirstItemMenu,home,,,18 20 | navToFirstItemMenu,down,quickNavOff,,18.1 21 | navToLastItemMenu,end,,,20 22 | navToLastItemMenu,up,quickNavOff,,20.1 23 | navToItemMenuByTypingCharacter,w,quickNavOff,,22 24 | closeMenu,esc,,,26 25 | -------------------------------------------------------------------------------- /tests/menubar-editor/data/js/focusonfirstlink.js: -------------------------------------------------------------------------------- 1 | // Move focus to the link just before the meunbar 2 | testPageDocument.querySelector('a').focus(); 3 | -------------------------------------------------------------------------------- /tests/menubar-editor/data/js/focusonfont.js: -------------------------------------------------------------------------------- 1 | // Move focus to the "Font" menu item 2 | testPageDocument.querySelectorAll('[role=menuitem]')[0].focus(); 3 | -------------------------------------------------------------------------------- /tests/menubar-editor/data/js/focusonsize.js: -------------------------------------------------------------------------------- 1 | // Move focus to the "Size" menu item 2 | testPageDocument.querySelectorAll('[role=menuitem]')[3].focus(); 3 | -------------------------------------------------------------------------------- /tests/menubar-editor/data/js/focusonstylecolor.js: -------------------------------------------------------------------------------- 1 | // Move focus to the "Style/Color" menu item 2 | testPageDocument.querySelectorAll('[role=menuitem]')[1].focus(); 3 | -------------------------------------------------------------------------------- /tests/menubar-editor/data/js/focusontextalign.js: -------------------------------------------------------------------------------- 1 | // Move focus to the "Text Align" menu item 2 | testPageDocument.querySelectorAll('[role=menuitem]')[2].focus(); 3 | -------------------------------------------------------------------------------- /tests/menubar-editor/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Jon Gunderson 3 | authorEmail, jongund@illinois.edu 4 | title,Editor Menubar Example 5 | reference,reference/2020-11-23_175528/menubar-editor.html 6 | example,https://w3c.github.io/aria-practices/examples/menubar/menubar-editor.html 7 | menubar,https://w3c.github.io/aria/#menubar 8 | menu,https://w3c.github.io/aria/#menu 9 | menuitem,https://w3c.github.io/aria/#menuitem 10 | menuitemcheckbox,https://w3c.github.io/aria/#menuitemcheckbox 11 | menuitemradio,https://w3c.github.io/aria/#menuitemradio 12 | group,https://w3c.github.io/aria/#group 13 | aria-checked,https://w3c.github.io/aria/#aria-checked 14 | aria-haspopup,https://w3c.github.io/aria/#aria-haspopup 15 | aria-expanded,https://w3c.github.io/aria/#aria-expanded 16 | aria-disabled,https://w3c.github.io/aria/#aria-disabled 17 | aria-label,https://w3c.github.io/aria/#aria-label 18 | designPattern,https://w3c.github.io/aria-practices/#menu 19 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/checkbox-checked-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/checkbox-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/down-arrow-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/down-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/radio-checked-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/radio-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/separator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/up-arrow-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-19_152059/images/up-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/checkbox-checked-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/checkbox-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/down-arrow-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/down-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/radio-checked-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/radio-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/separator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/up-arrow-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-20_13316/images/up-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/checkbox-checked-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/checkbox-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/down-arrow-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/down-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/radio-checked-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/radio-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/separator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/up-arrow-focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/menubar-editor/reference/2020-11-23_175528/images/up-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/meter/data/commands.csv: -------------------------------------------------------------------------------- 1 | testId,task,mode,at,commandA,commandB,commandC 2 | 1,Navigate forwards to a meter,READING,JAWS,DOWN,, 3 | 1,Navigate forwards to a meter,READING,NVDA,DOWN,, 4 | 2,Navigate forwards to a meter,INTERACTION,VOICEOVER_MACOS,CTRL_OPT_RIGHT,, 5 | 3,Navigate backwards to a meter,READING,JAWS,UP,, 6 | 3,Navigate backwards to a meter,READING,NVDA,UP,, 7 | 4,Navigate backwards to a meter,INTERACTION,VOICEOVER_MACOS,CTRL_OPT_LEFT,, 8 | 5,Read information about a meter,READING,JAWS,INS_TAB,INS_UP, 9 | 5,Read information about a meter,READING,NVDA,INS_TAB,INS_UP, 10 | 6,Read information about a meter,INTERACTION,VOICEOVER_MACOS,CTRL_OPT_F3,CTRL_OPT_F4, 11 | 7,Trigger a meter update,READING,JAWS,SPACE,ENTER, 12 | 7,Trigger a meter update,READING,NVDA,SPACE,ENTER, 13 | 8,Trigger a meter update,INTERACTION,JAWS,SPACE,ENTER, 14 | 8,Trigger a meter update,INTERACTION,NVDA,SPACE,ENTER, 15 | 9,Trigger a meter update,INTERACTION,VOICEOVER_MACOS,CTRL_OPT_SPACE,SPACE,ENTER 16 | -------------------------------------------------------------------------------- /tests/meter/data/js/setFocusAfterMeter.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the meter 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/meter/data/js/setFocusBeforeMeter.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the meter 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/meter/data/js/setFocusOnButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Change Value' button 2 | testPageDocument.querySelector('button.play-meters').focus(); 3 | -------------------------------------------------------------------------------- /tests/meter/data/js/setFocusOnMeter.js: -------------------------------------------------------------------------------- 1 | // sets focus on the meter 2 | testPageDocument.querySelector('[role="meter"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/meter/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Meter 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2022-8-2_11826/meter.html 6 | designPattern,https://w3c.github.io/aria-practices/#meter 7 | example,https://w3c.github.io/aria-practices/examples/meter/meter.html 8 | meter,https://w3c.github.io/aria/#meter 9 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby 10 | aria-valuenow,https://w3c.github.io/aria/#aria-valuenow 11 | aria-valuemin,https://w3c.github.io/aria/#aria-valuemin 12 | aria-valuemax,https://w3c.github.io/aria/#aria-valuemax -------------------------------------------------------------------------------- /tests/meter/reference/2022-8-2_11826/css/meter.css: -------------------------------------------------------------------------------- 1 | [role="meter"] { 2 | padding: 2px; 3 | width: 200px; 4 | height: 40px; 5 | border: 2px solid black; 6 | border-radius: 5px; 7 | } 8 | 9 | .fill { 10 | width: 100%; 11 | height: 100%; 12 | box-sizing: border-box; 13 | border: 2px solid black; 14 | border-radius: 3px; 15 | background-color: black; 16 | } 17 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusAfterGrid.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the grid 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusBeforeGrid.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the grid 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusOnFifthDataCell.js: -------------------------------------------------------------------------------- 1 | // sets focus on the fifth cell of the second row in the grid 2 | testPageDocument.defaultView.ex1Grid.setFocusPointer(0, 4); 3 | testPageDocument.defaultView.ex1Grid.focusCell(0, 4); 4 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusOnFirstDataCell.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first cell of the second row in the grid 2 | testPageDocument.defaultView.ex1Grid.setFocusPointer(0, 0); 3 | testPageDocument.defaultView.ex1Grid.focusCell(0, 0); 4 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusOnFirstLinkedCell.js: -------------------------------------------------------------------------------- 1 | // sets focus on the third cell of the second row in the grid 2 | testPageDocument.defaultView.ex1Grid.setFocusPointer(0, 2); 3 | testPageDocument.defaultView.ex1Grid.focusCell(0, 2); 4 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusOnFourthDataCell.js: -------------------------------------------------------------------------------- 1 | // sets focus on the fourth cell of the second row in the grid 2 | testPageDocument.defaultView.ex1Grid.setFocusPointer(0, 3); 3 | testPageDocument.defaultView.ex1Grid.focusCell(0, 3); 4 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusOnLastDataCell.js: -------------------------------------------------------------------------------- 1 | // sets focus on the fifth cell of the seventh row in the grid 2 | testPageDocument.defaultView.ex1Grid.setFocusPointer(5, 4); 3 | testPageDocument.defaultView.ex1Grid.focusCell(5, 4); 4 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusOnSecondDataCell.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second cell of the second row in the grid 2 | testPageDocument.defaultView.ex1Grid.setFocusPointer(0, 1); 3 | testPageDocument.defaultView.ex1Grid.focusCell(0, 1); 4 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusOnSecondLinkedCell.js: -------------------------------------------------------------------------------- 1 | // sets focus on the third cell of the third row in the grid 2 | testPageDocument.defaultView.ex1Grid.setFocusPointer(1, 2); 3 | testPageDocument.defaultView.ex1Grid.focusCell(1, 2); 4 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/js/setFocusOnSixthDataCell.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first cell of the third row in the grid 2 | testPageDocument.defaultView.ex1Grid.setFocusPointer(1, 0); 3 | testPageDocument.defaultView.ex1Grid.focusCell(1, 0); 4 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | authorEmail,isa.delcastillo5@gmail.com 4 | title,Data Grid Example 1: Minimal Data Grid 5 | reference,reference/2021-3-8_151542/dataGrids.html 6 | designPattern,https://w3c.github.io/aria-practices/#grid 7 | example,https://w3c.github.io/aria-practices/examples/grid/dataGrids.html 8 | grid,https://w3c.github.io/aria/#grid 9 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby 10 | -------------------------------------------------------------------------------- /tests/minimal-data-grid/reference/2021-3-8_151542/imgs/black_keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/aria-at/ba4217128a0c03255fac649624ed668e49e09479/tests/minimal-data-grid/reference/2021-3-8_151542/imgs/black_keys.png -------------------------------------------------------------------------------- /tests/modal-dialog/data/js/moveFocusToAddDeliveryAddressButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Add Delivery Address' button 2 | testPageDocument.querySelector('#ex1 > button').focus(); 3 | -------------------------------------------------------------------------------- /tests/modal-dialog/data/js/openAddDeliveryAddressDialogAndFocusAddButton.js: -------------------------------------------------------------------------------- 1 | // opens the 'Add Delivery Address' modal dialog, and sets focus on the 'Add' button 2 | const btn = testPageDocument.querySelector('#ex1 > button'); 3 | testPageDocument.defaultView.openDialog('dialog1', btn, 'dialog1_add'); 4 | -------------------------------------------------------------------------------- /tests/modal-dialog/data/js/openAddDeliveryAddressDialogAndFocusAddDeliveryAddressHeading.js: -------------------------------------------------------------------------------- 1 | // opens the 'Add Delivery Address' modal dialog, and sets focus on the 'Add Delivery Address' heading 2 | 3 | const btn = testPageDocument.querySelector('#ex1 > button'); 4 | testPageDocument.defaultView.openDialog('dialog1', btn, 'dialog1_label'); 5 | -------------------------------------------------------------------------------- /tests/modal-dialog/data/js/openAddDeliveryAddressDialogAndFocusCancelButton.js: -------------------------------------------------------------------------------- 1 | // opens the 'Add Delivery Address' modal dialog, and sets focus on the 'Cancel' button 2 | const btn = testPageDocument.querySelector('#ex1 > button'); 3 | testPageDocument.defaultView.openDialog('dialog1', btn, 'dialog1_cancel'); 4 | -------------------------------------------------------------------------------- /tests/modal-dialog/data/js/openAddDeliveryAddressDialogAndFocusFirstInput.js: -------------------------------------------------------------------------------- 1 | // opens the 'Add Delivery Address' modal dialog, and sets focus on the first input 2 | const btn = testPageDocument.querySelector('#ex1 > button'); 3 | testPageDocument.defaultView.openDialog('dialog1', btn); 4 | -------------------------------------------------------------------------------- /tests/modal-dialog/data/js/openAddressAddedDialogAndFocusAddressAddedHeading.js: -------------------------------------------------------------------------------- 1 | // opens the 'Add Delivery Address' dialog followed by the 'Address Added' dialog, and sets focus on the 'Address added' heading inside the second dialog 2 | const btn = testPageDocument.querySelector('#ex1 > button'); 3 | testPageDocument.defaultView.openDialog('dialog1', btn, 'dialog1_add'); 4 | testPageDocument.defaultView.replaceDialog('dialog3', undefined, 'dialog3_label'); 5 | -------------------------------------------------------------------------------- /tests/modal-dialog/data/js/openAddressAddedDialogAndFocusOKButton.js: -------------------------------------------------------------------------------- 1 | // opens the 'Add Delivery Address' dialog followed by the 'Address Added' dialog, and sets focus on the 'your profile' link inside the second dialog 2 | const btn = testPageDocument.querySelector('#ex1 > button'); 3 | testPageDocument.defaultView.openDialog('dialog1', btn, 'dialog1_add'); 4 | testPageDocument.defaultView.replaceDialog('dialog3', btn, 'dialog3_close_btn'); 5 | -------------------------------------------------------------------------------- /tests/modal-dialog/data/js/openVerificationResultDialogAndFocusCloseButton.js: -------------------------------------------------------------------------------- 1 | // opens the 'Add Delivery Address' dialog followed by the 'Verification Result' dialog, and sets focus on the 'Close' button inside the second dialog 2 | const btn = testPageDocument.querySelector('#ex1 > button'); 3 | testPageDocument.defaultView.openDialog('dialog1', btn, 'dialog1_add'); 4 | testPageDocument.defaultView.openDialog('dialog2', 'dialog1_verify', 'dialog2_close_btn'); 5 | -------------------------------------------------------------------------------- /tests/modal-dialog/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,James Scholes, 3 | authorEmail,metadata,james@pac.bz, 4 | title,metadata,Modal Dialog Example, 5 | reference,metadata,reference/2022-4-7_15544/dialog.html,Test Case Page for Modal Dialog Example 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/,APG Pattern: Dialog (Modal) 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/examples/dialog/,APG Example: Modal Dialog 8 | dialog,aria,dialog,dialog 9 | aria-modal,aria,aria-modal,aria-modal 10 | aria-labelledby,aria,aria-labelledby,aria-labelledby 11 | aria-describedby,aria,aria-describedby,aria-describedby 12 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/checkFirstRadioButtonAndSetFocusAfterRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets the state of the first radio button to checked, and sets focus on a link after the radio group 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].classList.add('focus'); 9 | radios[0].setAttribute('aria-checked', 'true'); 10 | radioGroup.setAttribute('aria-activedescendant', radios[0].id); 11 | testPageDocument.querySelector('#afterlink').focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/checkFirstRadioButtonAndSetFocusBeforeRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets the state of the first radio button to checked, and sets focus on a link before the radio group 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].classList.add('focus'); 9 | radios[0].setAttribute('aria-checked', 'true'); 10 | radioGroup.setAttribute('aria-activedescendant', radios[0].id); 11 | testPageDocument.querySelector('#beforelink').focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/checkThirdRadioButtonAndSetFocusAfterRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets the state of the third radio button to checked, and sets focus on a link after the radio group 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[2].classList.add('focus'); 9 | radios[2].setAttribute('aria-checked', 'true'); 10 | radioGroup.setAttribute('aria-activedescendant', radios[2].id); 11 | testPageDocument.querySelector('#afterlink').focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/setFocusAfterRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the radio group 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/setFocusBeforeRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the radio group 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/setFocusOnAndCheckFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button, and sets its state to checked 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].classList.add('focus'); 9 | radios[0].setAttribute('aria-checked', 'true'); 10 | radioGroup.setAttribute('aria-activedescendant', radios[0].id); 11 | radioGroup.focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/setFocusOnFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].classList.add('focus'); 9 | radioGroup.setAttribute('aria-activedescendant', radios[0].id); 10 | radioGroup.focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/setFocusOnFirstRadioButtonAndCheckSecondRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button, and checks the second radio button 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].classList.add('focus'); 9 | radios[1].setAttribute('aria-checked', 'true'); 10 | radioGroup.setAttribute('aria-activedescendant', radios[0].id); 11 | radioGroup.focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/setFocusOnSecondRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second radio button 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[1].classList.add('focus'); 9 | radioGroup.setAttribute('aria-activedescendant', radios[1].id); 10 | radioGroup.focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/setFocusOnSecondRadioButtonAndCheckFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second radio button, and checks the first radio button 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[1].classList.add('focus'); 9 | radios[0].setAttribute('aria-checked', 'true'); 10 | radioGroup.setAttribute('aria-activedescendant', radios[1].id); 11 | radioGroup.focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/js/setFocusOnThirdRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the third radio button 2 | let radioGroup = testPageDocument.querySelector('[role="radiogroup"]'); 3 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 4 | radios.forEach(r => { 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[2].classList.add('focus'); 9 | radioGroup.setAttribute('aria-activedescendant', radios[2].id); 10 | radioGroup.focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-aria-activedescendant/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Radio Group Example Using aria-activedescendant, 5 | reference,metadata,reference/2022-4-7_113015/radio-activedescendant.html,Test Case Page for Radio Group Example Using aria-activedescendant 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/radio/,APG Pattern: Radio Group 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/radio/examples/radio-activedescendant/,APG Example: Radio Group Using aria-activedescendant 8 | aria-activedescendant,aria,aria-activedescendant,aria-activedescendant 9 | aria-checked,aria,aria-checked,aria-checked 10 | aria-labelledby,aria,aria-labelledby,aria-labelledby 11 | aria-posinset,aria,aria-posinset,aria-posinset 12 | aria-setsize,aria,aria-setsize,aria-setsize 13 | radio,aria,radio,radio 14 | radiogroup,aria,radiogroup,radiogroup 15 | htmlLink,htmlAam,a,HTML hyperlink 16 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/checkFirstRadioButtonAndSetFocusAfterRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets the state of the first radio button to checked, and sets focus on a link after the radio group 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].setAttribute('tabindex', '0'); 9 | radios[0].setAttribute('aria-checked', 'true'); 10 | testPageDocument.querySelector('#afterlink').focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/checkFirstRadioButtonAndSetFocusBeforeRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets the state of the first radio button to checked, and sets focus on a link before the radio group 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].setAttribute('tabindex', '0'); 9 | radios[0].setAttribute('aria-checked', 'true'); 10 | testPageDocument.querySelector('#beforelink').focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/checkThirdRadioButtonAndSetFocusAfterRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets the state of the third radio button to checked, and sets focus on a link after the radio group 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[2].setAttribute('tabindex', '0'); 9 | radios[2].setAttribute('aria-checked', 'true'); 10 | testPageDocument.querySelector('#afterlink').focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/setFocusAfterRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the radio group 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/setFocusBeforeRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the radio group 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/setFocusOnAndCheckFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button, and sets its state to checked 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].classList.add('focus'); 9 | radios[0].setAttribute('tabindex', '0'); 10 | radios[0].setAttribute('aria-checked', 'true'); 11 | radios[0].focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/setFocusOnFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].classList.add('focus'); 9 | radios[0].setAttribute('tabindex', '0'); 10 | radios[0].focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/setFocusOnFirstRadioButtonAndCheckSecondRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button, and checks the second radio button 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[0].classList.add('focus'); 9 | radios[0].setAttribute('tabindex', '0'); 10 | radios[1].setAttribute('aria-checked', 'true'); 11 | radios[0].focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/setFocusOnSecondRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second radio button 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[1].classList.add('focus'); 9 | radios[1].setAttribute('tabindex', '0'); 10 | radios[1].focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/setFocusOnSecondRadioButtonAndCheckFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second radio button, and checks the first radio button 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[1].classList.add('focus'); 9 | radios[1].setAttribute('tabindex', '0'); 10 | radios[0].setAttribute('aria-checked', 'true'); 11 | radios[1].focus(); 12 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/js/setFocusOnThirdRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the third radio button 2 | let radios = testPageDocument.querySelectorAll('[role="radio"]'); 3 | radios.forEach(r => { 4 | r.setAttribute('tabindex', '-1'); 5 | r.setAttribute('aria-checked', 'false'); 6 | r.classList.remove('focus'); 7 | }); 8 | radios[2].classList.add('focus'); 9 | radios[2].setAttribute('tabindex', '0'); 10 | radios[2].focus(); 11 | -------------------------------------------------------------------------------- /tests/radiogroup-roving-tabindex/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Radio Group Example Using Roving tabindex, 5 | reference,metadata,reference/2021-3-15_144141/radio.html,Test Case Page for Radio Group Example Using Roving tabindex 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/radio/,APG Pattern: Radio Group 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/radio/examples/radio/,APG Example: Radio Group Using Roving tabindex 8 | aria-checked,aria,aria-checked,aria-checked 9 | aria-labelledby,aria,aria-labelledby,aria-labelledby 10 | aria-posinset,aria,aria-posinset,aria-posinset 11 | aria-setsize,aria,aria-setsize,aria-setsize 12 | radio,aria,radio,radio 13 | radiogroup,aria,radiogroup,radiogroup 14 | htmlLink,htmlAam,a,HTML hyperlink 15 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/checkFifthRadioButtonAndSetFocusAfterRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets the state of the fifth radio button to checked, and sets focus on a link after the radio group 2 | 3 | let radio = document.querySelector('[data-rating="5"]'); 4 | document.defaultView.radioController.setChecked(radio); 5 | document.querySelector('#afterlink').focus(); 6 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/checkFirstRadioButtonAndSetFocusBeforeRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets the state of the first radio button to checked, and sets focus on a link before the radio group 2 | 3 | let radio = document.querySelector('[data-rating="1"]'); 4 | document.defaultView.radioController.setChecked(radio); 5 | document.querySelector('#beforelink').focus(); 6 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/setFocusAfterRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the radio group 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/setFocusBeforeRadioGroup.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the radio group 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/setFocusOnAndCheckFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button, and sets its state to checked 2 | 3 | let radio = document.querySelector('[data-rating="1"]'); 4 | document.defaultView.radioController.setChecked(radio); 5 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/setFocusOnFifthRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the fifth radio button 2 | 3 | let radio = document.querySelector('[data-rating="5"]'); 4 | radio.focus(); 5 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/setFocusOnFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button 2 | 3 | let radio = document.querySelector('[data-rating="1"]'); 4 | radio.focus(); 5 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/setFocusOnFirstRadioButtonAndCheckSecondRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first radio button, and checks the second radio button 2 | 3 | let firstRadio = document.querySelector('[data-rating="1"]'); 4 | let secondRadio = document.querySelector('[data-rating="2"]'); 5 | document.defaultView.radioController.setChecked(secondRadio); 6 | firstRadio.focus(); 7 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/setFocusOnSecondRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second radio button 2 | 3 | let radio = document.querySelector('[data-rating="2"]'); 4 | radio.focus(); 5 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/js/setFocusOnSecondRadioButtonAndCheckFirstRadioButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second radio button, and checks the first radio button 2 | 3 | let firstRadio = document.querySelector('[data-rating="1"]'); 4 | let secondRadio = document.querySelector('[data-rating="2"]'); 5 | document.defaultView.radioController.setChecked(firstRadio); 6 | secondRadio.focus(); 7 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Rating Radio Group, 5 | reference,metadata,reference/2025-4-8_12716/radio-rating.html,Rating Radio Group Example 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/radio/,APG Pattern: Radio Group 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/radio/examples/radio-rating/,APG Example: Rating Radio Group 8 | aria-checked,aria,aria-checked,aria-checked 9 | aria-label,aria,aria-label,aria-label 10 | aria-labelledby,aria,aria-labelledby,aria-labelledby 11 | aria-posinset,aria,aria-posinset,aria-posinset 12 | aria-setsize,aria,aria-setsize,aria-setsize 13 | radio,aria,radio,radio 14 | radiogroup,aria,radiogroup,radiogroup 15 | link,htmlAam,link,link 16 | -------------------------------------------------------------------------------- /tests/rating-radio-group/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | checkFifthRadioButtonAndSetFocusAfterRadioGroup,"sets the state of the fifth radio button to checked, and sets focus on a link after the radio group" 3 | checkFirstRadioButtonAndSetFocusBeforeRadioGroup,"sets the state of the first radio button to checked, and sets focus on a link before the radio group" 4 | setFocusAfterRadioGroup,sets focus on a link after the radio group 5 | setFocusBeforeRadioGroup,sets focus on a link before the radio group 6 | setFocusOnAndCheckFirstRadioButton,"sets focus on the first radio button, and sets its state to checked" 7 | setFocusOnFifthRadioButton,sets focus on the fifth radio button 8 | setFocusOnFirstRadioButton,sets focus on the first radio button 9 | setFocusOnFirstRadioButtonAndCheckSecondRadioButton,"sets focus on the first radio button, and checks the second radio button" 10 | setFocusOnSecondRadioButton,sets focus on the second radio button 11 | setFocusOnSecondRadioButtonAndCheckFirstRadioButton,"sets focus on the second radio button, and checks the first radio button" 12 | -------------------------------------------------------------------------------- /tests/rating-slider/data/js/setFocusAfterSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the slider 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/rating-slider/data/js/setFocusBeforeSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the slider 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/rating-slider/data/js/setFocusOnSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider 2 | testPageDocument.querySelector('[role="slider"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/rating-slider/data/js/setFocusOnSliderAndSetValueToFive.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider, and sets its value to five stars 2 | let slider = testPageDocument.querySelector('[role="slider"]'); 3 | slider.setAttribute('aria-valuenow', '5'); 4 | slider.setAttribute('aria-valuetext', 'five of five stars'); 5 | slider.focus(); 6 | -------------------------------------------------------------------------------- /tests/rating-slider/data/js/setFocusOnSliderAndSetValueToOne.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider, and sets its value to one star 2 | let slider = testPageDocument.querySelector('[role="slider"]'); 3 | slider.setAttribute('aria-valuenow', '1'); 4 | slider.setAttribute('aria-valuetext', 'one of five stars'); 5 | slider.focus(); 6 | -------------------------------------------------------------------------------- /tests/rating-slider/data/js/setFocusOnSliderAndSetValueToOneHalfStar.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider, and sets its value to one half star 2 | let slider = testPageDocument.querySelector('[role="slider"]'); 3 | slider.setAttribute('aria-valuenow', '0.5'); 4 | slider.setAttribute('aria-valuetext', 'one half of five stars'); 5 | slider.focus(); 6 | -------------------------------------------------------------------------------- /tests/rating-slider/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Rating Slider 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2021-9-21_13436/slider-rating.html 6 | designPattern,https://w3c.github.io/aria-practices/#slider 7 | example,https://w3c.github.io/aria-practices/examples/slider/slider-rating.html 8 | slider,https://w3c.github.io/aria/#slider 9 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby 10 | aria-orientation,https://w3c.github.io/aria/#aria-orientation 11 | aria-valuenow,https://w3c.github.io/aria/#aria-valuenow 12 | aria-valuemin,https://w3c.github.io/aria/#aria-valuemin 13 | aria-valuemax,https://w3c.github.io/aria/#aria-valuemax 14 | aria-valuetext,https://w3c.github.io/aria/#aria-valuetext 15 | aria-hidden,https://w3c.github.io/aria/#aria-hidden -------------------------------------------------------------------------------- /tests/seek-slider/data/js/setFocusAfterSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the slider 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/seek-slider/data/js/setFocusBeforeSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the slider 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/seek-slider/data/js/setFocusOnSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider 2 | testPageDocument.querySelector('[role="slider"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/seek-slider/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | title,metadata,Media Seek Slider, 4 | authorEmail,metadata,isa.delcastillo5@gmail.com, 5 | reference,metadata,reference/2021-9-21_14462/slider-seek.html,Test Case Page for Media Seek Slider 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/slider/,APG Pattern: Slider 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/slider/examples/slider-seek/,APG Example: Media Seek Slider 8 | slider,aria,slider,slider 9 | none,aria,none,none 10 | aria-labelledby,aria,aria-labelledby,aria-labelledby 11 | aria-orientation,aria,aria-orientation,aria-orientation 12 | aria-valuenow,aria,aria-valuenow,aria-valuenow 13 | aria-valuemin,aria,aria-valuemin,aria-valuemin 14 | aria-valuemax,aria,aria-valuemax,aria-valuemax 15 | aria-valuetext,aria,aria-valuetext,aria-valuetext 16 | aria-hidden,aria,aria-hidden,aria-hidden 17 | -------------------------------------------------------------------------------- /tests/seek-slider/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterSlider,sets focus on a link after the slider 3 | setFocusBeforeSlider,sets focus on a link before the slider 4 | setFocusOnSlider,sets focus on the slider 5 | -------------------------------------------------------------------------------- /tests/seek-slider/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToSlider,ctrl+opt+right ctrl+opt+right,,,5 3 | navForwardsToSlider,tab,,,5.1 4 | navForwardsToSlider,j,singleQuickKeyNavOn,,5.3 5 | navBackToSlider,ctrl+opt+left,,,6 6 | navBackToSlider,shift+tab,,,6.1 7 | navBackToSlider,shift+j,singleQuickKeyNavOn,,6.3 8 | reqInfoAboutSlider,ctrl+opt+f3,,,9 9 | reqInfoAboutSlider,ctrl+opt+f4,,,9.1 10 | incrementSliderByOneStep,right,arrowQuickKeyNavOff,,11 11 | incrementSliderByOneStep,up,arrowQuickKeyNavOff,,11.1 12 | incrementSliderByOneStep,ctrl+opt+shift+down ctrl+opt+right,,,11.2 13 | incrementSliderByOneStep,ctrl+opt+shift+down ctrl+opt+up,,,11.3 14 | decrementSliderByOneStep,left,arrowQuickKeyNavOff,,13 15 | decrementSliderByOneStep,down,arrowQuickKeyNavOff,,13.1 16 | decrementSliderByOneStep,vo+shift+down vo+left,,,13.2 17 | decrementSliderByOneStep,vo+shift+down vo+down,,,13.3 18 | incrementSliderByFifteenSteps,pageUp,,,15 19 | decrementSliderByFifteenSteps,pageDown,,,17 20 | decrementSliderToMinimumValue,home,,,19 21 | incrementSliderToMaximumValue,end,,,21 22 | -------------------------------------------------------------------------------- /tests/slider-multithumb/data/js/setFocusAfterSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the slider 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/slider-multithumb/data/js/setFocusBeforeSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the slider 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/slider-multithumb/data/js/setFocusOnSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider 2 | testPageDocument.querySelector('[role="slider"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/slider-multithumb/data/js/setFocusOnSliderAndSetValueToFive.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider, and sets its value to five stars 2 | let slider = testPageDocument.querySelector('[role="slider"]'); 3 | slider.setAttribute('aria-valuenow', '5'); 4 | slider.setAttribute('aria-valuetext', 'five of five stars'); 5 | slider.focus(); 6 | -------------------------------------------------------------------------------- /tests/slider-multithumb/data/js/setFocusOnSliderAndSetValueToOne.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider, and sets its value to one star 2 | let slider = testPageDocument.querySelector('[role="slider"]'); 3 | slider.setAttribute('aria-valuenow', '1'); 4 | slider.setAttribute('aria-valuetext', 'one of five stars'); 5 | slider.focus(); 6 | -------------------------------------------------------------------------------- /tests/slider-multithumb/data/js/setFocusOnSliderAndSetValueToOneHalfStar.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider, and sets its value to one half star 2 | let slider = testPageDocument.querySelector('[role="slider"]'); 3 | slider.setAttribute('aria-valuenow', '0.5'); 4 | slider.setAttribute('aria-valuetext', 'one half of five stars'); 5 | slider.focus(); 6 | -------------------------------------------------------------------------------- /tests/slider-multithumb/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Horizontal Multi-Thumb Slider 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2023-3-20_134749/slider-multithumb.html 6 | designPattern,https://www.w3.org/WAI/ARIA/apg/patterns/slider-multithumb/ 7 | example,https://www.w3.org/WAI/ARIA/apg/patterns/slider-multithumb/examples/slider-multithumb/ 8 | slider,https://w3c.github.io/aria/#slider 9 | none,https://w3c.github.io/aria/#none 10 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby 11 | aria-label,https://w3c.github.io/aria/#aria-label 12 | aria-valuenow,https://w3c.github.io/aria/#aria-valuenow 13 | aria-valuemin,https://w3c.github.io/aria/#aria-valuemin 14 | aria-valuemax,https://w3c.github.io/aria/#aria-valuemax -------------------------------------------------------------------------------- /tests/switch/data/js/setFocusAfterAndTurnOnSwitch.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the switch, and sets the switch state to 'on' 2 | testPageDocument.querySelector('[role="switch"]').setAttribute('aria-checked', 'true'); 3 | testPageDocument.getElementById('afterlink').focus(); 4 | -------------------------------------------------------------------------------- /tests/switch/data/js/setFocusAfterSwitch.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the switch 2 | testPageDocument.getElementById('afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/switch/data/js/setFocusBeforeAndTurnOnSwitch.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the switch, and sets the state of the switch to 'on' 2 | testPageDocument.querySelector('[role="switch"]').setAttribute('aria-checked', 'true'); 3 | testPageDocument.getElementById('beforelink').focus(); 4 | -------------------------------------------------------------------------------- /tests/switch/data/js/setFocusBeforeSwitch.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the switch 2 | testPageDocument.getElementById('beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/switch/data/js/setFocusOnAndTurnOnSwitch.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Notifications' switch, and sets its state to 'on' 2 | testPageDocument.querySelector('[role="switch"]').setAttribute('aria-checked', 'true'); 3 | testPageDocument.querySelector('[role="switch"]').focus(); 4 | -------------------------------------------------------------------------------- /tests/switch/data/js/setFocusOnSwitch.js: -------------------------------------------------------------------------------- 1 | // sets focus on the 'Notifications' switch 2 | testPageDocument.querySelector('[role="switch"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/switch/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | title,Switch Example 4 | authorEmail,isa.delcastillo5@gmail.com 5 | reference,reference/2022-8-1_103716/switch.html 6 | designPattern,https://w3c.github.io/aria-practices/#switch 7 | example,https://w3c.github.io/aria-practices/examples/switch/switch.html 8 | switch,https://w3c.github.io/aria/#switch 9 | aria-checked,https://w3c.github.io/aria/#aria-checked 10 | aria-hidden,https://w3c.github.io/aria/#aria-hidden -------------------------------------------------------------------------------- /tests/tabs-manual-activation/data/js/activateThirdTabAndSetFocusOnTabpanel.js: -------------------------------------------------------------------------------- 1 | // activates the third tab in the tab list, and sets focus on the tab panel 2 | testPageDocument.querySelectorAll('[role="tab"]').forEach(t => { 3 | t.setAttribute('tabindex', '-1'); 4 | t.setAttribute('aria-selected', 'false'); 5 | }); 6 | 7 | testPageDocument.querySelectorAll('[role="tabpanel"]').forEach(p => { 8 | p.classList.add('is-hidden'); 9 | }); 10 | 11 | let thirdTab = testPageDocument.querySelector('#complex'); 12 | let thirdPanel = testPageDocument.querySelector('#complex-complex'); 13 | 14 | thirdTab.removeAttribute('tabindex'); 15 | thirdTab.setAttribute('aria-selected', 'true'); 16 | thirdPanel.classList.remove('is-hidden'); 17 | thirdPanel.focus(); 18 | -------------------------------------------------------------------------------- /tests/tabs-manual-activation/data/js/setFocusAfterTabpanel.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the tab panel 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/tabs-manual-activation/data/js/setFocusBeforeTablist.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the tab list 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/tabs-manual-activation/data/js/setFocusOnFirstTab.js: -------------------------------------------------------------------------------- 1 | // sets focus on the first tab 2 | testPageDocument.querySelector('#nils').focus(); 3 | -------------------------------------------------------------------------------- /tests/tabs-manual-activation/data/js/setFocusOnSecondTab.js: -------------------------------------------------------------------------------- 1 | // sets focus on the second tab 2 | testPageDocument.querySelector('#agnes').focus(); 3 | -------------------------------------------------------------------------------- /tests/tabs-manual-activation/data/js/setFocusOnThirdTab.js: -------------------------------------------------------------------------------- 1 | // sets focus on the third tab 2 | testPageDocument.querySelector('#complex').focus(); 3 | -------------------------------------------------------------------------------- /tests/tabs-manual-activation/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,value 2 | author,Isabel Del Castillo 3 | authorEmail,isa.delcastillo5@gmail.com 4 | title,Tabs with Manual Activation 5 | reference,reference/2021-2-15_124757/tabs.html 6 | designPattern,https://w3c.github.io/aria-practices/#tabpanel 7 | example,https://w3c.github.io/aria-practices/examples/tabs/tabs-2/tabs.html 8 | tablist,https://w3c.github.io/aria/#tablist 9 | tab,https://w3c.github.io/aria/#tab 10 | tabpanel,https://w3c.github.io/aria/#tabpanel 11 | aria-label,https://w3c.github.io/aria/#aria-label 12 | aria-labelledby,https://w3c.github.io/aria/#aria-labelledby 13 | aria-controls,https://w3c.github.io/aria/#aria-controls 14 | aria-selected,https://w3c.github.io/aria/#aria-selected 15 | -------------------------------------------------------------------------------- /tests/toggle-button/data/assertions.csv: -------------------------------------------------------------------------------- 1 | assertionId,priority,assertionStatement,assertionPhrase,refIds 2 | nameMute,1,Name 'Mute' is conveyed,convey name 'Mute',button 3 | roleToggleButton,1,Role 'toggle button' is conveyed,convey role 'toggle button',aria-pressed 4 | stateChangeToNotPressed,1,"Change in state, to 'not pressed', is conveyed","convey change in state, to 'not pressed'",aria-pressed 5 | stateChangeToPressed,1,"Change in state, to 'pressed', is conveyed","convey change in state, to 'pressed'",aria-pressed 6 | stateNotPressed,3,State 'not pressed' is conveyed,convey state 'not pressed',aria-pressed 7 | statePressed,1,State 'pressed' is conveyed,convey state 'pressed',aria-pressed 8 | -------------------------------------------------------------------------------- /tests/toggle-button/data/js/setFocusAfterButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the button 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/toggle-button/data/js/setFocusAfterButtonAndSetStateToPressed.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the button, and sets the state of the button to 'pressed' 2 | let button = testPageDocument.querySelector('#toggle'); 3 | button.setAttribute('aria-pressed', 'true'); 4 | button.querySelector('use').setAttribute('xlink:href', '#icon-sound'); 5 | testPageDocument.querySelector('#afterlink').focus(); 6 | -------------------------------------------------------------------------------- /tests/toggle-button/data/js/setFocusBeforeButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the button 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/toggle-button/data/js/setFocusBeforeButtonAndSetStateToPressed.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the button, and sets the state of the button to 'pressed' 2 | let button = testPageDocument.querySelector('#toggle'); 3 | button.setAttribute('aria-pressed', 'true'); 4 | button.querySelector('use').setAttribute('xlink:href', '#icon-sound'); 5 | testPageDocument.querySelector('#beforelink').focus(); 6 | -------------------------------------------------------------------------------- /tests/toggle-button/data/js/setFocusOnButton.js: -------------------------------------------------------------------------------- 1 | // sets focus on the button 2 | testPageDocument.querySelector('#toggle').focus(); 3 | -------------------------------------------------------------------------------- /tests/toggle-button/data/js/setFocusOnButtonAndSetStateToPressed.js: -------------------------------------------------------------------------------- 1 | // sets focus on the button, and sets its state to 'pressed' 2 | let button = testPageDocument.querySelector('#toggle'); 3 | button.setAttribute('aria-pressed', 'true'); 4 | button.querySelector('use').setAttribute('xlink:href', '#icon-sound'); 5 | button.focus(); 6 | -------------------------------------------------------------------------------- /tests/toggle-button/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | authorEmail,metadata,isa.delcastillo5@gmail.com, 4 | title,metadata,Toggle Button, 5 | reference,metadata,reference/2022-4-8_135651/button.html,Test Case Page for Toggle Button 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/button/,APG Pattern: Button 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/button/examples/button/,APG Example: Button 8 | button,htmlAam,button,button 9 | aria-pressed,aria,aria-pressed,aria-pressed 10 | -------------------------------------------------------------------------------- /tests/toggle-button/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterButton,sets focus on a link after the button 3 | setFocusAfterButtonAndSetStateToPressed,"sets focus on a link after the button, and sets the state of the button to 'pressed'" 4 | setFocusBeforeButton,sets focus on a link before the button 5 | setFocusBeforeButtonAndSetStateToPressed,"sets focus on a link before the button, and sets the state of the button to 'pressed'" 6 | setFocusOnButton,sets focus on the button 7 | setFocusOnButtonAndSetStateToPressed,"sets focus on the button, and sets its state to 'pressed'" 8 | -------------------------------------------------------------------------------- /tests/vertical-temperature-slider/data/jaws-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToSlider,down down down,virtualCursor,,1 3 | navForwardsToSlider,f,virtualCursor,,1.1 4 | navForwardsToSlider,tab,virtualCursor,2:interactionModeEnabled,1.2 5 | navForwardsToSlider,tab,pcCursor,,1.3 6 | navBackToSlider,up,virtualCursor,,4 7 | navBackToSlider,shift+f,virtualCursor,,4.1 8 | navBackToSlider,shift+tab,virtualCursor,2:interactionModeEnabled,4.2 9 | navBackToSlider,shift+tab,pcCursor,,4.3 10 | reqInfoAboutSlider,ins+tab,virtualCursor,,7 11 | reqInfoAboutSlider,ins+up,virtualCursor,,7.1 12 | reqInfoAboutSlider,ins+tab,pcCursor,,8 13 | reqInfoAboutSlider,ins+up,pcCursor,,8.1 14 | incrementSliderByOneStep,right,pcCursor,,10 15 | incrementSliderByOneStep,up,pcCursor,,10.1 16 | decrementSliderByOneStep,left,pcCursor,,12 17 | decrementSliderByOneStep,down,pcCursor,,12.1 18 | incrementSliderByTwentySteps,pageUp,pcCursor,,14 19 | decrementSliderByTwentySteps,pageDown,pcCursor,,16 20 | decrementSliderToMinimumValue,home,pcCursor,,18 21 | incrementSliderToMaximumValue,end,pcCursor,,20 22 | -------------------------------------------------------------------------------- /tests/vertical-temperature-slider/data/js/setFocusAfterSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link after the slider 2 | testPageDocument.querySelector('#afterlink').focus(); 3 | -------------------------------------------------------------------------------- /tests/vertical-temperature-slider/data/js/setFocusBeforeSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on a link before the slider 2 | testPageDocument.querySelector('#beforelink').focus(); 3 | -------------------------------------------------------------------------------- /tests/vertical-temperature-slider/data/js/setFocusOnSlider.js: -------------------------------------------------------------------------------- 1 | // sets focus on the slider 2 | testPageDocument.querySelector('[role="slider"]').focus(); 3 | -------------------------------------------------------------------------------- /tests/vertical-temperature-slider/data/nvda-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToSlider,down down down,browseMode,,1 3 | navForwardsToSlider,f,browseMode,,1.1 4 | navForwardsToSlider,tab,browseMode,2:interactionModeEnabled,1.2 5 | navForwardsToSlider,tab,focusMode,,1.3 6 | navBackToSlider,up,browseMode,,4 7 | navBackToSlider,shift+f,browseMode,,4.1 8 | navBackToSlider,shift+tab,browseMode,2:interactionModeEnabled,4.2 9 | navBackToSlider,shift+tab,focusMode,,4.3 10 | reqInfoAboutSlider,ins+tab,browseMode,,7 11 | reqInfoAboutSlider,ins+up,browseMode,,7.1 12 | reqInfoAboutSlider,ins+tab,focusMode,,8 13 | reqInfoAboutSlider,ins+up,focusMode,,8.1 14 | incrementSliderByOneStep,right,focusMode,,10 15 | incrementSliderByOneStep,up,focusMode,,10.1 16 | decrementSliderByOneStep,left,focusMode,,12 17 | decrementSliderByOneStep,down,focusMode,,12.1 18 | incrementSliderByTwentySteps,pageUp,focusMode,,14 19 | decrementSliderByTwentySteps,pageDown,focusMode,,16 20 | decrementSliderToMinimumValue,home,focusMode,,18 21 | incrementSliderToMaximumValue,end,focusMode,,20 22 | -------------------------------------------------------------------------------- /tests/vertical-temperature-slider/data/references.csv: -------------------------------------------------------------------------------- 1 | refId,type,value,linkText 2 | author,metadata,Isabel Del Castillo, 3 | title,metadata,Vertical Temperature Slider, 4 | authorEmail,metadata,isa.delcastillo5@gmail.com, 5 | reference,metadata,reference/2021-9-21_142211/slider-temperature.html,Test Case Page for Vertical Temperature Slider 6 | designPattern,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/slider/,APG Pattern: Slider 7 | example,metadata,https://www.w3.org/WAI/ARIA/apg/patterns/slider/examples/slider-temperature/,APG Example: Vertical Temperature Slider 8 | slider,aria,slider,slider 9 | none,aria,none,none 10 | aria-labelledby,aria,aria-labelledby,aria-labelledby 11 | aria-orientation,aria,aria-orientation,aria-orientation 12 | aria-valuenow,aria,aria-valuenow,aria-valuenow 13 | aria-valuemin,aria,aria-valuemin,aria-valuemin 14 | aria-valuemax,aria,aria-valuemax,aria-valuemax 15 | aria-valuetext,aria,aria-valuetext,aria-valuetext 16 | aria-hidden,aria,aria-hidden,aria-hidden 17 | -------------------------------------------------------------------------------- /tests/vertical-temperature-slider/data/scripts.csv: -------------------------------------------------------------------------------- 1 | setupScript,setupScriptDescription 2 | setFocusAfterSlider,sets focus on a link after the slider 3 | setFocusBeforeSlider,sets focus on a link before the slider 4 | setFocusOnSlider,sets focus on the slider 5 | -------------------------------------------------------------------------------- /tests/vertical-temperature-slider/data/voiceover_macos-commands.csv: -------------------------------------------------------------------------------- 1 | testId,command,settings,assertionExceptions,presentationNumber 2 | navForwardsToSlider,ctrl+opt+right ctrl+opt+right ctrl+opt+right,,,5 3 | navForwardsToSlider,tab,,,5.1 4 | navForwardsToSlider,j,singleQuickKeyNavOn,,5.2 5 | navBackToSlider,ctrl+opt+left,,,6 6 | navBackToSlider,shift+tab,,,6.1 7 | navBackToSlider,shift+j,singleQuickKeyNavOn,,6.2 8 | reqInfoAboutSlider,ctrl+opt+f3,,,9 9 | reqInfoAboutSlider,ctrl+opt+f4,,,9.1 10 | incrementSliderByOneStep,right,quickNavOff,,11 11 | incrementSliderByOneStep,up,quickNavOff,,11.1 12 | incrementSliderByOneStep,vo+shift+down vo+right,,,11.2 13 | incrementSliderByOneStep,vo+shift+down vo+up,,,11.3 14 | decrementSliderByOneStep,left,quickNavOff,,13 15 | decrementSliderByOneStep,down,quickNavOff,,13.1 16 | decrementSliderByOneStep,vo+shift+down vo+left,,,13.2 17 | decrementSliderByOneStep,vo+shift+down vo+down,,,13.3 18 | incrementSliderByTwentySteps,pageUp,,,15 19 | decrementSliderByTwentySteps,pageDown,,,17 20 | decrementSliderToMinimumValue,home,,,19 21 | incrementSliderToMaximumValue,end,,,21 22 | -------------------------------------------------------------------------------- /w3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "group": 111355, 3 | "contacts": ["michael-n-cooper"], 4 | "policy": "restricted", 5 | "repo-type": "cg-report" 6 | } 7 | --------------------------------------------------------------------------------