diff options
246 files changed, 15523 insertions, 1322 deletions
diff --git a/tests/wpt/metadata/FileAPI/historical.https.html.ini b/tests/wpt/metadata/FileAPI/historical.https.html.ini new file mode 100644 index 00000000000..f71e37af0a5 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/historical.https.html.ini @@ -0,0 +1,4 @@ +[historical.https.html] + [Historical features] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini index e363bfabdfc..e76908fb6ca 100644 --- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -1,8 +1,4 @@ [url-in-tags-revoke.window.html] - expected: TIMEOUT [Fetching a blob URL immediately before revoking it works in an iframe.] expected: FAIL - [Fetching a blob URL immediately before revoking it works in <script> tags.] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 942f4d82c11..bca16f84d3c 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -133,6 +133,828 @@ {} ] ], + "accname/description_from_content_of_describedby_element-manual.html": [ + [ + "/accname/description_from_content_of_describedby_element-manual.html", + {} + ] + ], + "accname/description_from_content_of_describedby_element_which_is_hidden-manual.html": [ + [ + "/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html", + {} + ] + ], + "accname/description_test_case_664-manual.html": [ + [ + "/accname/description_test_case_664-manual.html", + {} + ] + ], + "accname/description_test_case_665-manual.html": [ + [ + "/accname/description_test_case_665-manual.html", + {} + ] + ], + "accname/description_test_case_666-manual.html": [ + [ + "/accname/description_test_case_666-manual.html", + {} + ] + ], + "accname/name_checkbox-label-embedded-combobox-manual.html": [ + [ + "/accname/name_checkbox-label-embedded-combobox-manual.html", + {} + ] + ], + "accname/name_checkbox-label-embedded-menu-manual.html": [ + [ + "/accname/name_checkbox-label-embedded-menu-manual.html", + {} + ] + ], + "accname/name_checkbox-label-embedded-select-manual.html": [ + [ + "/accname/name_checkbox-label-embedded-select-manual.html", + {} + ] + ], + "accname/name_checkbox-label-embedded-slider-manual.html": [ + [ + "/accname/name_checkbox-label-embedded-slider-manual.html", + {} + ] + ], + "accname/name_checkbox-label-embedded-spinbutton-manual.html": [ + [ + "/accname/name_checkbox-label-embedded-spinbutton-manual.html", + {} + ] + ], + "accname/name_checkbox-title-manual.html": [ + [ + "/accname/name_checkbox-title-manual.html", + {} + ] + ], + "accname/name_file-label-embedded-combobox-manual.html": [ + [ + "/accname/name_file-label-embedded-combobox-manual.html", + {} + ] + ], + "accname/name_file-label-embedded-menu-manual.html": [ + [ + "/accname/name_file-label-embedded-menu-manual.html", + {} + ] + ], + "accname/name_file-label-embedded-select-manual.html": [ + [ + "/accname/name_file-label-embedded-select-manual.html", + {} + ] + ], + "accname/name_file-label-embedded-slider-manual.html": [ + [ + "/accname/name_file-label-embedded-slider-manual.html", + {} + ] + ], + "accname/name_file-label-embedded-spinbutton-manual.html": [ + [ + "/accname/name_file-label-embedded-spinbutton-manual.html", + {} + ] + ], + "accname/name_file-title-manual.html": [ + [ + "/accname/name_file-title-manual.html", + {} + ] + ], + "accname/name_from_content-manual.html": [ + [ + "/accname/name_from_content-manual.html", + {} + ] + ], + "accname/name_from_content_of_label-manual.html": [ + [ + "/accname/name_from_content_of_label-manual.html", + {} + ] + ], + "accname/name_from_content_of_labelledby_element-manual.html": [ + [ + "/accname/name_from_content_of_labelledby_element-manual.html", + {} + ] + ], + "accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html": [ + [ + "/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html", + {} + ] + ], + "accname/name_image-title-manual.html": [ + [ + "/accname/name_image-title-manual.html", + {} + ] + ], + "accname/name_password-label-embedded-combobox-manual.html": [ + [ + "/accname/name_password-label-embedded-combobox-manual.html", + {} + ] + ], + "accname/name_password-label-embedded-menu-manual.html": [ + [ + "/accname/name_password-label-embedded-menu-manual.html", + {} + ] + ], + "accname/name_password-label-embedded-select-manual.html": [ + [ + "/accname/name_password-label-embedded-select-manual.html", + {} + ] + ], + "accname/name_password-label-embedded-slider-manual.html": [ + [ + "/accname/name_password-label-embedded-slider-manual.html", + {} + ] + ], + "accname/name_password-label-embedded-spinbutton-manual.html": [ + [ + "/accname/name_password-label-embedded-spinbutton-manual.html", + {} + ] + ], + "accname/name_password-title-manual.html": [ + [ + "/accname/name_password-title-manual.html", + {} + ] + ], + "accname/name_radio-label-embedded-combobox-manual.html": [ + [ + "/accname/name_radio-label-embedded-combobox-manual.html", + {} + ] + ], + "accname/name_radio-label-embedded-menu-manual.html": [ + [ + "/accname/name_radio-label-embedded-menu-manual.html", + {} + ] + ], + "accname/name_radio-label-embedded-select-manual.html": [ + [ + "/accname/name_radio-label-embedded-select-manual.html", + {} + ] + ], + "accname/name_radio-label-embedded-slider-manual.html": [ + [ + "/accname/name_radio-label-embedded-slider-manual.html", + {} + ] + ], + "accname/name_radio-label-embedded-spinbutton-manual.html": [ + [ + "/accname/name_radio-label-embedded-spinbutton-manual.html", + {} + ] + ], + "accname/name_radio-title-manual.html": [ + [ + "/accname/name_radio-title-manual.html", + {} + ] + ], + "accname/name_test_case_539-manual.html": [ + [ + "/accname/name_test_case_539-manual.html", + {} + ] + ], + "accname/name_test_case_540-manual.html": [ + [ + "/accname/name_test_case_540-manual.html", + {} + ] + ], + "accname/name_test_case_541-manual.html": [ + [ + "/accname/name_test_case_541-manual.html", + {} + ] + ], + "accname/name_test_case_543-manual.html": [ + [ + "/accname/name_test_case_543-manual.html", + {} + ] + ], + "accname/name_test_case_544-manual.html": [ + [ + "/accname/name_test_case_544-manual.html", + {} + ] + ], + "accname/name_test_case_545-manual.html": [ + [ + "/accname/name_test_case_545-manual.html", + {} + ] + ], + "accname/name_test_case_546-manual.html": [ + [ + "/accname/name_test_case_546-manual.html", + {} + ] + ], + "accname/name_test_case_547-manual.html": [ + [ + "/accname/name_test_case_547-manual.html", + {} + ] + ], + "accname/name_test_case_548-manual.html": [ + [ + "/accname/name_test_case_548-manual.html", + {} + ] + ], + "accname/name_test_case_549-manual.html": [ + [ + "/accname/name_test_case_549-manual.html", + {} + ] + ], + "accname/name_test_case_550-manual.html": [ + [ + "/accname/name_test_case_550-manual.html", + {} + ] + ], + "accname/name_test_case_551-manual.html": [ + [ + "/accname/name_test_case_551-manual.html", + {} + ] + ], + "accname/name_test_case_552-manual.html": [ + [ + "/accname/name_test_case_552-manual.html", + {} + ] + ], + "accname/name_test_case_553-manual.html": [ + [ + "/accname/name_test_case_553-manual.html", + {} + ] + ], + "accname/name_test_case_556-manual.html": [ + [ + "/accname/name_test_case_556-manual.html", + {} + ] + ], + "accname/name_test_case_557-manual.html": [ + [ + "/accname/name_test_case_557-manual.html", + {} + ] + ], + "accname/name_test_case_558-manual.html": [ + [ + "/accname/name_test_case_558-manual.html", + {} + ] + ], + "accname/name_test_case_559-manual.html": [ + [ + "/accname/name_test_case_559-manual.html", + {} + ] + ], + "accname/name_test_case_560-manual.html": [ + [ + "/accname/name_test_case_560-manual.html", + {} + ] + ], + "accname/name_test_case_561-manual.html": [ + [ + "/accname/name_test_case_561-manual.html", + {} + ] + ], + "accname/name_test_case_562-manual.html": [ + [ + "/accname/name_test_case_562-manual.html", + {} + ] + ], + "accname/name_test_case_563-manual.html": [ + [ + "/accname/name_test_case_563-manual.html", + {} + ] + ], + "accname/name_test_case_564-manual.html": [ + [ + "/accname/name_test_case_564-manual.html", + {} + ] + ], + "accname/name_test_case_565-manual.html": [ + [ + "/accname/name_test_case_565-manual.html", + {} + ] + ], + "accname/name_test_case_566-manual.html": [ + [ + "/accname/name_test_case_566-manual.html", + {} + ] + ], + "accname/name_test_case_596-manual.html": [ + [ + "/accname/name_test_case_596-manual.html", + {} + ] + ], + "accname/name_test_case_597-manual.html": [ + [ + "/accname/name_test_case_597-manual.html", + {} + ] + ], + "accname/name_test_case_598-manual.html": [ + [ + "/accname/name_test_case_598-manual.html", + {} + ] + ], + "accname/name_test_case_599-manual.html": [ + [ + "/accname/name_test_case_599-manual.html", + {} + ] + ], + "accname/name_test_case_600-manual.html": [ + [ + "/accname/name_test_case_600-manual.html", + {} + ] + ], + "accname/name_test_case_601-manual.html": [ + [ + "/accname/name_test_case_601-manual.html", + {} + ] + ], + "accname/name_test_case_602-manual.html": [ + [ + "/accname/name_test_case_602-manual.html", + {} + ] + ], + "accname/name_test_case_603-manual.html": [ + [ + "/accname/name_test_case_603-manual.html", + {} + ] + ], + "accname/name_test_case_604-manual.html": [ + [ + "/accname/name_test_case_604-manual.html", + {} + ] + ], + "accname/name_test_case_605-manual.html": [ + [ + "/accname/name_test_case_605-manual.html", + {} + ] + ], + "accname/name_test_case_606-manual.html": [ + [ + "/accname/name_test_case_606-manual.html", + {} + ] + ], + "accname/name_test_case_607-manual.html": [ + [ + "/accname/name_test_case_607-manual.html", + {} + ] + ], + "accname/name_test_case_608-manual.html": [ + [ + "/accname/name_test_case_608-manual.html", + {} + ] + ], + "accname/name_test_case_609-manual.html": [ + [ + "/accname/name_test_case_609-manual.html", + {} + ] + ], + "accname/name_test_case_610-manual.html": [ + [ + "/accname/name_test_case_610-manual.html", + {} + ] + ], + "accname/name_test_case_611-manual.html": [ + [ + "/accname/name_test_case_611-manual.html", + {} + ] + ], + "accname/name_test_case_612-manual.html": [ + [ + "/accname/name_test_case_612-manual.html", + {} + ] + ], + "accname/name_test_case_613-manual.html": [ + [ + "/accname/name_test_case_613-manual.html", + {} + ] + ], + "accname/name_test_case_614-manual.html": [ + [ + "/accname/name_test_case_614-manual.html", + {} + ] + ], + "accname/name_test_case_615-manual.html": [ + [ + "/accname/name_test_case_615-manual.html", + {} + ] + ], + "accname/name_test_case_616-manual.html": [ + [ + "/accname/name_test_case_616-manual.html", + {} + ] + ], + "accname/name_test_case_617-manual.html": [ + [ + "/accname/name_test_case_617-manual.html", + {} + ] + ], + "accname/name_test_case_618-manual.html": [ + [ + "/accname/name_test_case_618-manual.html", + {} + ] + ], + "accname/name_test_case_619-manual.html": [ + [ + "/accname/name_test_case_619-manual.html", + {} + ] + ], + "accname/name_test_case_620-manual.html": [ + [ + "/accname/name_test_case_620-manual.html", + {} + ] + ], + "accname/name_test_case_621-manual.html": [ + [ + "/accname/name_test_case_621-manual.html", + {} + ] + ], + "accname/name_test_case_659-manual.html": [ + [ + "/accname/name_test_case_659-manual.html", + {} + ] + ], + "accname/name_test_case_660-manual.html": [ + [ + "/accname/name_test_case_660-manual.html", + {} + ] + ], + "accname/name_test_case_661-manual.html": [ + [ + "/accname/name_test_case_661-manual.html", + {} + ] + ], + "accname/name_test_case_662-manual.html": [ + [ + "/accname/name_test_case_662-manual.html", + {} + ] + ], + "accname/name_test_case_663-manual.html": [ + [ + "/accname/name_test_case_663-manual.html", + {} + ] + ], + "accname/name_test_case_663a-manual.html": [ + [ + "/accname/name_test_case_663a-manual.html", + {} + ] + ], + "accname/name_test_case_721-manual.html": [ + [ + "/accname/name_test_case_721-manual.html", + {} + ] + ], + "accname/name_test_case_723-manual.html": [ + [ + "/accname/name_test_case_723-manual.html", + {} + ] + ], + "accname/name_test_case_724-manual.html": [ + [ + "/accname/name_test_case_724-manual.html", + {} + ] + ], + "accname/name_test_case_725-manual.html": [ + [ + "/accname/name_test_case_725-manual.html", + {} + ] + ], + "accname/name_test_case_726-manual.html": [ + [ + "/accname/name_test_case_726-manual.html", + {} + ] + ], + "accname/name_test_case_727-manual.html": [ + [ + "/accname/name_test_case_727-manual.html", + {} + ] + ], + "accname/name_test_case_728-manual.html": [ + [ + "/accname/name_test_case_728-manual.html", + {} + ] + ], + "accname/name_test_case_729-manual.html": [ + [ + "/accname/name_test_case_729-manual.html", + {} + ] + ], + "accname/name_test_case_730-manual.html": [ + [ + "/accname/name_test_case_730-manual.html", + {} + ] + ], + "accname/name_test_case_731-manual.html": [ + [ + "/accname/name_test_case_731-manual.html", + {} + ] + ], + "accname/name_test_case_733-manual.html": [ + [ + "/accname/name_test_case_733-manual.html", + {} + ] + ], + "accname/name_test_case_734-manual.html": [ + [ + "/accname/name_test_case_734-manual.html", + {} + ] + ], + "accname/name_test_case_735-manual.html": [ + [ + "/accname/name_test_case_735-manual.html", + {} + ] + ], + "accname/name_test_case_736-manual.html": [ + [ + "/accname/name_test_case_736-manual.html", + {} + ] + ], + "accname/name_test_case_737-manual.html": [ + [ + "/accname/name_test_case_737-manual.html", + {} + ] + ], + "accname/name_test_case_738-manual.html": [ + [ + "/accname/name_test_case_738-manual.html", + {} + ] + ], + "accname/name_test_case_739-manual.html": [ + [ + "/accname/name_test_case_739-manual.html", + {} + ] + ], + "accname/name_test_case_740-manual.html": [ + [ + "/accname/name_test_case_740-manual.html", + {} + ] + ], + "accname/name_test_case_741-manual.html": [ + [ + "/accname/name_test_case_741-manual.html", + {} + ] + ], + "accname/name_test_case_742-manual.html": [ + [ + "/accname/name_test_case_742-manual.html", + {} + ] + ], + "accname/name_test_case_743-manual.html": [ + [ + "/accname/name_test_case_743-manual.html", + {} + ] + ], + "accname/name_test_case_744-manual.html": [ + [ + "/accname/name_test_case_744-manual.html", + {} + ] + ], + "accname/name_test_case_745-manual.html": [ + [ + "/accname/name_test_case_745-manual.html", + {} + ] + ], + "accname/name_test_case_746-manual.html": [ + [ + "/accname/name_test_case_746-manual.html", + {} + ] + ], + "accname/name_test_case_747-manual.html": [ + [ + "/accname/name_test_case_747-manual.html", + {} + ] + ], + "accname/name_test_case_748-manual.html": [ + [ + "/accname/name_test_case_748-manual.html", + {} + ] + ], + "accname/name_test_case_749-manual.html": [ + [ + "/accname/name_test_case_749-manual.html", + {} + ] + ], + "accname/name_test_case_750-manual.html": [ + [ + "/accname/name_test_case_750-manual.html", + {} + ] + ], + "accname/name_test_case_751-manual.html": [ + [ + "/accname/name_test_case_751-manual.html", + {} + ] + ], + "accname/name_test_case_752-manual.html": [ + [ + "/accname/name_test_case_752-manual.html", + {} + ] + ], + "accname/name_test_case_753-manual.html": [ + [ + "/accname/name_test_case_753-manual.html", + {} + ] + ], + "accname/name_test_case_754-manual.html": [ + [ + "/accname/name_test_case_754-manual.html", + {} + ] + ], + "accname/name_test_case_755-manual.html": [ + [ + "/accname/name_test_case_755-manual.html", + {} + ] + ], + "accname/name_test_case_756-manual.html": [ + [ + "/accname/name_test_case_756-manual.html", + {} + ] + ], + "accname/name_test_case_757-manual.html": [ + [ + "/accname/name_test_case_757-manual.html", + {} + ] + ], + "accname/name_test_case_758-manual.html": [ + [ + "/accname/name_test_case_758-manual.html", + {} + ] + ], + "accname/name_test_case_759-manual.html": [ + [ + "/accname/name_test_case_759-manual.html", + {} + ] + ], + "accname/name_test_case_760-manual.html": [ + [ + "/accname/name_test_case_760-manual.html", + {} + ] + ], + "accname/name_test_case_761-manual.html": [ + [ + "/accname/name_test_case_761-manual.html", + {} + ] + ], + "accname/name_test_case_762-manual.html": [ + [ + "/accname/name_test_case_762-manual.html", + {} + ] + ], + "accname/name_text-label-embedded-combobox-manual.html": [ + [ + "/accname/name_text-label-embedded-combobox-manual.html", + {} + ] + ], + "accname/name_text-label-embedded-menu-manual.html": [ + [ + "/accname/name_text-label-embedded-menu-manual.html", + {} + ] + ], + "accname/name_text-label-embedded-select-manual.html": [ + [ + "/accname/name_text-label-embedded-select-manual.html", + {} + ] + ], + "accname/name_text-label-embedded-slider-manual.html": [ + [ + "/accname/name_text-label-embedded-slider-manual.html", + {} + ] + ], + "accname/name_text-label-embedded-spinbutton-manual.html": [ + [ + "/accname/name_text-label-embedded-spinbutton-manual.html", + {} + ] + ], + "accname/name_text-title-manual.html": [ + [ + "/accname/name_text-title-manual.html", + {} + ] + ], "ambient-light/AmbientLightSensor_onerror-manual.https.html": [ [ "/ambient-light/AmbientLightSensor_onerror-manual.https.html", @@ -48471,6 +49293,18 @@ {} ] ], + "css/CSS2/floats/zero-width-floats.html": [ + [ + "/css/CSS2/floats/zero-width-floats.html", + [ + [ + "/css/reference/ref-filled-green-200px-square.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/fonts/font-003.xht": [ [ "/css/CSS2/fonts/font-003.xht", @@ -116387,6 +117221,66 @@ {} ] ], + "css/css-layout-api/auto-block-size-absolute.https.html": [ + [ + "/css/css-layout-api/auto-block-size-absolute.https.html", + [ + [ + "/css/css-layout-api/auto-block-size-absolute-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/auto-block-size-flex.https.html": [ + [ + "/css/css-layout-api/auto-block-size-flex.https.html", + [ + [ + "/css/css-layout-api/auto-block-size-flex-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/auto-block-size-floats.https.html": [ + [ + "/css/css-layout-api/auto-block-size-floats.https.html", + [ + [ + "/css/css-layout-api/auto-block-size-floats-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/auto-block-size-inflow.https.html": [ + [ + "/css/css-layout-api/auto-block-size-inflow.https.html", + [ + [ + "/css/css-layout-api/auto-block-size-inflow-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/auto-block-size-negative.https.html": [ + [ + "/css/css-layout-api/auto-block-size-negative.https.html", + [ + [ + "/css/css-layout-api/auto-block-size-negative-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-layout-api/box-tree-registered.https.html": [ [ "/css/css-layout-api/box-tree-registered.https.html", @@ -116411,6 +117305,42 @@ {} ] ], + "css/css-layout-api/fallback-constructor-error.https.html": [ + [ + "/css/css-layout-api/fallback-constructor-error.https.html", + [ + [ + "/css/css-layout-api/fallback-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/fallback-layout-error.https.html": [ + [ + "/css/css-layout-api/fallback-layout-error.https.html", + [ + [ + "/css/css-layout-api/fallback-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-layout-api/fallback-layout-return.https.html": [ + [ + "/css/css-layout-api/fallback-layout-return.https.html", + [ + [ + "/css/css-layout-api/fallback-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-lists/counter-increment-inside-display-contents.html": [ [ "/css/css-lists/counter-increment-inside-display-contents.html", @@ -185968,6 +186898,21 @@ {} ] ], + "accname/OWNERS": [ + [ + {} + ] + ], + "accname/foo.jpg": [ + [ + {} + ] + ], + "accname/test.png": [ + [ + {} + ] + ], "acid/README.md": [ [ {} @@ -212178,6 +213123,11 @@ {} ] ], + "cors/resources/image-tainting-checker.sub.html": [ + [ + {} + ] + ], "cors/resources/preflight.py": [ [ {} @@ -246133,6 +247083,31 @@ {} ] ], + "css/css-layout-api/auto-block-size-absolute-ref.html": [ + [ + {} + ] + ], + "css/css-layout-api/auto-block-size-flex-ref.html": [ + [ + {} + ] + ], + "css/css-layout-api/auto-block-size-floats-ref.html": [ + [ + {} + ] + ], + "css/css-layout-api/auto-block-size-inflow-ref.html": [ + [ + {} + ] + ], + "css/css-layout-api/auto-block-size-negative-ref.html": [ + [ + {} + ] + ], "css/css-layout-api/box-tree-registered-ref.html": [ [ {} @@ -246143,6 +247118,11 @@ {} ] ], + "css/css-layout-api/fallback-ref.html": [ + [ + {} + ] + ], "css/css-lists/OWNERS": [ [ {} @@ -271043,6 +272023,16 @@ {} ] ], + "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html": [ + [ + {} + ] + ], + "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html": [ + [ + {} + ] + ], "html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html": [ [ {} @@ -282733,6 +283723,11 @@ {} ] ], + "images/blue-png-cachable.py": [ + [ + {} + ] + ], "images/blue.png": [ [ {} @@ -289508,6 +290503,26 @@ {} ] ], + "service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/embedded-content-from-server.html": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/embedded-content-from-service-worker.html": [ + [ + {} + ] + ], "service-workers/service-worker/resources/empty-but-slow-worker.js": [ [ {} @@ -289998,6 +291013,21 @@ {} ] ], + "service-workers/service-worker/resources/multipart-image-iframe.html": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/multipart-image-worker.js": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/multipart-image.py": [ + [ + {} + ] + ], "service-workers/service-worker/resources/navigate-window-worker.js": [ [ {} @@ -290048,6 +291078,11 @@ {} ] ], + "service-workers/service-worker/resources/object-is-not-intercepted-iframe.html": [ + [ + {} + ] + ], "service-workers/service-worker/resources/onactivate-throw-error-from-nested-event-worker.js": [ [ {} @@ -290293,6 +291328,11 @@ {} ] ], + "service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py": [ + [ + {} + ] + ], "service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js": [ [ {} @@ -290653,6 +291693,11 @@ {} ] ], + "streams/readable-byte-streams/construct-byob-request.js": [ + [ + {} + ] + ], "streams/readable-byte-streams/detached-buffers.js": [ [ {} @@ -292263,6 +293308,11 @@ {} ] ], + "webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js": [ + [ + {} + ] + ], "webaudio/the-audio-api/the-audioprocessingevent-interface/.gitkeep": [ [ {} @@ -308264,6 +309314,12 @@ {} ] ], + "cors/image-tainting-in-cross-origin-iframe.sub.html": [ + [ + "/cors/image-tainting-in-cross-origin-iframe.sub.html", + {} + ] + ], "cors/late-upload-events.htm": [ [ "/cors/late-upload-events.htm", @@ -309524,6 +310580,12 @@ {} ] ], + "css/css-fonts/font-shorthand-serialization-001.html": [ + [ + "/css/css-fonts/font-shorthand-serialization-001.html", + {} + ] + ], "css/css-fonts/font-variant-alternates-parsing.html": [ [ "/css/css-fonts/font-variant-alternates-parsing.html", @@ -316754,6 +317816,12 @@ {} ] ], + "dom/events/event-disabled-dynamic.html": [ + [ + "/dom/events/event-disabled-dynamic.html", + {} + ] + ], "dom/historical.html": [ [ "/dom/historical.html", @@ -322520,6 +323588,18 @@ {} ] ], + "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html": [ + [ + "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html", + {} + ] + ], + "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html": [ + [ + "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html", + {} + ] + ], "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope.html": [ [ "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope.html", @@ -356238,6 +357318,12 @@ {} ] ], + "service-workers/service-worker/embed-and-object-are-not-intercepted.https.html": [ + [ + "/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html", + {} + ] + ], "service-workers/service-worker/extendable-event-async-waituntil.https.html": [ [ "/service-workers/service-worker/extendable-event-async-waituntil.https.html", @@ -356620,6 +357706,12 @@ {} ] ], + "service-workers/service-worker/multipart-image.https.html": [ + [ + "/service-workers/service-worker/multipart-image.https.html", + {} + ] + ], "service-workers/service-worker/multiple-register.https.html": [ [ "/service-workers/service-worker/multiple-register.https.html", @@ -357984,6 +359076,30 @@ {} ] ], + "streams/readable-byte-streams/construct-byob-request.dedicatedworker.html": [ + [ + "/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html", + {} + ] + ], + "streams/readable-byte-streams/construct-byob-request.html": [ + [ + "/streams/readable-byte-streams/construct-byob-request.html", + {} + ] + ], + "streams/readable-byte-streams/construct-byob-request.serviceworker.https.html": [ + [ + "/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html", + {} + ] + ], + "streams/readable-byte-streams/construct-byob-request.sharedworker.html": [ + [ + "/streams/readable-byte-streams/construct-byob-request.sharedworker.html", + {} + ] + ], "streams/readable-byte-streams/detached-buffers.dedicatedworker.html": [ [ "/streams/readable-byte-streams/detached-buffers.dedicatedworker.html", @@ -360078,6 +361194,12 @@ {} ] ], + "web-animations/animation-model/combining-effects/applying-the-composited-result.html": [ + [ + "/web-animations/animation-model/combining-effects/applying-the-composited-result.html", + {} + ] + ], "web-animations/animation-model/combining-effects/effect-composition.html": [ [ "/web-animations/animation-model/combining-effects/effect-composition.html", @@ -360144,12 +361266,6 @@ {} ] ], - "web-animations/interfaces/Animation/finish.html": [ - [ - "/web-animations/interfaces/Animation/finish.html", - {} - ] - ], "web-animations/interfaces/Animation/finished.html": [ [ "/web-animations/interfaces/Animation/finished.html", @@ -360198,12 +361314,6 @@ {} ] ], - "web-animations/interfaces/Animation/playbackRate.html": [ - [ - "/web-animations/interfaces/Animation/playbackRate.html", - {} - ] - ], "web-animations/interfaces/Animation/ready.html": [ [ "/web-animations/interfaces/Animation/ready.html", @@ -360402,12 +361512,6 @@ {} ] ], - "web-animations/timing-model/animations/current-time.html": [ - [ - "/web-animations/timing-model/animations/current-time.html", - {} - ] - ], "web-animations/timing-model/animations/finishing-an-animation.html": [ [ "/web-animations/timing-model/animations/finishing-an-animation.html", @@ -360438,21 +361542,45 @@ {} ] ], - "web-animations/timing-model/animations/set-the-animation-start-time.html": [ + "web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html": [ [ - "/web-animations/timing-model/animations/set-the-animation-start-time.html", + "/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html", {} ] ], - "web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html": [ + "web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html": [ [ - "/web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html", + "/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html", {} ] ], - "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html": [ + "web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html": [ [ - "/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html", + "/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html", + {} + ] + ], + "web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html": [ + [ + "/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html", + {} + ] + ], + "web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html": [ + [ + "/web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html", + {} + ] + ], + "web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html": [ + [ + "/web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html", + {} + ] + ], + "web-animations/timing-model/animations/the-current-time-of-an-animation.html": [ + [ + "/web-animations/timing-model/animations/the-current-time-of-an-animation.html", {} ] ], @@ -386970,7 +388098,7 @@ "support" ], "./README.md": [ - "8a00f4e0dea3810e28a32421ded06b8e78e94129", + "60e060b31a4f9f43f09c1b2a360902e4817014e1", "support" ], "./check_stability.ini": [ @@ -393861,6 +394989,566 @@ "223375903efaf082b8c4a24f9bf103eaabd90d05", "testharness" ], + "accname/OWNERS": [ + "3a6002295ea2893ba74763e46965bd2d1291d55b", + "support" + ], + "accname/description_from_content_of_describedby_element-manual.html": [ + "9bf362dc2f578e507bf8d0f7133f7256e061e1d2", + "manual" + ], + "accname/description_from_content_of_describedby_element_which_is_hidden-manual.html": [ + "51e770a781330c01ef8ac607a8ceae8fbd9d84fd", + "manual" + ], + "accname/description_test_case_664-manual.html": [ + "2961cd60ab5c6ee71945873687c4e8934e8598eb", + "manual" + ], + "accname/description_test_case_665-manual.html": [ + "5319a9ac36d5097d39b927c5a8fa46c84bef1cd5", + "manual" + ], + "accname/description_test_case_666-manual.html": [ + "b2d38d676b02ecb5b8358b61fa9dad15ab7fe1fa", + "manual" + ], + "accname/foo.jpg": [ + "23ea35c7a9fc3418cd4004e8cc9c33b59f9c9dc6", + "support" + ], + "accname/name_checkbox-label-embedded-combobox-manual.html": [ + "cccc7a6d8f9b7557036962bb718e42dba9ac96c9", + "manual" + ], + "accname/name_checkbox-label-embedded-menu-manual.html": [ + "db0daa86e306d54cd23c55adb1f72e844a0a4c8b", + "manual" + ], + "accname/name_checkbox-label-embedded-select-manual.html": [ + "ef66e7dc2e23bdc2a11df4788f0a5652b634614c", + "manual" + ], + "accname/name_checkbox-label-embedded-slider-manual.html": [ + "6500d5fe8dd26eeab950d03f9be7f1f9c7c319a7", + "manual" + ], + "accname/name_checkbox-label-embedded-spinbutton-manual.html": [ + "c3e7459eba79382148fa313f299843884fe8ef47", + "manual" + ], + "accname/name_checkbox-title-manual.html": [ + "637e389beedecf101f59eae1ef9a863c71fff3a8", + "manual" + ], + "accname/name_file-label-embedded-combobox-manual.html": [ + "ad015f066db67a0b02dabb35d1ec9c0fbcea4c39", + "manual" + ], + "accname/name_file-label-embedded-menu-manual.html": [ + "690c7bf36edbac6909017cd144cfeea56fd98d5a", + "manual" + ], + "accname/name_file-label-embedded-select-manual.html": [ + "b09f49619585bf400408c78ae97ea800af3cee72", + "manual" + ], + "accname/name_file-label-embedded-slider-manual.html": [ + "e9fdf8cb3b59dd438b76fbe20ea3647d5776735a", + "manual" + ], + "accname/name_file-label-embedded-spinbutton-manual.html": [ + "e8b0cd393d01efe72035ef552a0bb1133851263a", + "manual" + ], + "accname/name_file-title-manual.html": [ + "b3d5042308ea5b5fee0832a2ea9089539b7f9597", + "manual" + ], + "accname/name_from_content-manual.html": [ + "3553e365861c933b7b6789663e5b868e26748b88", + "manual" + ], + "accname/name_from_content_of_label-manual.html": [ + "f14085504a2008a4b82eddde2b41a05f465a47ae", + "manual" + ], + "accname/name_from_content_of_labelledby_element-manual.html": [ + "e917c6412966976e4eb6eae1e379a7e01bfcb5d1", + "manual" + ], + "accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html": [ + "0e1d91be218401271e573e6bd93260caa1f9e842", + "manual" + ], + "accname/name_image-title-manual.html": [ + "9def9482d97f96d0c3b5c5a2101ddfa8d0313072", + "manual" + ], + "accname/name_password-label-embedded-combobox-manual.html": [ + "178bf7cf557d22a1a57d5f0563a57efe0d55be7a", + "manual" + ], + "accname/name_password-label-embedded-menu-manual.html": [ + "3ebf4be3f8da6ce07ab13498bb537a293652b57c", + "manual" + ], + "accname/name_password-label-embedded-select-manual.html": [ + "9698b2959880b2eb4ae024556c745579506e4772", + "manual" + ], + "accname/name_password-label-embedded-slider-manual.html": [ + "4da98f4489d466accd6e03099f65afbbf06a5672", + "manual" + ], + "accname/name_password-label-embedded-spinbutton-manual.html": [ + "28c2ff5472d78bd4a1e1d55a866af3d99186b972", + "manual" + ], + "accname/name_password-title-manual.html": [ + "64c321f5eef4126a4ea6a1740074ee6fbfe14bac", + "manual" + ], + "accname/name_radio-label-embedded-combobox-manual.html": [ + "3e341ee031aa1456dbd42794e1a4f0ce82ccda74", + "manual" + ], + "accname/name_radio-label-embedded-menu-manual.html": [ + "cc4e583e4554cd612194814989d2875d8ef44d3a", + "manual" + ], + "accname/name_radio-label-embedded-select-manual.html": [ + "8f46103e042501221901732653935bfcbdc424a3", + "manual" + ], + "accname/name_radio-label-embedded-slider-manual.html": [ + "d4e4b7e25cb88efbd71c2b1c7985b1b04d699e7d", + "manual" + ], + "accname/name_radio-label-embedded-spinbutton-manual.html": [ + "921070eeccfd96d2163b1f22d04e1f53789cb627", + "manual" + ], + "accname/name_radio-title-manual.html": [ + "437b6d2748eadac0fb879dd0a002ad5886657b7e", + "manual" + ], + "accname/name_test_case_539-manual.html": [ + "52283b3e50d6510796a37cce40ce7ae48c8363bc", + "manual" + ], + "accname/name_test_case_540-manual.html": [ + "6abedb87911a568570c22e6e2e587c10b7709f39", + "manual" + ], + "accname/name_test_case_541-manual.html": [ + "7f58d024e6d71031c5f24570f20749e7ac237fc3", + "manual" + ], + "accname/name_test_case_543-manual.html": [ + "4f2b9608d32e8d0d8a72a989814dc2d4daf0f1c3", + "manual" + ], + "accname/name_test_case_544-manual.html": [ + "48d880cfe47a081416a4a89a744410db553b664c", + "manual" + ], + "accname/name_test_case_545-manual.html": [ + "6b4cb49d4d07a5532d73050ce4130a683bdb933f", + "manual" + ], + "accname/name_test_case_546-manual.html": [ + "43fb0bd46634a505f9c5d51f7a0b961cf18c0b96", + "manual" + ], + "accname/name_test_case_547-manual.html": [ + "baad5a48235f8a131bb7fd0559297a2800cec2bf", + "manual" + ], + "accname/name_test_case_548-manual.html": [ + "05f2d69e7b9299d8c31385c614ffda7850e64bd3", + "manual" + ], + "accname/name_test_case_549-manual.html": [ + "832c197f7e97965e608c1e437f3bc3f6e7d9dc81", + "manual" + ], + "accname/name_test_case_550-manual.html": [ + "d3e5f8e21c6881bd455c52021983c4f20c7ce659", + "manual" + ], + "accname/name_test_case_551-manual.html": [ + "a319e99cd6c180f8bdfc07af2bfdfc0962656330", + "manual" + ], + "accname/name_test_case_552-manual.html": [ + "9f3f5e2fb077dac6b7e1f94bef42bea57bc85547", + "manual" + ], + "accname/name_test_case_553-manual.html": [ + "e11a2890ba6ae9e2737fec9470ed857a0ad567ad", + "manual" + ], + "accname/name_test_case_556-manual.html": [ + "281b70b1739ef2375e0def462bebd2079719d98a", + "manual" + ], + "accname/name_test_case_557-manual.html": [ + "ffefead34a778c5cd41a57912583d3b8e7b999e4", + "manual" + ], + "accname/name_test_case_558-manual.html": [ + "1e8136849dc177d72556c76c9d89ac5582efbc68", + "manual" + ], + "accname/name_test_case_559-manual.html": [ + "9962a15676ec2c3e1b1d6ae54bf7939d004f01da", + "manual" + ], + "accname/name_test_case_560-manual.html": [ + "8bdb7b3b0ec4c9ee72e29db04500a59a38850073", + "manual" + ], + "accname/name_test_case_561-manual.html": [ + "9dc3e8af2810f6d2ba615b40a2971580fc8ff33f", + "manual" + ], + "accname/name_test_case_562-manual.html": [ + "fc84e88dada119cd9bd06d1aab5021db87f86cd5", + "manual" + ], + "accname/name_test_case_563-manual.html": [ + "1e185ba23a383cf051d6e0d815f973cfd9bd44eb", + "manual" + ], + "accname/name_test_case_564-manual.html": [ + "f62252e5c8c68ee29f630d5827a9ff2bb06fa315", + "manual" + ], + "accname/name_test_case_565-manual.html": [ + "d9fcb897b444f026d936ea335e73baf5c092641b", + "manual" + ], + "accname/name_test_case_566-manual.html": [ + "93e82d0a5b6c2eb86b4dd32bf365d1a8d3a4386d", + "manual" + ], + "accname/name_test_case_596-manual.html": [ + "e33d4c97450492f5340a00c2c7e0dc84be6bb91f", + "manual" + ], + "accname/name_test_case_597-manual.html": [ + "2c241887bdc4eed850514dbf58d7b281dddca323", + "manual" + ], + "accname/name_test_case_598-manual.html": [ + "3d1548107f86be97b7311dd1ad6721136b95b76c", + "manual" + ], + "accname/name_test_case_599-manual.html": [ + "e8bf23feb35f9f864e8ce60d2e03d71787c1d4f7", + "manual" + ], + "accname/name_test_case_600-manual.html": [ + "b08c44e3c77abcea5f5f35a5339a2f285479dd84", + "manual" + ], + "accname/name_test_case_601-manual.html": [ + "76d1adefd5cbd9a7fd7d3a20e030ab47990eb925", + "manual" + ], + "accname/name_test_case_602-manual.html": [ + "580896a142d1b9cbc1a8ec8fb42c562146e50a9e", + "manual" + ], + "accname/name_test_case_603-manual.html": [ + "efaa4d546902022bc707007172395adc35750a8c", + "manual" + ], + "accname/name_test_case_604-manual.html": [ + "2cd59bda65db6cfe0017eb08e84849d8ba99bca6", + "manual" + ], + "accname/name_test_case_605-manual.html": [ + "92dee09996257f0a370e4f8a6a7761a7beb89637", + "manual" + ], + "accname/name_test_case_606-manual.html": [ + "1e1d038b456ab23570baeecc0c3700b80ff53597", + "manual" + ], + "accname/name_test_case_607-manual.html": [ + "67505192d3aad59708eee221f228c73d26b98ed4", + "manual" + ], + "accname/name_test_case_608-manual.html": [ + "49c6fe71c3a8b6d6ea3eeb7dd540bb2b0ebaf45e", + "manual" + ], + "accname/name_test_case_609-manual.html": [ + "bf445b1416e83e298a73c078f56e1171fadccd55", + "manual" + ], + "accname/name_test_case_610-manual.html": [ + "800244d9d67c9b0dc25aa222cd4fa221be23b1b6", + "manual" + ], + "accname/name_test_case_611-manual.html": [ + "69c6c0f3aeb5252b6050a13dd88eae2d08259df7", + "manual" + ], + "accname/name_test_case_612-manual.html": [ + "024b7f63a574fa5b1fb05381d0306a61bb5653d8", + "manual" + ], + "accname/name_test_case_613-manual.html": [ + "f818d435c5edfe6adaec5004a9bcbca044b53862", + "manual" + ], + "accname/name_test_case_614-manual.html": [ + "c00ca712608c7ec97c07ac23def64d4f773e652f", + "manual" + ], + "accname/name_test_case_615-manual.html": [ + "26ce5881a2b4a1e5f09ebd4fc775ce900882d516", + "manual" + ], + "accname/name_test_case_616-manual.html": [ + "a193e5c8a61d55c5fb6e944256406cb6538c4354", + "manual" + ], + "accname/name_test_case_617-manual.html": [ + "72d11f68a6a92811be12fa9ebb35fe34b1615865", + "manual" + ], + "accname/name_test_case_618-manual.html": [ + "1d10ddf08905211b41f014c9eda4c58f80306b65", + "manual" + ], + "accname/name_test_case_619-manual.html": [ + "c0a0ba3bafe1d64b436f6ce1696326fe905faca0", + "manual" + ], + "accname/name_test_case_620-manual.html": [ + "5019c6af576f3cb84f43847275f6429898fe8e28", + "manual" + ], + "accname/name_test_case_621-manual.html": [ + "d1a73465c5d8565bc52555f4a91f862375c44c04", + "manual" + ], + "accname/name_test_case_659-manual.html": [ + "241ee4b9649de09cf8000a46d2080d35834154e0", + "manual" + ], + "accname/name_test_case_660-manual.html": [ + "ac36e0a034118f61bada290a7a511b9e2ee7874c", + "manual" + ], + "accname/name_test_case_661-manual.html": [ + "a4117f09f6777fba316fc3c49cafe9572cd3fd43", + "manual" + ], + "accname/name_test_case_662-manual.html": [ + "6d5c1501c6b4f8cf5b2dddf924e453d8a9d24f80", + "manual" + ], + "accname/name_test_case_663-manual.html": [ + "4eaadf4289477daf729267beedc919c3212a9b09", + "manual" + ], + "accname/name_test_case_663a-manual.html": [ + "597df91b7e46634853198e67f156cf5063fccd8b", + "manual" + ], + "accname/name_test_case_721-manual.html": [ + "c14e18a84e4eda3b45297a4ee716e19b9d1d7d3b", + "manual" + ], + "accname/name_test_case_723-manual.html": [ + "75f5ceb299eec26270f0c35a7569a7f092312600", + "manual" + ], + "accname/name_test_case_724-manual.html": [ + "b4e2268c2babda95248c1080a881a47a9a0acf4f", + "manual" + ], + "accname/name_test_case_725-manual.html": [ + "ee3fc3d50f774a648b72b83001968f794fafebe7", + "manual" + ], + "accname/name_test_case_726-manual.html": [ + "6ed641f4d77e03c661b0e0a3b94154af08257faf", + "manual" + ], + "accname/name_test_case_727-manual.html": [ + "57ed68282c10cce56dd572cba54e272f29c0e7fd", + "manual" + ], + "accname/name_test_case_728-manual.html": [ + "a4ed4a27e35d2b2d3b3bc1ebc5fa11a8fecdb315", + "manual" + ], + "accname/name_test_case_729-manual.html": [ + "7d63e9e5fa6239340e470fcd9390ddea3db508aa", + "manual" + ], + "accname/name_test_case_730-manual.html": [ + "007bbc808281d543e8606064b7e5c18cac9eab30", + "manual" + ], + "accname/name_test_case_731-manual.html": [ + "e893821b92253e191fed42b78f0ec3077c19dbc3", + "manual" + ], + "accname/name_test_case_733-manual.html": [ + "20531ef7e48c757f07d25f8f7902c7f079ebec92", + "manual" + ], + "accname/name_test_case_734-manual.html": [ + "9d2598ba74be4a81e66f83cfc7bbfe84e705f46b", + "manual" + ], + "accname/name_test_case_735-manual.html": [ + "132f73f40f7e2a7d906df53488cec5960cd91cf0", + "manual" + ], + "accname/name_test_case_736-manual.html": [ + "091a489064a2ebdd831315a91c0c82dc9383392a", + "manual" + ], + "accname/name_test_case_737-manual.html": [ + "f991830430c445d70bdadcd018644fdaf30228ad", + "manual" + ], + "accname/name_test_case_738-manual.html": [ + "019bcb1742292293ca33959ba77ed37b5ddc14ed", + "manual" + ], + "accname/name_test_case_739-manual.html": [ + "80b51db55b569b5feaad08ec8d3d6b741c59f238", + "manual" + ], + "accname/name_test_case_740-manual.html": [ + "5a23a00c05138818c49a4a92b62572abd0f90f22", + "manual" + ], + "accname/name_test_case_741-manual.html": [ + "1054c6f683226c327ba51ef5a741b9f71f78234c", + "manual" + ], + "accname/name_test_case_742-manual.html": [ + "241363c65f067bba8839f71ead7ca1681832c81b", + "manual" + ], + "accname/name_test_case_743-manual.html": [ + "ba809011cce26a6d45e1f0d36edf2df0373ccb21", + "manual" + ], + "accname/name_test_case_744-manual.html": [ + "148e638515effbe4373ec5209ccee400876dd248", + "manual" + ], + "accname/name_test_case_745-manual.html": [ + "8dccd0ae45fa0da395a2fef06bcbd087d2caa44d", + "manual" + ], + "accname/name_test_case_746-manual.html": [ + "48aec956695d5c06aa0ab21c682d58c986d5943d", + "manual" + ], + "accname/name_test_case_747-manual.html": [ + "1881961d6ad0ff89ab4bfe536fd841317cf74357", + "manual" + ], + "accname/name_test_case_748-manual.html": [ + "1c774cdc38bfee4775608bdab49583ba95548951", + "manual" + ], + "accname/name_test_case_749-manual.html": [ + "59a9089095a492ebb53697a6c886f0f9950c0e81", + "manual" + ], + "accname/name_test_case_750-manual.html": [ + "702d5db63ef1d7f8eac049803d7ce962bcb3f112", + "manual" + ], + "accname/name_test_case_751-manual.html": [ + "c1620650815ce39ab9bef833a517b992b45ea94a", + "manual" + ], + "accname/name_test_case_752-manual.html": [ + "65c14f6c29990605a66791aee3d675e0df55fa2e", + "manual" + ], + "accname/name_test_case_753-manual.html": [ + "0cb78d94b6a56f6785ba4940ae837cb994a0dacb", + "manual" + ], + "accname/name_test_case_754-manual.html": [ + "0c51dd71ab7ac9cc27a3eb8e9e0f5244208d8aff", + "manual" + ], + "accname/name_test_case_755-manual.html": [ + "31b2216a84a5b59cfcf890fe59f5839ea1208c1e", + "manual" + ], + "accname/name_test_case_756-manual.html": [ + "62710efdfa73fccec1eb991993ccc6b51bf1f1ff", + "manual" + ], + "accname/name_test_case_757-manual.html": [ + "839480cbfc537cf1860e48bee4e597394573da3b", + "manual" + ], + "accname/name_test_case_758-manual.html": [ + "da6bcba2045179b1a9b4df5ea3b1f4c24a71ea9a", + "manual" + ], + "accname/name_test_case_759-manual.html": [ + "7dddad8bc516dd14c710cd75c6c7d44db8def672", + "manual" + ], + "accname/name_test_case_760-manual.html": [ + "0ce401d8c9a85d245e965fed3f506d8d88f4650b", + "manual" + ], + "accname/name_test_case_761-manual.html": [ + "2226a89c8a511dfbe8e93037acf4f2b53dfd220e", + "manual" + ], + "accname/name_test_case_762-manual.html": [ + "2c5436081d45b1ab470ed93050eb956a85ccc779", + "manual" + ], + "accname/name_text-label-embedded-combobox-manual.html": [ + "406281ebff00851377335a6db85cdf85482df11a", + "manual" + ], + "accname/name_text-label-embedded-menu-manual.html": [ + "1ae2a71295a14ceb09c6a4ac65a95c553d86a43e", + "manual" + ], + "accname/name_text-label-embedded-select-manual.html": [ + "ee9cf471b60ebe327be4d877bd8a391ac0158d4d", + "manual" + ], + "accname/name_text-label-embedded-slider-manual.html": [ + "df70f3aa99db3cada4a1f7bcd4e9d60a44333ef9", + "manual" + ], + "accname/name_text-label-embedded-spinbutton-manual.html": [ + "214c4f8004f7d4e6dc29e0a4302e68170909a0ef", + "manual" + ], + "accname/name_text-title-manual.html": [ + "2051faf3aa82d1b71dda2bd17c492329ec4c87af", + "manual" + ], + "accname/test.png": [ + "ffb117851422ea6e86b7f8c2a225ef74d2bc271b", + "support" + ], "acid/README.md": [ "76f4f73365670ecc3f97c560141a280a52b46807", "support" @@ -396210,7 +397898,7 @@ "testharness" ], "beacon/headers/header-content-type.html": [ - "86ea95acb53498323dde13266834bb4bd2f3ad35", + "aee7b4c817f064e871d10cc80da8d25759c16158", "testharness" ], "beacon/headers/header-referrer-no-referrer-when-downgrade.https.html": [ @@ -418337,6 +420025,10 @@ "0c2e70a707db7426e86726fc8e9cf86159606227", "testharness" ], + "cors/image-tainting-in-cross-origin-iframe.sub.html": [ + "e0066d1d3376a5a3a73cd47597fe04efa4330cbe", + "testharness" + ], "cors/late-upload-events.htm": [ "fd228ae2b8c82e4ec4a13659c95f9e42f8030b50", "testharness" @@ -418409,6 +420101,10 @@ "153ae440de7512da3001507010b5ef7bbbfb391e", "support" ], + "cors/resources/image-tainting-checker.sub.html": [ + "1e439e4c2c715bbde208c010118b382c56047d08", + "support" + ], "cors/resources/preflight.py": [ "d57c82ffc41dd9d78ea69df75dc11aa6a626f660", "support" @@ -436897,6 +438593,10 @@ "c9c5728c3a45287019bbb02614229920c42518eb", "testharness" ], + "css/CSS2/floats/zero-width-floats.html": [ + "73520c10406cb5d8bb4c9dc9b0da92b924b04298", + "reftest" + ], "css/CSS2/fonts/font-001.xht": [ "c255355156c612be7aef42ea77d8f0f37f779c68", "visual" @@ -487153,6 +488853,10 @@ "d24da7a545f0e28e0ee41e1bd9263eafe54211d8", "reftest" ], + "css/css-fonts/font-shorthand-serialization-001.html": [ + "003d315d72019673041c63b28a90f436c7e3855f", + "testharness" + ], "css/css-fonts/font-size-adjust-001.html": [ "9c8cda6faa82407d5d236d25d07004405dfe93ac", "visual" @@ -496481,6 +498185,46 @@ "7e8b0c3a12b9d5e4d2409da06e7d7441d76d8e23", "testharness" ], + "css/css-layout-api/auto-block-size-absolute-ref.html": [ + "aae34e42447dad7c2e0487b07abc7656115687dc", + "support" + ], + "css/css-layout-api/auto-block-size-absolute.https.html": [ + "5f4f8dcfeff298aa84a76a197394d51ef089ecca", + "reftest" + ], + "css/css-layout-api/auto-block-size-flex-ref.html": [ + "16688468c76469754b1e55726e6c4977288b637b", + "support" + ], + "css/css-layout-api/auto-block-size-flex.https.html": [ + "2b0404af908f4a1cae525c577d48c1792ce48e43", + "reftest" + ], + "css/css-layout-api/auto-block-size-floats-ref.html": [ + "d92a3f18c98b014d0faa13ca71328cf734cfe347", + "support" + ], + "css/css-layout-api/auto-block-size-floats.https.html": [ + "97d9413140e00cccf370e0257ea1ba2321f8df26", + "reftest" + ], + "css/css-layout-api/auto-block-size-inflow-ref.html": [ + "45cd0eaedb6d81b714e30519e1cafcb454581582", + "support" + ], + "css/css-layout-api/auto-block-size-inflow.https.html": [ + "d10f3a72ac907e366635dd61bb69850ef1af2829", + "reftest" + ], + "css/css-layout-api/auto-block-size-negative-ref.html": [ + "b59c50fb50f5c3a118369acd1241d74d95e0e6fa", + "support" + ], + "css/css-layout-api/auto-block-size-negative.https.html": [ + "6efa77b89f74771f750ca46ebe4491b127ba2f9a", + "reftest" + ], "css/css-layout-api/box-tree-registered-ref.html": [ "e3290a53e1e47bf255ed674cf70db4798b6d20dd", "support" @@ -496501,6 +498245,22 @@ "a999a2a7ad8981879cdc984bf602939a23a60ea6", "testharness" ], + "css/css-layout-api/fallback-constructor-error.https.html": [ + "fdb9954e12f4628c114499a5e69f257b60377617", + "reftest" + ], + "css/css-layout-api/fallback-layout-error.https.html": [ + "3d279f42a9b8e8ea0f6dc120d36ca0597372ef9b", + "reftest" + ], + "css/css-layout-api/fallback-layout-return.https.html": [ + "159662be847f8657d33a0607cb0e6561d57ef4e1", + "reftest" + ], + "css/css-layout-api/fallback-ref.html": [ + "464a929254bba9991b03e2d0d161c0274c7c4b59", + "support" + ], "css/css-layout-api/inline-style-layout-function.https.html": [ "f421a9c0fb4c930922281a88eeaa45ae69adab51", "testharness" @@ -516506,7 +518266,7 @@ "testharness" ], "css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html": [ - "3026dd75aeafc3c2119953e813fba0ff8c401d4d", + "b9f6251545dfbce6ab0e5e971dee8e8f0480024e", "testharness" ], "css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html": [ @@ -516586,7 +518346,7 @@ "testharness" ], "css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html": [ - "16725f5047477a1a8837e464935af3da0a01deb2", + "46d36ae2dc68f3f3f1cee5d85cb5f496b7c3fa67", "testharness" ], "css/css-typed-om/stylevalue-subclasses/cssUrlImageValue-interface.html": [ @@ -516798,7 +518558,7 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/border-width.html": [ - "9a3cb4f96aa14f9a63261434ec46331447821965", + "1383d1d87c7128b3059162d344f26586049a6460", "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/bottom.html": [ @@ -516810,7 +518570,7 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/height.html": [ - "aa7fdef188168368bbf8d867c96712bb9c77d857", + "36b8677eb45f8555da4381e1644624df2f2060e0", "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/left.html": [ @@ -516826,7 +518586,7 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/padding.html": [ - "45d4a9a76054d2f867c28e7cda8f006d90551770", + "70c2e29badef7528469bcf11e1cb7bbc6cd519ea", "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/position.html": [ @@ -516834,7 +518594,7 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [ - "44d21574cfeaa42e292a5c7add83a85fd3ed6975", + "3ac46f9655cf07f63761850d38eb0c0cebdd98bf", "support" ], "css/css-typed-om/the-stylepropertymap/properties/right.html": [ @@ -516870,7 +518630,7 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/width.html": [ - "b6f2104ac9a5a4e288b83e5d4db6077ba72a0bad", + "d429f7a88012179ef3d604b79b3db4aaba0ca426", "testharness" ], "css/css-typed-om/the-stylepropertymap/properties/z-index.html": [ @@ -539637,6 +541397,10 @@ "8d195a4490df833fdd71388d9e8cc6e38d50cbd8", "testharness" ], + "dom/events/event-disabled-dynamic.html": [ + "40ab5636653dfd105738ab38e7d22316132eb630", + "testharness" + ], "dom/historical.html": [ "ccf3d9d2d8eb3e7353ecedd8a4d8ba232f9374ec", "testharness" @@ -545226,7 +546990,7 @@ "support" ], "fetch/nosniff/script.html": [ - "cfbd6d0996251d5f311a70d889af3a11552eb844", + "aae78384af3ed1871602eac5a5fa26467d997578", "testharness" ], "fetch/nosniff/stylesheet.html": [ @@ -546649,6 +548413,22 @@ "3842ac825b9fb33d0d95ef99f77c8c7d02a88e9a", "support" ], + "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html": [ + "62b5dc2524966d41e734c778932504dfa18fc132", + "testharness" + ], + "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html": [ + "97ab442d3d409bb73851a334f5ba28824fd6224d", + "testharness" + ], + "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html": [ + "ef3648a44ec979ebdb6fbd55a4cd9757855ed2d6", + "support" + ], + "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html": [ + "b7be55c8262599acc8abad9ce403c945284008ae", + "support" + ], "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope.html": [ "d678c54e2c20d5f240fd68790ea4e03512db2c8a", "testharness" @@ -560030,7 +561810,7 @@ "testharness" ], "html/semantics/forms/textfieldselection/selection-start-end.html": [ - "0fd9c420f831943f0d992076a7828eac066b6596", + "6bef6943accb6677e9f466df6cc5ad267b01680f", "testharness" ], "html/semantics/forms/textfieldselection/selection-value-interactions.html": [ @@ -565217,6 +566997,10 @@ "d7e6fa96c94057798d394cfbd2cf9be077ba5870", "support" ], + "images/blue-png-cachable.py": [ + "f1c756b52805137b2f472e2bc9e533949b245769", + "support" + ], "images/blue.png": [ "7de5cdb5ad04ac365430b3b5f5ba01d2ba57ea23", "support" @@ -585502,7 +587286,7 @@ "testharness" ], "service-workers/service-worker/activation.https.html": [ - "cdd7cd200ff4ec3df61c257305953b3a1f369ab8", + "b7a9ca969b4122f1b9adc973c60044a6ab2a2a95", "testharness" ], "service-workers/service-worker/active.https.html": [ @@ -585598,7 +587382,11 @@ "testharness" ], "service-workers/service-worker/detached-context.https.html": [ - "c7645323ba0753f35beaef90836631ca16f64d3a", + "a4e96edc51927eb29873b0c97a7232f71ae43378", + "testharness" + ], + "service-workers/service-worker/embed-and-object-are-not-intercepted.https.html": [ + "a9f08518e369c81036ce0815aab3f1a6895fb6ab", "testharness" ], "service-workers/service-worker/extendable-event-async-waituntil.https.html": [ @@ -585877,6 +587665,10 @@ "eac6d03a6baa43a8f326abc30a5e1244da2d0e55", "testharness" ], + "service-workers/service-worker/multipart-image.https.html": [ + "60b96c587744f167605c2d99d61bffaea6cef2ad", + "testharness" + ], "service-workers/service-worker/multiple-register.https.html": [ "88dd84637f82e942e5efe6caafb99a18df602353", "testharness" @@ -586301,6 +588093,22 @@ "760b04aa2e36f55cfdbea0871a7424f787734a6e", "support" ], + "service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js": [ + "30d39c9d08dff37858a1ba843d7b51aaa559238b", + "support" + ], + "service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html": [ + "e33a11c8d4a2a14693f8eb5eb5feb8218c92de6f", + "support" + ], + "service-workers/service-worker/resources/embedded-content-from-server.html": [ + "91f5b7b098eabed5c682cf8498246107fa2eb93c", + "support" + ], + "service-workers/service-worker/resources/embedded-content-from-service-worker.html": [ + "1e4bd8d14e34ce47a51bf4c9a69fae0c12ee4ced", + "support" + ], "service-workers/service-worker/resources/empty-but-slow-worker.js": [ "36ecac2f5ab2d3738ca72a7a7d1c605dbec97ff1", "support" @@ -586693,6 +588501,18 @@ "c99d267d5d819bebae13b1866671c9c2460b0104", "support" ], + "service-workers/service-worker/resources/multipart-image-iframe.html": [ + "f61e71879d812b892a4f5890da2beb317d1297c4", + "support" + ], + "service-workers/service-worker/resources/multipart-image-worker.js": [ + "0ae02e35b65cd8a9520477f864c010c5c368e287", + "support" + ], + "service-workers/service-worker/resources/multipart-image.py": [ + "715bfeb24184c2bcc0d90a196db03c2c948dace3", + "support" + ], "service-workers/service-worker/resources/navigate-window-worker.js": [ "4d3b80c17efd78bda66333ba01ffde1b8f6e976b", "support" @@ -586733,6 +588553,10 @@ "ec72a4c120ccfac3a165576f59a0e02b945343b3", "support" ], + "service-workers/service-worker/resources/object-is-not-intercepted-iframe.html": [ + "412591c247a38b07cde7f42248bc412a50128b54", + "support" + ], "service-workers/service-worker/resources/onactivate-throw-error-from-nested-event-worker.js": [ "5e7bd3fc11e1f72c91d756e04a5e1e25e565143a", "support" @@ -586926,11 +588750,15 @@ "support" ], "service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html": [ - "57b43f9bb4a11505dd11c187134519d60bc7c026", + "216f7a110ac86f441fbfc5d6f5be38ec5608962d", + "support" + ], + "service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py": [ + "885f52b5de4a6d5cd7042185715880a05c4f313d", "support" ], "service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js": [ - "f92786baf9a1ad0be21afd10f1343fd7220fd965", + "a961c23f069b3149922ce0a30df87608e7010bdb", "support" ], "service-workers/service-worker/resources/sandboxed-iframe-navigator-serviceworker-iframe.html": [ @@ -586982,7 +588810,7 @@ "support" ], "service-workers/service-worker/resources/test-helpers.sub.js": [ - "55acaa1edd73a39a834e1a1ee0952f47a03e3c78", + "fee1648c02422cd2607b008b9a1ef0834385c69c", "support" ], "service-workers/service-worker/resources/testharness-helpers.js": [ @@ -587058,7 +588886,7 @@ "testharness" ], "service-workers/service-worker/sandboxed-iframe-fetch-event.https.html": [ - "04d08798c3d1b5b158951c4243a4ab68ebea42e9", + "88551108e4b1d56ab41a3dee041a43f4646eb49d", "testharness" ], "service-workers/service-worker/sandboxed-iframe-navigator-serviceworker.https.html": [ @@ -588046,7 +589874,7 @@ "testharness" ], "streams/piping/error-propagation-forward.js": [ - "a6c993b47a0aa820a3c763eb64ab902551bbcd91", + "2cd0c4476388f6a6fd104f1e00e08bf2fe8706bb", "support" ], "streams/piping/error-propagation-forward.serviceworker.https.html": [ @@ -588177,6 +590005,26 @@ "6f3911baf77e26af2d7e7d7472caae4df6d5a27e", "testharness" ], + "streams/readable-byte-streams/construct-byob-request.dedicatedworker.html": [ + "44f4d42b8a31c794b6252660f5cde8b0cbcc6fcb", + "testharness" + ], + "streams/readable-byte-streams/construct-byob-request.html": [ + "22d393a61721610e5f5fd4cd628a14fd6f08094b", + "testharness" + ], + "streams/readable-byte-streams/construct-byob-request.js": [ + "8d8167bc34049d473efb892c915efea4830d92d1", + "support" + ], + "streams/readable-byte-streams/construct-byob-request.serviceworker.https.html": [ + "79dbbe66a34ca531fc532e37f6c11483a917cf9e", + "testharness" + ], + "streams/readable-byte-streams/construct-byob-request.sharedworker.html": [ + "2a8a870d82e13cccac5b59de0ece4b8e9ff2775f", + "testharness" + ], "streams/readable-byte-streams/detached-buffers.dedicatedworker.html": [ "8742d541924382fb06a3258d6723f22ddf299045", "testharness" @@ -588202,11 +590050,11 @@ "testharness" ], "streams/readable-byte-streams/general.html": [ - "9e349695974543b322e5c1447352e0ab4dc490e6", + "d459dc11abad3162f0c412f1346820541df38d53", "testharness" ], "streams/readable-byte-streams/general.js": [ - "8d37d5948078b71d3f80e3799ea0dd6d818e933b", + "a7262a490c4a913811c8d0c489b06a567a448fc6", "support" ], "streams/readable-byte-streams/general.serviceworker.https.html": [ @@ -593953,6 +595801,10 @@ "da3370704ca9e83a1171a64320a240e3145fab2c", "testharness" ], + "web-animations/animation-model/combining-effects/applying-the-composited-result.html": [ + "5262331e6a2f957dd70e9a9888825250de65fd5b", + "testharness" + ], "web-animations/animation-model/combining-effects/effect-composition.html": [ "5d6c3904de02eb3b6c890163ccdc6b8cb6499e56", "testharness" @@ -593997,10 +595849,6 @@ "4445fc8bd2120fb1e212dfc6a1fcf786a531ee6f", "testharness" ], - "web-animations/interfaces/Animation/finish.html": [ - "64acecec8528b4d241d5dcb9248ef82eafa02810", - "testharness" - ], "web-animations/interfaces/Animation/finished.html": [ "ffcba3379db7094455a7798e4d5972d8e52caec5", "testharness" @@ -594010,7 +595858,7 @@ "testharness" ], "web-animations/interfaces/Animation/idlharness.html": [ - "989e773dbf3d7d57f26b41108bc3d7f0b3ea3168", + "d61aa2d95ea31809a275183408e822c8c1eec87d", "testharness" ], "web-animations/interfaces/Animation/oncancel.html": [ @@ -594033,10 +595881,6 @@ "54edbdd6c0e1953f8d0e2bfbb92bfe318114ab74", "testharness" ], - "web-animations/interfaces/Animation/playbackRate.html": [ - "a298a65aaeb5a337fe894f0160493693f309c2a1", - "testharness" - ], "web-animations/interfaces/Animation/ready.html": [ "bd4a18205791b2b0271a6266dba3ebc8482c835b", "testharness" @@ -594190,47 +596034,59 @@ "testharness" ], "web-animations/timing-model/animations/canceling-an-animation.html": [ - "d82cbc5caf654b9811c90d5165fb0429891cb149", - "testharness" - ], - "web-animations/timing-model/animations/current-time.html": [ - "52d23e752878c821754b2c2b752e7393882609e2", + "e03baa30d438529a0ebe39f0f623563aa9850d74", "testharness" ], "web-animations/timing-model/animations/finishing-an-animation.html": [ - "8d430adcb97bf3dab9703bc2d31be23e1adaec85", + "4c1cf823a81e72541abcafaa08950cf87424ae55", "testharness" ], "web-animations/timing-model/animations/pausing-an-animation.html": [ - "c46fbcb8bc40fc3ee26e10802a205926ab97a84f", + "a4cb7b89c778ad5c294eeb55e94461e19ca8eb4b", "testharness" ], "web-animations/timing-model/animations/play-states.html": [ - "3ec76eff991e306699b21fb03bc1f346ffd9cee3", + "0ab2fa3a464001272d1af541ea769fa967490c3b", "testharness" ], "web-animations/timing-model/animations/playing-an-animation.html": [ - "1ae05a904e5b4fbcf1d904f02825f836da7b4c18", + "10580a1e72892208a14c6fe55091e998edf0171c", "testharness" ], "web-animations/timing-model/animations/reversing-an-animation.html": [ - "3afdb3cc9a9dafb28ebe46902276c19c24aeb9a8", + "72b89e78ca7dac261af8de370389d89c810b3718", + "testharness" + ], + "web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html": [ + "a7e28aa0b40a39b00da257e347cb6ecf8d1d2882", + "testharness" + ], + "web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html": [ + "a7da92b9624750eccb9dce1d32e522fdbb65176f", + "testharness" + ], + "web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html": [ + "b2698d9a829a1eadb3ef3b6d8e0050e7a6315305", "testharness" ], - "web-animations/timing-model/animations/set-the-animation-start-time.html": [ - "fa26feebcde00a5b0b63f8f3587acc313a58f26a", + "web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html": [ + "cf6040eb52964f12b06a9e3cdf14948ce8141270", "testharness" ], - "web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html": [ - "3b7f1f60cd771ff8587daf7ab76ccbecff59f781", + "web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html": [ + "5575a251b9c265d98471e758b3cf9b218e381cba", "testharness" ], - "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html": [ - "bd33cb8638aa373b17cda20906af5aea2f5a7503", + "web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html": [ + "e4e134b566327c9d7316aee4f3e7fe4eeb2116ba", + "testharness" + ], + "web-animations/timing-model/animations/the-current-time-of-an-animation.html": [ + "90ba3d81ee9e32b1f13845301c4ad1c8ad47f2f7", "testharness" ], "web-animations/timing-model/animations/updating-the-finished-state.html": [ - "c30161f7d5a20db616ade354133ae6a8989d149f", + "59e7ed8e4eac5c9edf2526ef748b22e1877b7016", "testharness" ], "web-animations/timing-model/time-transformations/transformed-progress.html": [ @@ -594522,25 +596378,29 @@ "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html": [ - "53a2c031fd3c51cd401c1d192b09b745dd6b9260", + "12e1f35dca3f0b28d421ab39bdb2a98dc18abb3d", "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html": [ - "ebd5ea3d866634ff0958eb2fda96bf58cbbea6ad", + "30b41f51caaf643c1acd746be3a7ce19d2498ca1", "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html": [ - "2fc8054f87b7d622b4cb5801e9f3a2083dbc23a4", + "2a012bfbd59445aa14789d80b94f514726e819f0", "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html": [ - "30bcf53f72c13690f606b1c27584e9bb937017ef", + "7558fec8601a9aa3a6fc8fc93c7e978a6bf50a9e", "testharness" ], "webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html": [ - "fd40dc7cc8aca8ab829852dbabda3b00bcec5817", + "db939616369e2ce66b717d47512141e6f28e4c14", "testharness" ], + "webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js": [ + "aeb2213183f2fd26848c507e030de3e5f7f01fee", + "support" + ], "webaudio/the-audio-api/the-audioparam-interface/setTargetAtTime-after-event-within-block.html": [ "3e54f9a98e7488223e6c40929268ddec3c8b5961", "testharness" @@ -595034,7 +596894,7 @@ "wdspec" ], "webdriver/tests/interface.html": [ - "6625887cfa7f461dc428c11861fce71c47bef57d", + "f7b2c45ff8b1b5790dd390fbe2ab997766f5d9a8", "testharness" ], "webdriver/tests/minimize_window.py": [ diff --git a/tests/wpt/metadata/css/CSS2/floats/zero-width-floats.html.ini b/tests/wpt/metadata/css/CSS2/floats/zero-width-floats.html.ini new file mode 100644 index 00000000000..e20b1a193ff --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/zero-width-floats.html.ini @@ -0,0 +1,2 @@ +[zero-width-floats.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini deleted file mode 100644 index 26435e28b09..00000000000 --- a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[vh_not_refreshing_on_chrome.html] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini new file mode 100644 index 00000000000..9bacb9f5c4e --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini @@ -0,0 +1,4 @@ +[javascript-url-abort-return-value-string.tentative.html] + [Aborting fetch for javascript:string navigation] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini new file mode 100644 index 00000000000..78879bad5f1 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini @@ -0,0 +1,5 @@ +[javascript-url-abort-return-value-undefined.tentative.html] + expected: TIMEOUT + [Not aborting fetch for javascript:undefined navigation] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini deleted file mode 100644 index 33164945eb6..00000000000 --- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[010.html] - [Salvagability of document.opened document] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini index 0837c1ef142..a6931ba3609 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini @@ -24,3 +24,6 @@ [initMessageEvent operation default parameter values] expected: FAIL + [MessageEvent constructor] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini index 84442134e47..0608a3b0a8c 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini @@ -3,3 +3,6 @@ [Service worker test setup] expected: FAIL + [[[CanBlock\]\] in a service worker agent] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini index 62def3928b9..17e3916e7d9 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini @@ -3,3 +3,6 @@ [Service worker setup] expected: FAIL + [Promise rejection events tests: in a service worker context] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md index 90f1f47aa4e..cc846b5d23e 100644 --- a/tests/wpt/web-platform-tests/README.md +++ b/tests/wpt/web-platform-tests/README.md @@ -107,7 +107,7 @@ python wpt product [tests] where `product` is currently `firefox` or `chrome` and `[tests]` is a list of paths to tests. This will attempt to automatically locate a browser instance and install required dependencies. The command is -very configurable; for examaple to specify a particular binary use +very configurable; for example to specify a particular binary use `wpt run --binary=path product`. The full range of options can be see with `wpt run --help` and `wpt run --wptrunner-help`. diff --git a/tests/wpt/web-platform-tests/accname/OWNERS b/tests/wpt/web-platform-tests/accname/OWNERS new file mode 100644 index 00000000000..2a4c47ed4df --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/OWNERS @@ -0,0 +1,2 @@ +@halindrome +@joanmarie diff --git a/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html new file mode 100644 index 00000000000..2e7c86c6873 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html @@ -0,0 +1,92 @@ +<!doctype html> +<html> + <head> + <title>Description from content of describedby element</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "description", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "AXAPI" : [ + [ + "property", + "AXHelp", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "IAccessible2" : [ + [ + "property", + "accDescription", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "UIA" : [ + [ + "property", + "Description", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Description from content of describedby element" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Description from content of describedby element.</p> + <input id="test" type="text" aria-label="Important stuff" aria-describedby="descId" /> + <div> + <div id="descId"> + <span aria-hidden="true"><i> Hello, </i></span> + <span>My</span> name is + <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div> + <span role="presentation" aria-label="Eli"> + <span aria-label="Garaventa">Zambino</span> + </span> + <span>the weird.</span> + (<span>Q</span><span>E</span><span>D</span>) + <span class="hidden"><i><b>and don't you forget it.</b></i></span> + <table> + <tr> + <td>Where</td> + <td style="visibility:hidden;"><div>in</div></td> + <td><div style="display:none;">the world</div></td> + <td>are my marbles?</td> + </tr> + </table> + </div> + </div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html new file mode 100644 index 00000000000..9dbe3e5c7da --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html @@ -0,0 +1,100 @@ +<!doctype html> +<html> + <head> + <title>Description from content of describedby element which is hidden</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "description", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "AXAPI" : [ + [ + "property", + "AXHelp", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "IAccessible2" : [ + [ + "property", + "accDescription", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "UIA" : [ + [ + "property", + "Description", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Description from content of describedby element which is hidden" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Description from content of describedby element which is hidden.</p> + <div> + <input id="test" type="text" aria-labelledby="lbl1 lbl2" aria-describedby="descId" /> + <span> + <span aria-hidden="true" id="lbl1">Important</span> + <span class="hidden"> + <span aria-hidden="true" id="lbl2">stuff</span> + </span> + </span> + </div> + <div class="hidden"> + <div id="descId"> + <span aria-hidden="true"><i> Hello, </i></span> + <span>My</span> name is + <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div> + <span role="presentation" aria-label="Eli"> + <span aria-label="Garaventa">Zambino</span> + </span> + <span>the weird.</span> + (<span>Q</span><span>E</span><span>D</span>) + <span class="hidden"><i><b>and don't you forget it.</b></i></span> + <table> + <tr> + <td>Where</td> + <td style="visibility:hidden;"><div>in</div></td> + <td><div style="display:none;">the world</div></td> + <td>are my marbles?</td> + </tr> + </table> + </div> + </div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/description_test_case_664-manual.html b/tests/wpt/web-platform-tests/accname/description_test_case_664-manual.html new file mode 100644 index 00000000000..0ba57426d2e --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/description_test_case_664-manual.html @@ -0,0 +1,74 @@ +<!doctype html> +<html> + <head> + <title>Description test case 664</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "description", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXHelp", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accDescription", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Description", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Description test case 664" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Description test case 664.</p> + <div> + <img id="test" aria-describedby="ID1" src="test.png"> + </div> + <div id="ID1">foo</div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/description_test_case_665-manual.html b/tests/wpt/web-platform-tests/accname/description_test_case_665-manual.html new file mode 100644 index 00000000000..341d6d28a2d --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/description_test_case_665-manual.html @@ -0,0 +1,74 @@ +<!doctype html> +<html> + <head> + <title>Description test case 665</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "description", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXHelp", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accDescription", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Description", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Description test case 665" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Description test case 665.</p> + <div> + <img id="test" aria-describedby="ID1" src="test.png"> + </div> + <div id="ID1" style="display:none">foo</div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/description_test_case_666-manual.html b/tests/wpt/web-platform-tests/accname/description_test_case_666-manual.html new file mode 100644 index 00000000000..9681b89e98a --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/description_test_case_666-manual.html @@ -0,0 +1,74 @@ +<!doctype html> +<html> + <head> + <title>Description test case 666</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "description", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXHelp", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accDescription", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Description", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Description test case 666" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Description test case 666.</p> + <div> + <img id="test" aria-describedby="ID1" src="test.png"> + </div> + <div id="ID1" role="presentation">foo</div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/foo.jpg b/tests/wpt/web-platform-tests/accname/foo.jpg Binary files differnew file mode 100644 index 00000000000..7d11a4f7cf1 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/foo.jpg diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-combobox-manual.html new file mode 100644 index 00000000000..2797514bd7f --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-combobox-manual.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> + <head> + <title>Name checkbox-label-embedded-combobox</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name checkbox-label-embedded-combobox" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name checkbox-label-embedded-combobox.</p> + <input type="checkbox" id="test" /> + <label for="test">Flash the screen + <div role="combobox"> + <div role="textbox"></div> + <ul role="listbox" style="list-style-type: none;"> + <li role="option" aria-selected="true">1</li> + <li role="option">2</li> + <li role="option">3</li> + </ul> + </div> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-menu-manual.html new file mode 100644 index 00000000000..5399a3cc6d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-menu-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name checkbox-label-embedded-menu</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name checkbox-label-embedded-menu" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name checkbox-label-embedded-menu.</p> + <input type="checkbox" id="test" /> + <label for="test">Flash the screen + <span role="menu"> + <span role="menuitem" aria-selected="true">1</span> + <span role="menuitem" hidden>2</span> + <span role="menuitem" hidden>3</span> + </span> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-select-manual.html new file mode 100644 index 00000000000..52a5ca80bbb --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-select-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name checkbox-label-embedded-select</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name checkbox-label-embedded-select" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name checkbox-label-embedded-select.</p> + <input type="checkbox" id="test" /> + <label for="test">Flash the screen + <select size="1"> + <option selected="selected">1</option> + <option>2</option> + <option>3</option> + </select> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-slider-manual.html new file mode 100644 index 00000000000..520e4a45f87 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-slider-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name checkbox-label-embedded-slider</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name checkbox-label-embedded-slider" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name checkbox-label-embedded-slider.</p> + <input type="checkbox" id="test" /> + <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-spinbutton-manual.html new file mode 100644 index 00000000000..bf47b1d912c --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-spinbutton-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name checkbox-label-embedded-spinbutton</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name checkbox-label-embedded-spinbutton" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name checkbox-label-embedded-spinbutton.</p> + <input type="checkbox" id="test" /> + <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-title-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-title-manual.html new file mode 100644 index 00000000000..b5b9a5ea3e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_checkbox-title-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name checkbox-title</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name checkbox-title" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name checkbox-title.</p> + <input type="checkbox" id="test" title="foo" /> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-combobox-manual.html new file mode 100644 index 00000000000..a2799324e1b --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-combobox-manual.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> + <head> + <title>Name file-label-embedded-combobox</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name file-label-embedded-combobox" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name file-label-embedded-combobox.</p> + <input type="file" id="test" /> + <label for="test">Flash the screen + <div role="combobox"> + <div role="textbox"></div> + <ul role="listbox" style="list-style-type: none;"> + <li role="option" aria-selected="true">1 </li> + <li role="option">2 </li> + <li role="option">3 </li> + </ul> + </div> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-menu-manual.html new file mode 100644 index 00000000000..c53575db886 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-menu-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name file-label-embedded-menu</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name file-label-embedded-menu" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name file-label-embedded-menu.</p> + <input type="file" id="test" /> + <label for="test">Flash the screen + <span role="menu"> + <span role="menuitem" aria-selected="true">1</span> + <span role="menuitem" hidden>2</span> + <span role="menuitem" hidden>3</span> + </span> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-select-manual.html new file mode 100644 index 00000000000..7142c764a18 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-select-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name file-label-embedded-select</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name file-label-embedded-select" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name file-label-embedded-select.</p> + <input type="file" id="test" /> + <label for="test">Flash the screen + <select size="1"> + <option selected="selected">1</option> + <option>2</option> + <option>3</option> + </select> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-slider-manual.html new file mode 100644 index 00000000000..de08bbcc106 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-slider-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name file-label-embedded-slider</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name file-label-embedded-slider" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name file-label-embedded-slider.</p> + <input type="file" id="test" /> + <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-spinbutton-manual.html new file mode 100644 index 00000000000..67934a329e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-spinbutton-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name file-label-embedded-spinbutton</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name file-label-embedded-spinbutton" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name file-label-embedded-spinbutton.</p> + <input type="file" id="test" /> + <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_file-title-manual.html b/tests/wpt/web-platform-tests/accname/name_file-title-manual.html new file mode 100644 index 00000000000..5eae799d78d --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_file-title-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name file-title</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name file-title" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name file-title.</p> + <input type="file" id="test" title="foo" /> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_from_content-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content-manual.html new file mode 100644 index 00000000000..583f30ad0e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_from_content-manual.html @@ -0,0 +1,89 @@ +<!doctype html> +<html> + <head> + <title>Name from content</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name from content" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name from content.</p> + <div id="test" role="link" tabindex="0"> + <span aria-hidden="true"><i> Hello, </i></span> + <span>My</span> name is + <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div> + <span role="presentation" aria-label="Eli"> + <span aria-label="Garaventa">Zambino</span> + </span> + <span>the weird.</span> + (<span>Q</span><span>E</span><span>D</span>) + <span class="hidden"><i><b>and don't you forget it.</b></i></span> + <table> + <tr> + <td>Where</td> + <td style="visibility:hidden;"><div>in</div></td> + <td><div style="display:none;">the world</div></td> + <td>are my marbles?</td> + </tr> + </table> + </div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html new file mode 100644 index 00000000000..d2407633ae8 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html @@ -0,0 +1,90 @@ +<!doctype html> +<html> + <head> + <title>Name from content of label</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name from content of label" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name from content of label.</p> + <input type="text" id="test" /> + <label for="test" id="label"> + <span aria-hidden="true"><i> Hello, </i></span> + <span>My</span> name is + <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div> + <span role="presentation" aria-label="Eli"> + <span aria-label="Garaventa">Zambino</span> + </span> + <span>the weird.</span> + (<span>Q</span><span>E</span><span>D</span>) + <span class="hidden"><i><b>and don't you forget it.</b></i></span> + <table> + <tr> + <td>Where</td> + <td style="visibility:hidden;"><div>in</div></td> + <td><div style="display:none;">the world</div></td> + <td>are my marbles?</td> + </tr> + </table> + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html new file mode 100644 index 00000000000..69304afa000 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html @@ -0,0 +1,90 @@ +<!doctype html> +<html> + <head> + <title>Name from content of labelledby element</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "My name is Garaventa the weird. (QED) Where are my marbles?" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name from content of labelledby element" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name from content of labelledby element.</p> + <input id="test" type="text" aria-labelledby="lblId" /> + <div id="lblId" > + <span aria-hidden="true"><i> Hello, </i></span> + <span>My</span> name is + <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div> + <span role="presentation" aria-label="Eli"> + <span aria-label="Garaventa">Zambino</span> + </span> + <span>the weird.</span> + (<span>Q</span><span>E</span><span>D</span>) + <span class="hidden"><i><b>and don't you forget it.</b></i></span> + <table> + <tr> + <td>Where</td> + <td style="visibility:hidden;"><div>in</div></td> + <td><div style="display:none;">the world</div></td> + <td>are my marbles?</td> + </tr> + </table> + </div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html new file mode 100644 index 00000000000..18860233457 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html @@ -0,0 +1,100 @@ +<!doctype html> +<html> + <head> + <title>Name from content of labelledby elements one of which is hidden</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Important stuff" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Important stuff" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Important stuff" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Important stuff" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name from content of labelledby elements one of which is hidden" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name from content of labelledby elements one of which is hidden.</p> + <div> + <input id="test" type="text" aria-labelledby="lbl1 lbl2" aria-describedby="descId" /> + <span> + <span aria-hidden="true" id="lbl1">Important</span> + <span class="hidden"> + <span aria-hidden="true" id="lbl2">stuff</span> + </span> + </span> + </div> + <div class="hidden"> + <div id="descId"> + <span aria-hidden="true"><i> Hello, </i></span> + <span>My</span> name is + <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div> + <span role="presentation" aria-label="Eli"> + <span aria-label="Garaventa">Zambino</span> + </span> + <span>the weird.</span> + (<span>Q</span><span>E</span><span>D</span>) + <span class="hidden"><i><b>and don't you forget it.</b></i></span> + <table> + <tr> + <td>Where</td> + <td style="visibility:hidden;"><div>in</div></td> + <td><div style="display:none;">the world</div></td> + <td>are my marbles?</td> + </tr> + </table> + </div> + </div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_image-title-manual.html b/tests/wpt/web-platform-tests/accname/name_image-title-manual.html new file mode 100644 index 00000000000..51ead258894 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_image-title-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name image-title</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name image-title" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name image-title.</p> + <input type="image" src="test.png" id="test" title="foo" /> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-combobox-manual.html new file mode 100644 index 00000000000..b2762aa6ae7 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-combobox-manual.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> + <head> + <title>Name password-label-embedded-combobox</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name password-label-embedded-combobox" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name password-label-embedded-combobox.</p> + <input type="password" id="test" /> + <label for="test">Flash the screen + <div role="combobox"> + <div role="textbox"></div> + <ul role="listbox" style="list-style-type: none;"> + <li role="option" aria-selected="true">1</li> + <li role="option">2</li> + <li role="option">3</li> + </ul> + </div> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-menu-manual.html new file mode 100644 index 00000000000..3c50836e271 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-menu-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name password-label-embedded-menu</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name password-label-embedded-menu" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name password-label-embedded-menu.</p> + <input type="password" id="test" /> + <label for="test">Flash the screen + <span role="menu"> + <span role="menuitem" aria-selected="true">1</span> + <span role="menuitem" hidden>2</span> + <span role="menuitem" hidden>3</span> + </span> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-select-manual.html new file mode 100644 index 00000000000..36471160273 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-select-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name password-label-embedded-select</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name password-label-embedded-select" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name password-label-embedded-select.</p> + <input type="password" id="test" /> + <label for="test">Flash the screen + <select size="1"> + <option selected="selected">1</option> + <option>2</option> + <option>3</option> + </select> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-slider-manual.html new file mode 100644 index 00000000000..d5686a48c54 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-slider-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name password-label-embedded-slider</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name password-label-embedded-slider" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name password-label-embedded-slider.</p> + <input type="password" id="test" /> + <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-spinbutton-manual.html new file mode 100644 index 00000000000..73b0d664c78 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-spinbutton-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name password-label-embedded-spinbutton</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name password-label-embedded-spinbutton" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name password-label-embedded-spinbutton.</p> + <input type="password" id="test" /> + <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_password-title-manual.html b/tests/wpt/web-platform-tests/accname/name_password-title-manual.html new file mode 100644 index 00000000000..2ea977fd289 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_password-title-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name password-title</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name password-title" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name password-title.</p> + <input type="password" id="test" title="foo" /> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-combobox-manual.html new file mode 100644 index 00000000000..72d7017c534 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-combobox-manual.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> + <head> + <title>Name radio-label-embedded-combobox</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name radio-label-embedded-combobox" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name radio-label-embedded-combobox.</p> + <input type="radio" id="test" /> + <label for="test">Flash the screen + <div role="combobox"> + <div role="textbox"></div> + <ul role="listbox" style="list-style-type: none;"> + <li role="option" aria-selected="true">1</li> + <li role="option">2</li> + <li role="option">3</li> + </ul> + </div> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-menu-manual.html new file mode 100644 index 00000000000..ff025000595 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-menu-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name radio-label-embedded-menu</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name radio-label-embedded-menu" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name radio-label-embedded-menu.</p> + <input type="radio" id="test" /> + <label for="test">Flash the screen + <span role="menu"> + <span role="menuitem" aria-selected="true">1</span> + <span role="menuitem" hidden>2</span> + <span role="menuitem" hidden>3</span> + </span> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-select-manual.html new file mode 100644 index 00000000000..185d8932969 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-select-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name radio-label-embedded-select</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name radio-label-embedded-select" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name radio-label-embedded-select.</p> + <input type="radio" id="test" /> + <label for="test">Flash the screen + <select size="1"> + <option selected="selected">1</option> + <option>2</option> + <option>3</option> + </select> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-slider-manual.html new file mode 100644 index 00000000000..aea5f8b85ce --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-slider-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name radio-label-embedded-slider</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name radio-label-embedded-slider" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name radio-label-embedded-slider.</p> + <input type="radio" id="test" /> + <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-spinbutton-manual.html new file mode 100644 index 00000000000..af3fe8285ac --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-spinbutton-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name radio-label-embedded-spinbutton</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name radio-label-embedded-spinbutton" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name radio-label-embedded-spinbutton.</p> + <input type="radio" id="test" /> + <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_radio-title-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-title-manual.html new file mode 100644 index 00000000000..aef42728a6c --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_radio-title-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name radio-title</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name radio-title" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name radio-title.</p> + <input type="radio" id="test" title="foo" /> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_539-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_539-manual.html new file mode 100644 index 00000000000..da1925241c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_539-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 539</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Rich" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Rich" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Rich" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Rich" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 539" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 539.</p> + <input type="button" aria-label="Rich" id="test"> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_540-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_540-manual.html new file mode 100644 index 00000000000..5fde86535bb --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_540-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 540</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Rich's button" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Rich's button" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Rich's button" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Rich's button" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 540" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 540.</p> + <div id="ID1">Rich's button</div> + <input type="button" aria-labelledby="ID1" id="test"> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_541-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_541-manual.html new file mode 100644 index 00000000000..74b44b57de4 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_541-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 541</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Rich's button" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Rich's button" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Rich's button" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Rich's button" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 541" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 541.</p> + <div id="ID1">Rich's button</div> + <input type="button" aria-label="bar" aria-labelledby="ID1" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_543-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_543-manual.html new file mode 100644 index 00000000000..1759ffacdd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_543-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 543</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Reset" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Reset" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Reset" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Reset" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 543" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 543.</p> + <input type="reset" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_544-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_544-manual.html new file mode 100644 index 00000000000..267c9302f7d --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_544-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 544</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 544" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 544.</p> + <input type="button" id="test" value="foo"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_545-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_545-manual.html new file mode 100644 index 00000000000..fda6fe1b50c --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_545-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 545</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 545" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 545.</p> + <input src="baz.html" type="image" id="test" alt="foo"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_546-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_546-manual.html new file mode 100644 index 00000000000..6dd735b6219 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_546-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 546</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "States:" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "States:" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "States:" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "States:" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 546" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 546.</p> + <label for="test">States:</label> + <input type="text" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_547-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_547-manual.html new file mode 100644 index 00000000000..f80f7bb8a6f --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_547-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 547</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo David" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo David" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo David" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo David" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 547" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 547.</p> + <label for="test"> + foo + <input type="text" value="David"/> + </label> + <input type="text" id="test" value="baz"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html new file mode 100644 index 00000000000..5f32846c406 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>Name test case 548</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy clown" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy clown" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy clown" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy clown" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 548" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 548.</p> + <label for="test"> + crazy + <select name="member" size="1" role="menu" tabindex="0"> + <option role="menuitem" value="beard" selected="true">clown</option> + <option role="menuitem" value="scuba">rich</option> + </select> + </label> + <input type="text" id="test" value="baz"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_549-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_549-manual.html new file mode 100644 index 00000000000..97839a4c6a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_549-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 549</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy Monday" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy Monday" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy Monday" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy Monday" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 549" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 549.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="text" id="test" value="baz"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_550-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_550-manual.html new file mode 100644 index 00000000000..70740219883 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_550-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 550</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy 4" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy 4" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy 4" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy 4" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 550" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 550.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="text" id="test" value="baz"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_551-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_551-manual.html new file mode 100644 index 00000000000..2b55d07cb34 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_551-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 551</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 551" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 551.</p> + <input type="text" id="test" title="crazy" value="baz"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_552-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_552-manual.html new file mode 100644 index 00000000000..0b0ed397a12 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_552-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 552</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 552" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 552.</p> + <style> + label:before { content:"fancy "; } + </style> + <label for="test">fruit</label> + <input type="text" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_553-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_553-manual.html new file mode 100644 index 00000000000..a7f67749f71 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_553-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 553</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "test content" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "test content" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "test content" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "test content" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 553" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 553.</p> + <style type="text/css"> + [data-after]:after { content: attr(data-after); } + </style> + <label for="test" data-after="test content"></label> + <input type="text" id="test"> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_556-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_556-manual.html new file mode 100644 index 00000000000..24453584561 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_556-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 556</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "1" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "1" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "1" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "1" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 556" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 556.</p> + <img id="test" src="foo.jpg" aria-label="1"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_557-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_557-manual.html new file mode 100644 index 00000000000..7d5d86748d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_557-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 557</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "1" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "1" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "1" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "1" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 557" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 557.</p> + <img id="test" src="foo.jpg" aria-label="1" alt="a" title="t"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html new file mode 100644 index 00000000000..1994cd992b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 558</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "peanuts" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "peanuts" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "peanuts" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "peanuts" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 558" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 558.</p> + <input type="text" value="peanuts" id="test"> + <img aria-labelledby="test" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_559-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_559-manual.html new file mode 100644 index 00000000000..61afa5552fe --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_559-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 559</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 559" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 559.</p> + <img id="test" aria-labelledby="test" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html new file mode 100644 index 00000000000..aff2a0916ef --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 560</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "peanuts" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "peanuts" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "peanuts" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "peanuts" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 560" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 560.</p> + <input type="text" value="peanuts" id="test"> + <img aria-labelledby="test" aria-label="1" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_561-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_561-manual.html new file mode 100644 index 00000000000..c4b2bccd72a --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_561-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 561</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "1" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "1" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "1" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "1" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 561" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 561.</p> + <img id="test" aria-labelledby="test" aria-label="1" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_562-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_562-manual.html new file mode 100644 index 00000000000..941e3cd6e8f --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_562-manual.html @@ -0,0 +1,74 @@ +<!doctype html> +<html> + <head> + <title>Name test case 562</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "peanuts popcorn apple jacks" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "peanuts popcorn apple jacks" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "peanuts popcorn apple jacks" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "peanuts popcorn apple jacks" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 562" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 562.</p> + <input type="text" value="peanuts" id="ID1"> + <input type="text" value="popcorn" id="ID2"> + <input type="text" value="apple jacks" id="ID3"> + <img aria-labelledby="ID1 ID2 ID3" id="test" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_563-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_563-manual.html new file mode 100644 index 00000000000..580f515d07b --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_563-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 563</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "l peanuts" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "l peanuts" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "l peanuts" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "l peanuts" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 563" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 563.</p> + <input type="text" value="peanuts" id="ID1"> + <img id="test" aria-label="l" aria-labelledby="test ID1" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_564-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_564-manual.html new file mode 100644 index 00000000000..22c2a542a42 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_564-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name test case 564</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "l peanuts popcorn" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "l peanuts popcorn" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "l peanuts popcorn" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "l peanuts popcorn" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 564" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 564.</p> + <input type="text" value="peanuts" id="ID1"> + <input type="text" value="popcorn" id="ID2"> + <img id="test" aria-label="l" aria-labelledby="test ID1 ID2" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_565-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_565-manual.html new file mode 100644 index 00000000000..64f6320d331 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_565-manual.html @@ -0,0 +1,74 @@ +<!doctype html> +<html> + <head> + <title>Name test case 565</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "l peanuts popcorn apple jacks" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "l peanuts popcorn apple jacks" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "l peanuts popcorn apple jacks" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "l peanuts popcorn apple jacks" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 565" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 565.</p> + <input type="text" value="peanuts" id="ID1"> + <input type="text" value="popcorn" id="ID2"> + <input type="text" value="apple jacks" id="ID3"> + <img id="test" aria-label="l" aria-labelledby="test ID1 ID2 ID3" alt= "a" title="t" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_566-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_566-manual.html new file mode 100644 index 00000000000..20189f31899 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_566-manual.html @@ -0,0 +1,74 @@ +<!doctype html> +<html> + <head> + <title>Name test case 566</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "t peanuts popcorn apple jacks" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "t peanuts popcorn apple jacks" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "t peanuts popcorn apple jacks" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "t peanuts popcorn apple jacks" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 566" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 566.</p> + <input type="text" value="peanuts" id="ID1"> + <input type="text" value="popcorn" id="ID2"> + <input type="text" value="apple jacks" id="ID3"> + <img id="test" aria-label="" aria-labelledby="test ID1 ID2 ID3" alt="" title="t" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_596-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_596-manual.html new file mode 100644 index 00000000000..2ee191c375e --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_596-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 596</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "bar" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "bar" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "bar" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "bar" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 596" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 596.</p> + <div id="test" aria-labelledby="ID1">foo</div> + <span id="ID1">bar</span> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_597-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_597-manual.html new file mode 100644 index 00000000000..4c4c527a661 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_597-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 597</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Tag" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Tag" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Tag" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Tag" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 597" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 597.</p> + <div id="test" aria-label="Tag">foo</div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_598-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_598-manual.html new file mode 100644 index 00000000000..9a150111b32 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_598-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 598</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "bar" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "bar" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "bar" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "bar" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 598" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 598.</p> + <div id="test" aria-labelledby="ID1" aria-label="Tag">foo</div> + <span id="ID1">bar</span> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_599-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_599-manual.html new file mode 100644 index 00000000000..45041234ef8 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_599-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name test case 599</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 599" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 599.</p> + <div id="test" aria-labelledby="ID0 ID1" aria-label="Tag">foo</div> + <span id="ID0">bar</span> + <span id="ID1">baz</span> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_600-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_600-manual.html new file mode 100644 index 00000000000..8f572563a2f --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_600-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 600</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 600" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 600.</p> + <div id="test">Div with text</div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_601-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_601-manual.html new file mode 100644 index 00000000000..4dadf8a05c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_601-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 601</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 601" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 601.</p> + <div id="test" role="button">foo</div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_602-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_602-manual.html new file mode 100644 index 00000000000..8f7f11a506c --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_602-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 602</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Tag" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Tag" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Tag" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Tag" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 602" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 602.</p> + <div id="test" role="button" title="Tag" style="outline:medium solid black; width:2em; height:1em;"> + </div> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_603-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_603-manual.html new file mode 100644 index 00000000000..c4e3d5e5697 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_603-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 603</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 603" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 603.</p> + <div id="ID1">foo</div> + <a id="test" href="test.html" aria-labelledby="ID1">bar</a> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_604-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_604-manual.html new file mode 100644 index 00000000000..c1847087ee5 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_604-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 604</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Tag" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Tag" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Tag" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Tag" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 604" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 604.</p> + <a id="test" href="test.html" aria-label="Tag">ABC</a> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_605-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_605-manual.html new file mode 100644 index 00000000000..5212857425e --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_605-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 605</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "bar" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "bar" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "bar" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "bar" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 605" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 605.</p> + <a href="test.html" id="test" aria-labelledby="ID1" aria-label="Tag">foo</a> + <p id="ID1">bar</p> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_606-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_606-manual.html new file mode 100644 index 00000000000..8c3c4610b1a --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_606-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 606</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Tag foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Tag foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Tag foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Tag foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 606" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 606.</p> + <a href="test.html" id="test" aria-labelledby="test ID1" aria-label="Tag"></a> + <p id="ID1">foo</p> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_607-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_607-manual.html new file mode 100644 index 00000000000..c68dd031dcf --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_607-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 607</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "ABC" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "ABC" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "ABC" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "ABC" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 607" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 607.</p> + <a href="test.html" id="test">ABC</a> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_608-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_608-manual.html new file mode 100644 index 00000000000..cf4423cb4f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_608-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 608</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Tag" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Tag" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Tag" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Tag" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 608" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 608.</p> + <a href="test.html" id="test" title="Tag"></a> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_609-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_609-manual.html new file mode 100644 index 00000000000..e7ce0ed57be --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_609-manual.html @@ -0,0 +1,74 @@ +<!doctype html> +<html> + <head> + <title>Name test case 609</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 609" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 609.</p> + <input id="test" type="text" aria-labelledby="ID1 ID2 ID3"> + <p id="ID1">foo</p> + <p id="ID2">bar</p> + <p id="ID3">baz</p> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_610-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_610-manual.html new file mode 100644 index 00000000000..3398e8437f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_610-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 610</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 610" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 610.</p> + <input id="test" type="text" aria-label="bar" aria-labelledby="ID1 test"> + <div id="ID1">foo</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_611-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_611-manual.html new file mode 100644 index 00000000000..458dc3532ed --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_611-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 611</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 611" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 611.</p> + <input id="test" type="text"/> + <label for="test">foo</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_612-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_612-manual.html new file mode 100644 index 00000000000..c3e44806674 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_612-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 612</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 612" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 612.</p> + <input type="password" id="test"> + <label for="test">foo</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_613-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_613-manual.html new file mode 100644 index 00000000000..b83a7bdadc9 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_613-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 613</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 613" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 613.</p> + <input type="checkbox" id="test"> + <label for="test">foo</label></body> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_614-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_614-manual.html new file mode 100644 index 00000000000..0f6beb6b57c --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_614-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 614</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 614" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 614.</p> + <input type="radio" id="test"> + <label for="test">foo</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_615-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_615-manual.html new file mode 100644 index 00000000000..ae06ecf2105 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_615-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 615</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 615" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 615.</p> + <input type="file" id="test"> + <label for="test">foo</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_616-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_616-manual.html new file mode 100644 index 00000000000..335e781dcbd --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_616-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 616</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 616" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 616.</p> + <input type="image" id="test"> + <label for="test">foo</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_617-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_617-manual.html new file mode 100644 index 00000000000..2ba89d38e33 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_617-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 617</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 617" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 617.</p> + <input type="checkbox" id="test"> + <label for="test">foo<input type="text" value="bar">baz</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_618-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_618-manual.html new file mode 100644 index 00000000000..0af6532c57b --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_618-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 618</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 618" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 618.</p> + <input type="text" id="test"> + <label for="test">foo<input type="text" value="bar">baz</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_619-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_619-manual.html new file mode 100644 index 00000000000..154ad359f47 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_619-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 619</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 619" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 619.</p> + <input type="password" id="test"> + <label for="test">foo<input type="text" value="bar">baz</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_620-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_620-manual.html new file mode 100644 index 00000000000..b1774e2c00d --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_620-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 620</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 620" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 620.</p> + <input type="radio" id="test"> + <label for="test">foo<input type="text" value="bar">baz</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_621-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_621-manual.html new file mode 100644 index 00000000000..8fb303bfb40 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_621-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 621</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 621" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 621.</p> + <input type="file" id="test"> + <label for="test">foo <input type="text" value="bar"> baz</label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_659-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_659-manual.html new file mode 100644 index 00000000000..97d84e5c92d --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_659-manual.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> + <head> + <title>Name test case 659</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 659" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 659.</p> + <style type="text/css"> + label:before { content: "foo"; } + label:after { content: "baz"; } + </style> + <form> + <label for="test" title="bar"><input id="test" type="text" name="test" title="bar"></label> + </form> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_660-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_660-manual.html new file mode 100644 index 00000000000..3cbd92a0adf --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_660-manual.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> + <head> + <title>Name test case 660</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 660" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 660.</p> + <style type="text/css"> + label:before { content: "foo"; } + label:after { content: "baz"; } + </style> + <form> + <label for="test" title="bar"><input id="test" type="password" name="test" title="bar"></label> + </form> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_661-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_661-manual.html new file mode 100644 index 00000000000..4ed32ec0782 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_661-manual.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> + <head> + <title>Name test case 661</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 661" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 661.</p> + <style type="text/css"> + label:before { content: "foo"; } + label:after { content: "baz"; } + </style> + <form> + <label for="test"><input id="test" type="checkbox" name="test" title=" bar "></label> + </form> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_662-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_662-manual.html new file mode 100644 index 00000000000..15e706c8c86 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_662-manual.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> + <head> + <title>Name test case 662</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 662" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 662.</p> + <style type="text/css"> + label:before { content: "foo"; } + label:after { content: "baz"; } + </style> + <form> + <label for="test"><input id="test" type="radio" name="test" title=" bar "></label> + </form> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_663-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_663-manual.html new file mode 100644 index 00000000000..883c1a9e38b --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_663-manual.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> + <head> + <title>Name test case 663</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 663" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 663.</p> + <style type="text/css"> + label:before { content: "foo"; } + label:after { content: "baz"; } + </style> + <form> + <label for="test"><input id="test" type="file" name="test" title="bar"></label> + </form> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_663a-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_663a-manual.html new file mode 100644 index 00000000000..1e71fd514c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_663a-manual.html @@ -0,0 +1,77 @@ +<!doctype html> +<html> + <head> + <title>Name test case 663a</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo bar baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo bar baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo bar baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo bar baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 663a" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 663a.</p> + <style type="text/css"> + label:before { content: "foo"; } + label:after { content: "baz"; } + </style> + <form> + <label for="test"><input id="test" type="image" src="foo.jpg" name="test" title="bar"></label> + </form> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_721-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_721-manual.html new file mode 100644 index 00000000000..4a2d8c555b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_721-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 721</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "States:" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "States:" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "States:" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "States:" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 721" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 721.</p> + <label for="test">States:</label> + <input type="password" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_723-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_723-manual.html new file mode 100644 index 00000000000..0d1535cb6ca --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_723-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 723</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "States:" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "States:" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "States:" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "States:" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 723" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 723.</p> + <label for="test">States:</label> + <input type="checkbox" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_724-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_724-manual.html new file mode 100644 index 00000000000..d69eda490b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_724-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 724</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "States:" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "States:" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "States:" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "States:" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 724" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 724.</p> + <label for="test">States:</label> + <input type="radio" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_725-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_725-manual.html new file mode 100644 index 00000000000..47bb9d5ff5a --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_725-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 725</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "File:" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "File:" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "File:" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "File:" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 725" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 725.</p> + <label for="test">File:</label> + <input type="file" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_726-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_726-manual.html new file mode 100644 index 00000000000..45996d9095f --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_726-manual.html @@ -0,0 +1,72 @@ +<!doctype html> +<html> + <head> + <title>Name test case 726</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "States:" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "States:" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "States:" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "States:" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 726" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 726.</p> + <label for="test">States:</label> + <input type="image" id="test" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_727-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_727-manual.html new file mode 100644 index 00000000000..2f7f589e927 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_727-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 727</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo David" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo David" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo David" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo David" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 727" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 727.</p> + <label for="test"> + foo + <input type="text" value="David"/> + </label> + <input type="password" id="test" value="baz"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_728-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_728-manual.html new file mode 100644 index 00000000000..0a5d003839a --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_728-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 728</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo David" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo David" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo David" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo David" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 728" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 728.</p> + <label for="test"> + foo + <input type="text" value="David"/> + </label> + <input type="checkbox" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_729-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_729-manual.html new file mode 100644 index 00000000000..a4a302ea49a --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_729-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 729</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo David" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo David" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo David" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo David" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 729" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 729.</p> + <label for="test"> + foo + <input type="text" value="David"/> + </label> + <input type="radio" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_730-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_730-manual.html new file mode 100644 index 00000000000..230c1998942 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_730-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 730</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo David" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo David" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo David" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo David" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 730" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 730.</p> + <label for="test"> + foo + <input type="text" value="David"/> + </label> + <input type="file" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_731-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_731-manual.html new file mode 100644 index 00000000000..613bdc6f106 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_731-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 731</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo David" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo David" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo David" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo David" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 731" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 731.</p> + <label for="test"> + foo + <input type="text" value="David"/> + </label> + <input type="image" id="test" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html new file mode 100644 index 00000000000..cf254067777 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>Name test case 733</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy clown" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy clown" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy clown" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy clown" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 733" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 733.</p> + <label for="test"> + crazy + <select name="member" size="1" role="menu" tabindex="0"> + <option role="menuitem" value="beard" selected="true">clown</option> + <option role="menuitem" value="scuba">rich</option> + </select> + </label> + <input type="password" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html new file mode 100644 index 00000000000..ed014af05aa --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>Name test case 734</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy clown" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy clown" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy clown" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy clown" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 734" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 734.</p> + <label for="test"> + crazy + <select name="member" size="1" role="menu" tabindex="0"> + <option role="menuitem" value="beard" selected="true">clown</option> + <option role="menuitem" value="scuba">rich</option> + </select> + </label> + <input type="checkbox" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html new file mode 100644 index 00000000000..c82e7f37d71 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>Name test case 735</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy clown" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy clown" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy clown" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy clown" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 735" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 735.</p> + <label for="test"> + crazy + <select name="member" size="1" role="menu" tabindex="0"> + <option role="menuitem" value="beard" selected="true">clown</option> + <option role="menuitem" value="scuba">rich</option> + </select> + </label> + <input type="radio" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html new file mode 100644 index 00000000000..b10508886ec --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>Name test case 736</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy clown" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy clown" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy clown" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy clown" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 736" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 736.</p> + <label for="test"> + crazy + <select name="member" size="1" role="menu" tabindex="0"> + <option role="menuitem" value="beard" selected="true">clown</option> + <option role="menuitem" value="scuba">rich</option> + </select> + </label> + <input type="file" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html new file mode 100644 index 00000000000..6493316951f --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html @@ -0,0 +1,78 @@ +<!doctype html> +<html> + <head> + <title>Name test case 737</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy clown" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy clown" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy clown" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy clown" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 737" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 737.</p> + <label for="test"> + crazy + <select name="member" size="1" role="menu" tabindex="0"> + <option role="menuitem" value="beard" selected="true">clown</option> + <option role="menuitem" value="scuba">rich</option> + </select> + </label> + <input type="image" id="test" src="foo.jpg"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_738-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_738-manual.html new file mode 100644 index 00000000000..a462b03973f --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_738-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 738</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy Monday" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy Monday" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy Monday" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy Monday" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 738" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 738.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="password" value="baz" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_739-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_739-manual.html new file mode 100644 index 00000000000..3688cba8e02 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_739-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 739</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy Monday" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy Monday" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy Monday" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy Monday" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 739" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 739.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="checkbox" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_740-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_740-manual.html new file mode 100644 index 00000000000..716b1f9d23b --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_740-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 740</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy Monday" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy Monday" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy Monday" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy Monday" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 740" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 740.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="radio" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_741-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_741-manual.html new file mode 100644 index 00000000000..6da7ff2d6f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_741-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 741</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy Monday" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy Monday" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy Monday" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy Monday" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 741" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 741.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="file" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_742-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_742-manual.html new file mode 100644 index 00000000000..80f9e274bc3 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_742-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 742</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy Monday" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy Monday" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy Monday" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy Monday" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 742" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 742.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="image" src="foo.jpg" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_743-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_743-manual.html new file mode 100644 index 00000000000..8df359cfc69 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_743-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 743</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy 4" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy 4" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy 4" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy 4" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 743" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 743.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="password" id="test" value="baz"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_744-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_744-manual.html new file mode 100644 index 00000000000..528cf71005e --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_744-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 744</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy 4" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy 4" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy 4" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy 4" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 744" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 744.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="checkbox" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_745-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_745-manual.html new file mode 100644 index 00000000000..f25740059d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_745-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 745</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy 4" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy 4" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy 4" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy 4" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 745" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 745.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="radio" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_746-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_746-manual.html new file mode 100644 index 00000000000..0477908e9c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_746-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 746</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy 4" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy 4" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy 4" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy 4" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 746" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 746.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="file" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_747-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_747-manual.html new file mode 100644 index 00000000000..015bd566fde --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_747-manual.html @@ -0,0 +1,76 @@ +<!doctype html> +<html> + <head> + <title>Name test case 747</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy 4" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy 4" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy 4" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy 4" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 747" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 747.</p> + <label for="test"> + crazy + <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"> + </div> + </label> + <input type="image" src="foo.jpg" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_748-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_748-manual.html new file mode 100644 index 00000000000..ddbed2c9a75 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_748-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 748</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 748" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 748.</p> + <input type="password" id="test" title="crazy" value="baz"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_749-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_749-manual.html new file mode 100644 index 00000000000..0f542b34766 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_749-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 749</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 749" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 749.</p> + <input type="checkbox" id="test" title="crazy"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_750-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_750-manual.html new file mode 100644 index 00000000000..603a698f8a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_750-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 750</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 750" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 750.</p> + <input type="radio" id="test" title="crazy"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_751-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_751-manual.html new file mode 100644 index 00000000000..02963819455 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_751-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 751</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 751" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 751.</p> + <input type="file" id="test" title="crazy"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_752-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_752-manual.html new file mode 100644 index 00000000000..52503e62397 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_752-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name test case 752</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "crazy" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "crazy" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "crazy" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "crazy" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 752" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 752.</p> + <input type="image" src="foo.jpg" id="test" title="crazy"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_753-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_753-manual.html new file mode 100644 index 00000000000..8a1278bbe7f --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_753-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 753</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 753" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 753.</p> + <style> + label:before { content:"fancy "; } + </style> + <label for="test">fruit</label> + <input type="password" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_754-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_754-manual.html new file mode 100644 index 00000000000..41f06aaea76 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_754-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 754</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 754" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 754.</p> + <style> + label:before { content:"fancy "; } + </style> + <label for="test">fruit</label> + <input type="checkbox" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_755-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_755-manual.html new file mode 100644 index 00000000000..dd410b88e92 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_755-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 755</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 755" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 755.</p> + <style> + label:before { content:"fancy "; } + </style> + <label for="test">fruit</label> + <input type="radio" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_756-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_756-manual.html new file mode 100644 index 00000000000..600d75fe173 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_756-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 756</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 756" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 756.</p> + <style> + label:before { content:"fancy "; } + </style> + <label for="test">fruit</label> + <input type="file" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_757-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_757-manual.html new file mode 100644 index 00000000000..993c4d16c16 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_757-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 757</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 757" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 757.</p> + <style> + label:before { content:"fancy "; } + </style> + <label for="test">fruit</label> + <input type="image" src="foo.jpg" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_758-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_758-manual.html new file mode 100644 index 00000000000..9ab6467a281 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_758-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 758</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 758" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 758.</p> + <style> + label:after { content:" fruit"; } + </style> + <label for="test">fancy</label> + <input type="password" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_759-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_759-manual.html new file mode 100644 index 00000000000..159edc74728 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_759-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 759</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 759" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 759.</p> + <style> + label:after { content:" fruit"; } + </style> + <label for="test">fancy</label> + <input type="checkbox" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_760-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_760-manual.html new file mode 100644 index 00000000000..30d8a7e0e9e --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_760-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 760</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 760" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 760.</p> + <style> + label:after { content:" fruit"; } + </style> + <label for="test">fancy</label> + <input type="radio" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_761-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_761-manual.html new file mode 100644 index 00000000000..3dedb942a4d --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_761-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 761</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fruitfancy" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 761" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 761.</p> + <style> + label:after { content:" fruit"; } + </style> + <label for="test">fancy</label> + <input type="file" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_762-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_762-manual.html new file mode 100644 index 00000000000..e131861d0c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_test_case_762-manual.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> + <head> + <title>Name test case 762</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "fancy fruit" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "fancy fruit" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "fancy fruit" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "fancy fruit" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name test case 762" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name test case 762.</p> + <style> + label:after { content:" fruit"; } + </style> + <label for="test">fancy</label> + <input type="image" src="foo.jpg" id="test"/> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-combobox-manual.html new file mode 100644 index 00000000000..7fde09c3ce8 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-combobox-manual.html @@ -0,0 +1,82 @@ +<!doctype html> +<html> + <head> + <title>Name text-label-embedded-combobox</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name text-label-embedded-combobox" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name text-label-embedded-combobox.</p> + <input type="text" id="test" /> + <label for="test">Flash the screen + <div role="combobox"> + <div role="textbox"></div> + <ul role="listbox" style="list-style-type: none;"> + <li role="option" aria-selected="true">1</li> + <li role="option">2</li> + <li role="option">3</li> + </ul> + </div> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-menu-manual.html new file mode 100644 index 00000000000..bdd1f5407c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-menu-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name text-label-embedded-menu</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name text-label-embedded-menu" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name text-label-embedded-menu.</p> + <input type="text" id="test" /> + <label for="test">Flash the screen + <span role="menu"> + <span role="menuitem" aria-selected="true">1</span> + <span role="menuitem" hidden>2</span> + <span role="menuitem" hidden>3</span> + </span> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-select-manual.html new file mode 100644 index 00000000000..e27a302e611 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-select-manual.html @@ -0,0 +1,79 @@ +<!doctype html> +<html> + <head> + <title>Name text-label-embedded-select</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "Flash the screen 1 times." + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "Flash the screen 1 times." + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "Flash the screen 1 times." + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "Flash the screen 1 times." + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name text-label-embedded-select" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name text-label-embedded-select.</p> + <input type="text" id="test" /> + <label for="test">Flash the screen + <select size="1"> + <option selected="selected">1</option> + <option>2</option> + <option>3</option> + </select> + times. + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-slider-manual.html new file mode 100644 index 00000000000..d65c1c104b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-slider-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name text-label-embedded-slider</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name text-label-embedded-slider" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name text-label-embedded-slider.</p> + <input type="text" id="test" /> + <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-spinbutton-manual.html new file mode 100644 index 00000000000..e81e220eef9 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-spinbutton-manual.html @@ -0,0 +1,73 @@ +<!doctype html> +<html> + <head> + <title>Name text-label-embedded-spinbutton</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo 5 baz" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo 5 baz" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo 5 baz" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo 5 baz" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name text-label-embedded-spinbutton" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name text-label-embedded-spinbutton.</p> + <input type="text" id="test" /> + <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz + </label> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/name_text-title-manual.html b/tests/wpt/web-platform-tests/accname/name_text-title-manual.html new file mode 100644 index 00000000000..cc0b645e89a --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/name_text-title-manual.html @@ -0,0 +1,71 @@ +<!doctype html> +<html> + <head> + <title>Name text-title</title> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <link rel="stylesheet" href="/resources/testharness.css"> + <link rel="stylesheet" href="/wai-aria/scripts/manual.css"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/wai-aria/scripts/ATTAcomm.js"></script> + <script> + setup({explicit_timeout: true, explicit_done: true }); + + var theTest = new ATTAcomm( + { + "steps" : [ + { + "element" : "test", + "test" : { + "ATK" : [ + [ + "property", + "name", + "is", + "foo" + ] + ], + "AXAPI" : [ + [ + "property", + "AXDescription", + "is", + "foo" + ] + ], + "IAccessible2" : [ + [ + "property", + "accName", + "is", + "foo" + ] + ], + "UIA" : [ + [ + "property", + "Name", + "is", + "foo" + ] + ] + }, + "title" : "step 1", + "type" : "test" + } + ], + "title" : "Name text-title" +} + + ) ; + </script> + </head> + <body> + <p>This test examines the ARIA properties for Name text-title.</p> + <input type="text" id="test" title="foo" /> + + <div id="manualMode"></div> + <div id="log"></div> + <div id="ATTAmessages"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/accname/test.png b/tests/wpt/web-platform-tests/accname/test.png Binary files differnew file mode 100644 index 00000000000..85cfa35fd13 --- /dev/null +++ b/tests/wpt/web-platform-tests/accname/test.png diff --git a/tests/wpt/web-platform-tests/beacon/headers/header-content-type.html b/tests/wpt/web-platform-tests/beacon/headers/header-content-type.html index 2d23adfb712..9dd8787b76d 100644 --- a/tests/wpt/web-platform-tests/beacon/headers/header-content-type.html +++ b/tests/wpt/web-platform-tests/beacon/headers/header-content-type.html @@ -10,36 +10,30 @@ <script src="/common/utils.js"></script> <script src="/common/get-host-info.sub.js"></script> <script> -var RESOURCES_DIR = "/beacon/resources/"; - -function pollResult(test, id) { - var checkUrl = RESOURCES_DIR + "content-type.py?cmd=get&id=" + id; - - return new Promise(resolve => { - step_timeout(test.step_func(() => { - fetch(checkUrl).then(response => { - response.text().then(body => { - resolve(body); - }); - }); - }), 1000); - }); -} +const RESOURCES_DIR = "/beacon/resources/"; function testContentTypeHeader(what, contentType, title) { - var testBase = RESOURCES_DIR; - var id = self.token(); - var testUrl = testBase + "content-type.py?cmd=put&id=" + id; - - promise_test(function(test) { + function wait(ms) { + return new Promise(resolve => step_timeout(resolve, ms)); + } + promise_test(async t => { + const id = self.token(); + const testUrl = new Request(RESOURCES_DIR + "content-type.py?cmd=put&id=" + id).url; assert_true(navigator.sendBeacon(testUrl, what), "SendBeacon Succeeded"); - return pollResult(test, id) .then(result => { - if (contentType == "multipart/form-data") { - assert_true(result.startsWith(contentType), "Correct Content-Type header result"); - } else { - assert_equals(result, contentType, "Correct Content-Type header result"); - } - }); + assert_equals(performance.getEntriesByName(testUrl).length, 0); + + do { + await wait(50); + } while (performance.getEntriesByName(testUrl).length === 0); + assert_equals(performance.getEntriesByName(testUrl).length, 1); + const checkUrl = RESOURCES_DIR + "content-type.py?cmd=get&id=" + id; + const response = await fetch(checkUrl); + const text = await response.text(); + if (contentType === "multipart/form-data") { + assert_true(text.startsWith(contentType), "Correct Content-Type header result"); + } else { + assert_equals(text, contentType, "Correct Content-Type header result"); + } }, "Test content-type header for a body " + title); } diff --git a/tests/wpt/web-platform-tests/cors/image-tainting-in-cross-origin-iframe.sub.html b/tests/wpt/web-platform-tests/cors/image-tainting-in-cross-origin-iframe.sub.html new file mode 100644 index 00000000000..0cd87756e94 --- /dev/null +++ b/tests/wpt/web-platform-tests/cors/image-tainting-in-cross-origin-iframe.sub.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +</body> +<script> +async_test(t => { + const img = document.createElement('img'); + img.onload = t.step_func(() => { + const iframe = document.createElement('iframe'); + window.onmessage = t.step_func_done(e => { + assert_equals(e.data, 'DONE'); + }); + iframe.src = 'http://{{domains[www1]}}:{{ports[http][0]}}/cors/resources/image-tainting-checker.sub.html'; + document.body.appendChild(iframe); + }); + img.src = '/images/blue-png-cachable.py'; + document.body.appendChild(img); +}, 'An image resource that is same-origin to the top-level frame loaded in ' + + 'the frame is not treated as same-origin for an iframe that is ' + + 'cross-origin to the top-level frame, and therefore a canvas where the ' + + 'image is drawn gets tainted.'); +</script> diff --git a/tests/wpt/web-platform-tests/cors/resources/image-tainting-checker.sub.html b/tests/wpt/web-platform-tests/cors/resources/image-tainting-checker.sub.html new file mode 100644 index 00000000000..59de9e7a23c --- /dev/null +++ b/tests/wpt/web-platform-tests/cors/resources/image-tainting-checker.sub.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<body> +<canvas id="canvas"></canvas> +<script> +// Used by image-tainting-in-cross-origin-iframe.sub.html to check that an +// image resource loaded by the top level frame that is same-origin to the +// frame isn't treated as a same-origin resource in a cross-origin iframe. +const canvas = document.getElementById('canvas'); +const ctx = canvas.getContext('2d'); +const img = new Image(); +img.src = 'http://{{host}}:{{ports[http][0]}}/images/blue-png-cachable.py'; +img.onload = () => { + ctx.drawImage(img, 0, 0); + try { + ctx.getImageData(0, 0, 1, 1); + parent.postMessage('FAIL: getImageData() didn\'t throw', '*'); + } catch (e) { + parent.postMessage('DONE', '*'); + } +}; +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats.html b/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats.html new file mode 100644 index 00000000000..affecab5132 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<title>Zero width floats</title> +<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#float-width" title="10.3.5 Floating, non-replaced elements"> +<link rel="match" href="../../reference/ref-filled-green-200px-square.html"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="margin-left:50px; width:100px;"> + <div style="float:left; width:0; height:50px;"></div> + <div style="float:right; clear:left; width:0; height:150px;"></div> + <div style="overflow:hidden; margin:0 -50px; height:100px; background:green;"></div> +</div> +<div style="position:relative; top:-100px; overflow:hidden; clear:both; width:200px; height:100px; background:green;"></div> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-001.html b/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-001.html new file mode 100644 index 00000000000..e44cc7b7c8d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-001.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSS Test: font shorthand serialization</title> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#propdef-font"> +<link rel="help" href="https://drafts.csswg.org/cssom/"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/1564"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1436031"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div style="font: bold medium serif"></div> +<script> +test(function() { + assert_equals( + document.querySelector('div').style.font, "bold medium serif", + "Default values of the longhands don't get serialized on the font shorthand" + ); +}, "Default values of the longhands don't get serialized on the font shorthand"); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute-ref.html new file mode 100644 index 00000000000..416d57c43fa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute-ref.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<style> +.container { + position: relative; + margin: 20px 0; + width: 200px; + height: 200px; + border: solid 2px; +} + +.result { + position: absolute; + background: green; +} +</style> +<div class="container"> + <div class="result" style="width: 100px; height: 100px; bottom: 0px;"></div> +</div> +<div class="container"> + <div class="result" style="width: 100px; height: 200px;"></div> +</div> +<div class="container"> + <div class="result" style="width: 100px; height: 100px;"></div> +</div> +<div class="container"> + <div class="result" style="width: 200px; height: 100px;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute.https.html new file mode 100644 index 00000000000..c2a58c9a2a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute.https.html @@ -0,0 +1,73 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing"> +<link rel="match" href="auto-block-size-absolute-ref.html"> +<meta name="assert" content="This test checks that the absolute positioning respects the auto-block-size." /> + +<style> +.test { + position: absolute; + background: red; +} + +@supports (display: layout(block-size-100)) { + .test { + display: layout(block-size-100); + background: green; + } +} + +.container { + position: relative; + margin: 20px 0; + width: 200px; + height: 200px; + border: solid 2px; +} + +.width-100 { + width: 100px; + writing-mode: horizontal-tb; +} + +.height-100 { + height: 100px; + writing-mode: vertical-rl; +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<!-- 100px x 100px, bottom-left --> +<div class="container"> + <div class="test width-100" style="bottom: 0px"></div> +</div> + +<!-- 100px x 200px, left, auto-size is ignored. --> +<div class="container"> + <div class="test width-100" style="top: 0px; bottom: 0px"></div> +</div> + +<!-- 100px x 100px, top-left --> +<div class="container"> + <div class="test height-100" style="left: 0px;"></div> +</div> + +<!-- 100px x 100px, top, auto-size is ignored. --> +<div class="container"> + <div class="test height-100" style="left: 0px; right: 0px;"></div> +</div> + +<script id="code" type="text/worklet"> +registerLayout('block-size-100', class { + *intrinsicSizes() {} + *layout() { + return {autoBlockSize: 100}; + } +}); +</script> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex-ref.html new file mode 100644 index 00000000000..e71b104c742 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<style> +.container { + border: solid 2px; + display: flow-root; + width: 300px; +} + +.child { + background: green; + border: solid 2px; + box-sizing: border-box; + float: left; + height: 100px; +} +</style> + +<div class="container"> + <div class="child" style="width: 100px;"></div> + <div class="child" style="width: 200px;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex.https.html new file mode 100644 index 00000000000..fe95c7e23cc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex.https.html @@ -0,0 +1,61 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing"> +<link rel="match" href="auto-block-size-flex-ref.html"> +<meta name="assert" content="This test checks that the flex layout respects the auto-block-size." /> + +<style> +.flex { + width: 300px; + display: flex; + border: solid 2px; +} + +.custom { + background: red; + box-sizing: border-box; + border: solid 2px; + height: 100px; + writing-mode: vertical-rl; +} + +@supports (display: layout(block-size-100)) { + .custom-100 { + display: layout(block-size-100); + background: green; + } + .custom-50 { + display: layout(block-size-50); + background: green; + flex: 1; + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<!-- Tests that floats using an auto block size get positioned correctly. --> +<div class="flex"> + <div class="custom custom-100"></div> + <div class="custom custom-50"></div> +</div> + +<script id="code" type="text/worklet"> +registerLayout('block-size-100', class { + *intrinsicSizes() {} + *layout() { + return {autoBlockSize: 100}; + } +}); +registerLayout('block-size-50', class { + *intrinsicSizes() {} + *layout() { + return {autoBlockSize: 50}; + } +}); +</script> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats-ref.html new file mode 100644 index 00000000000..368d3d8693f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats-ref.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<style> +.container { + width: 150px; + border: solid 2px; +} + +.left { + float: left; + background: green; + width: 100px; + height: 100px; +} + +.right { + float: right; + background: green; + width: 100px; + height: 100px; +} +</style> + +<div class="container"> + <div class="left"></div> + <div class="right"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats.https.html new file mode 100644 index 00000000000..67775eb9954 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats.https.html @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing"> +<link rel="match" href="auto-block-size-floats-ref.html"> +<meta name="assert" content="This test checks that if the layout() is a float, the flow layout respects the auto-block-size." /> + +<style> +.test { + background: red; +} + +@supports (display: layout(block-size-100)) { + .test { + display: layout(block-size-100); + background: green; + } +} + +.container { + width: 150px; + border: solid 2px; +} + +.left { + float: left; + width: 100px; + writing-mode: horizontal-tb; +} + +.right { + float: right; + height: 100px; + writing-mode: vertical-rl; +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<!-- Tests that floats using an auto block size get positioned correctly. --> +<div class="container"> + <div class="left test"></div> + <div class="right test"></div> +</div> + +<script id="code" type="text/worklet"> +registerLayout('block-size-100', class { + *intrinsicSizes() {} + *layout() { + return {autoBlockSize: 100}; + } +}); +</script> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow-ref.html new file mode 100644 index 00000000000..73f84811b18 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow-ref.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<style> +.result { + margin: 20px 0; + background: green; +} +</style> +<div class="result" style="width: 100px; height: 100px;"></div> +<div class="result" style="width: 100px; height: 150px;"></div> +<div class="result" style="width: 100px; height: 50px;"></div> +<div class="result" style="width: 100px; height: 100px;"></div> +<div class="result" style="width: 150px; height: 100px;"></div> +<div class="result" style="width: 50px; height: 100px;"></div> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow.https.html new file mode 100644 index 00000000000..b8bc0d1934e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow.https.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing"> +<link rel="match" href="auto-block-size-inflow-ref.html"> +<meta name="assert" content="This test checks that min/max-block-size constraints are applied correctly to a layout()." /> + +<style> +.test { + margin: 20px 0; + background: red; +} + +@supports (display: layout(block-size-100)) { + .test { + display: layout(block-size-100); + background: green; + } +} + +.width-100 { + width: 100px; + writing-mode: horizontal-tb; +} + +.height-100 { + height: 100px; + writing-mode: vertical-rl; +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<!-- 100px x 100px --> +<div class="test width-100"></div> + +<!-- 100px x 150px --> +<div class="test width-100" style="min-height: 150px"></div> + +<!-- 100px x 50px --> +<div class="test width-100" style="max-height: 50px"></div> + +<!-- 100px x 100px --> +<div class="test height-100"></div> + +<!-- 150px x 100px --> +<div class="test height-100" style="min-width: 150px"></div> + +<!-- 50px x 100px --> +<div class="test height-100" style="max-width: 50px"></div> + +<script id="code" type="text/worklet"> +registerLayout('block-size-100', class { + *intrinsicSizes() {} + *layout() { + return {autoBlockSize: 100}; + } +}); +</script> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative-ref.html new file mode 100644 index 00000000000..665b5c6620b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative-ref.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<style> +.result { + background: green; + border: solid 2px; + margin: 20px 0; +} +</style> + +<div class="result" style="width: 100px; height: 0px;"></div> +<div class="result" style="width: 0px; height: 100px;"></div> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative.https.html new file mode 100644 index 00000000000..4e912ed9f2a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative.https.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing"> +<link rel="match" href="auto-block-size-negative-ref.html"> +<meta name="assert" content="This test checks that auto-block-size is correctly clamped to zero." /> +<meta name="assert" content="TODO" /> + +<style> + +.test { + background: red; + border: solid 2px; + margin: 20px 0; +} + +.width-100 { + width: 100px; + writing-mode: horizontal-tb; +} + +.height-100 { + height: 100px; + writing-mode: vertical-rl; +} + +@supports (display: layout(block-size-negative)) { + .test { + display: layout(block-size-negative); + background: green; + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<div class="test width-100"></div> +<div class="test height-100"></div> + +<script id="code" type="text/worklet"> +registerLayout('block-size-negative', class { + *intrinsicSizes() {} + *layout() { + return {autoBlockSize: -100}; + } +}); +</script> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/fallback-constructor-error.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-constructor-error.https.html new file mode 100644 index 00000000000..590a9d01f90 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-constructor-error.https.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#get-a-layout-class-instance"> +<link rel="match" href="fallback-ref.html"> +<meta name="assert" content="This test checks that a layout() class with a throwing constructor will fallback to block layout." /> +<style> +.test { + background: red; + border: solid 2px; + width: 100px; +} + +.float { + float: left; + width: 50%; + height: 100px; +} + +.fc { + display: flow-root; + height: 100px; +} + +@supports (display: layout(throwing-ctor)) { + .test { + display: layout(throwing-ctor); + background: green; + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<!-- This tests that when the "layout()" constructor fails, it will fallback to block layout. --> +<div class="test"> + <div class="float"></div> + <div class="fc"></div> +</div> + +<script id="code" type="text/worklet"> +registerLayout('throwing-ctor', class { + constructor() { throw Error('fail!'); } + *intrinsicSizes() {} + *layout() {} +}); +</script> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-error.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-error.https.html new file mode 100644 index 00000000000..54ea80b36b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-error.https.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#invoke-a-layout-callback"> +<link rel="match" href="fallback-ref.html"> +<meta name="assert" content="This test checks that a layout() class with a throwing layout function will fallback to block layout." /> +<style> +.test { + background: red; + border: solid 2px; + width: 100px; +} + +.float { + float: left; + width: 50%; + height: 100px; +} + +.fc { + display: flow-root; + height: 100px; +} + +@supports (display: layout(throwing-layout)) { + .test { + display: layout(throwing-layout); + background: green; + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<!-- This tests that when the "layout()" layout function fails, it will fallback to block layout. --> +<div class="test"> + <div class="float"></div> + <div class="fc"></div> +</div> + +<script id="code" type="text/worklet"> +registerLayout('throwing-layout', class { + *intrinsicSizes() {} + *layout() { throw Error('fail!'); } +}); +</script> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-return.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-return.https.html new file mode 100644 index 00000000000..42ccfc5c83c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-return.https.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#invoke-a-layout-callback"> +<link rel="match" href="fallback-ref.html"> +<meta name="assert" content="This test checks that a layout() class with the layout function returning a bad value will fallback to block layout." /> +<style> +.test { + background: red; + border: solid 2px; + width: 100px; +} + +.float { + float: left; + width: 50%; + height: 100px; +} + +.fc { + display: flow-root; + height: 100px; +} + +@supports (display: layout(bad-return)) { + .test { + display: layout(bad-return); + background: green; + } +} +</style> +<script src="/common/reftest-wait.js"></script> +<script src="/common/worklet-reftest.js"></script> + +<!-- This tests that when the "layout()" layout function returns a bad value, it will fallback to block layout. --> +<div class="test"> + <div class="float"></div> + <div class="fc"></div> +</div> + +<script id="code" type="text/worklet"> +registerLayout('bad-return', class { + *intrinsicSizes() {} + *layout() { return 42; } +}); +</script> + +<script> +importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/fallback-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-ref.html new file mode 100644 index 00000000000..63bb91e90ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-ref.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<style> +.result { + background: green; + border: solid 2px; + height: 100px; + width: 100px; +} +</style> + +<div class="result"></div> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html index dc87e81271f..0184cbd303e 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html @@ -65,6 +65,11 @@ const gTestCases = [ desc: 'CSSPerspective' }, { + value: new CSSPerspective(CSS.px(-1)), + cssText: 'perspective(calc(-1px))', + desc: 'CSSPerspective with negative length' + }, + { value: new CSSTransformValue([new CSSPerspective(CSS.px(1))]), cssText: 'perspective(1px)', desc: 'CSSTransformValue with a single transform' diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html index 8af27e1b85f..f33703256fb 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html @@ -5,6 +5,7 @@ <meta name="assert" content="Test CSSUnparsedValue constructor and members"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> <body> <div id="log"> <script> @@ -47,4 +48,44 @@ for (const {args, description} of gTestArguments) { }, 'CSSUnparsedValue can be constructed from ' + description); } +test(() => { + let result = new CSSUnparsedValue([new CSSVariableReferenceValue('--foo')]); + + result[0] = 'A'; + assert_equals(result[0], 'A', 'Item should be updated to new value'); +}, 'Can update item in CSSUnparsedValue to a string'); + +test(() => { + let result = new CSSUnparsedValue(['foo']); + + result[0] = new CSSVariableReferenceValue('--A'); + assert_style_value_equals(result[0], new CSSVariableReferenceValue('--A'), + 'Item should be updated to new value'); +}, 'Can update item in CSSUnparsedValue to a variable reference'); + +test(() => { + let result = new CSSUnparsedValue([]); + + result[0] = new CSSVariableReferenceValue('--A'); + assert_equals(result.length, 1, + 'Length of CSSUnparsedValue should have increased'); + assert_style_value_equals(result[0], new CSSVariableReferenceValue('--A'), + 'New item should be appended'); + + result[1] = 'foo'; + assert_equals(result.length, 2, + 'Length of CSSUnparsedValue should have increased'); + assert_equals(result[1], 'foo', 'New item should be appended'); +}, 'Can append items to CSSUnparsedValue'); + +test(() => { + const result = new CSSUnparsedValue(['foo', 'bar']); + assert_equals(result[3], undefined); +}, 'Getting invalid index in CSSUnparsedValue returns undefined'); + +test(() => { + let result = new CSSUnparsedValue(['foo', 'bar']); + assert_throws(new RangeError(), () => result[3] = 'foo'); +}, 'Setting invalid index in CSSUnparsedValue throws RangeError'); + </script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html index d1fe0b0a716..5066637f737 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html @@ -21,10 +21,23 @@ for (const suffix of ['top', 'left', 'right', 'bottom']) { runPropertyTests('border-' + suffix + '-width', [ // Computed value is 0 when border-style is 'none'. // FIXME: Add separate test where border-style is not 'none' or 'hidden'. - { syntax: 'thin', computed: assert_is_zero_px }, - { syntax: 'medium', computed: assert_is_zero_px }, - { syntax: 'thick', computed: assert_is_zero_px }, - { syntax: '<length>' }, + { + syntax: 'thin', + computed: (_, result) => assert_is_zero_px(result) + }, + { + syntax: 'medium', + computed: (_, result) => assert_is_zero_px(result) + }, + { + syntax: 'thick', + computed: (_, result) => assert_is_zero_px(result) + }, + { + syntax: '<length>', + specified: assert_is_equal_with_range_handling, + computed: (_, result) => assert_is_zero_px(result) + }, ]); } diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html index 7d126ecf10c..4ec1a7a4ba0 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html @@ -15,8 +15,8 @@ runPropertyTests('height', [ { syntax: 'auto' }, - { syntax: '<percentage>' }, - { syntax: '<length>' }, + { syntax: '<percentage>', specified: assert_is_equal_with_range_handling }, + { syntax: '<length>', specified: assert_is_equal_with_range_handling }, ]); </script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html index c740ae7f406..42761f52bc5 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html @@ -15,8 +15,14 @@ for (const suffix of ['top', 'left', 'right', 'bottom']) { runPropertyTests('padding-' + suffix, [ - { syntax: '<percentage>' }, - { syntax: '<length>' }, + { + syntax: '<percentage>', + specified: assert_is_equal_with_range_handling + }, + { + syntax: '<length>', + specified: assert_is_equal_with_range_handling + }, ]); } diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js index f7f3bd81fc2..bb607edbbec 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js @@ -1,3 +1,21 @@ +function assert_is_unit(unit, result) { + assert_class_string(result, 'CSSUnitValue', + 'relative lengths must compute to a CSSUnitValue'); + assert_equals(result.unit, unit, 'unit'); +} + +function assert_is_calc_sum(result) { + assert_class_string(result, 'CSSMathSum', + 'specified calc must be a CSSMathSum'); +} + +function assert_is_equal_with_range_handling(input, result) { + if (input instanceof CSSUnitValue && input.value < 0) + assert_style_value_equals(result, new CSSMathSum(input)); + else + assert_style_value_equals(result, input); +} + const gTestSyntaxExamples = { '<length>': { description: 'a length', @@ -9,23 +27,23 @@ const gTestSyntaxExamples = { { description: "a negative em", input: new CSSUnitValue(-3.14, 'em'), - defaultComputed: value => { - // 'ems' are relative units, so just check that it computes to px - assert_class_string(value, 'CSSUnitValue', - '"em" lengths must compute to a CSSUnitValue'); - assert_equals(value.unit, 'px', 'unit'); - } + // 'ems' are relative units, so just check that it computes to px + defaultComputed: (_, result) => assert_is_unit('px', result) }, { description: "a positive cm", input: new CSSUnitValue(3.14, 'cm'), - defaultComputed: value => { - // 'cms' are relative units, so just check that it computes to px - assert_class_string(value, 'CSSUnitValue', - '"cm" lengths must compute to a CSSUnitValue'); - assert_equals(value.unit, 'px', 'unit'); - } + // 'cms' are relative units, so just check that it computes to px + defaultComputed: (_, result) => assert_is_unit('px', result) }, + { + description: "a calc length", + input: new CSSMathSum(new CSSUnitValue(0, 'px'), new CSSUnitValue(0, 'em')), + // Specified/computed calcs are usually simplified. + // FIXME: Test this properly + defaultSpecified: (_, result) => assert_is_calc_sum(result), + defaultComputed: (_, result) => assert_is_unit('px', result) + } ], }, '<percentage>': { @@ -43,6 +61,14 @@ const gTestSyntaxExamples = { description: "a positive percent", input: new CSSUnitValue(3.14, 'percent') }, + { + description: "a calc percent", + input: new CSSMathSum(new CSSUnitValue(0, 'percent'), new CSSUnitValue(0, 'percent')), + // Specified/computed calcs are usually simplified. + // FIXME: Test this properly + defaultSpecified: (_, result) => assert_is_calc_sum(result), + defaultComputed: (_, result) => assert_is_unit('percent', result) + } ], }, '<time>': { @@ -60,6 +86,14 @@ const gTestSyntaxExamples = { description: "positive seconds", input: new CSSUnitValue(3.14, 's') }, + { + description: "a calc time", + input: new CSSMathSum(new CSSUnitValue(0, 's'), new CSSUnitValue(0, 'ms')), + // Specified/computed calcs are usually simplified. + // FIXME: Test this properly + defaultSpecified: (_, result) => assert_is_calc_sum(result), + defaultComputed: (_, result) => assert_is_unit('s', result) + } ], }, '<position>': { @@ -77,7 +111,7 @@ const gTestSyntaxExamples = { { description: "a PNG image", input: new CSSURLImageValue('/media/1x1.png'), - defaultComputed: result => { + defaultComputed: (_, result) => { // URLs compute to absolute URLs assert_true(result instanceof CSSURLImageValue, 'Computed value should be a CSSURLImageValue'); @@ -116,7 +150,7 @@ function testPropertyValid(propertyName, examples, specified, computed, descript // specified style const specifiedResult = element.attributeStyleMap.get(propertyName); if (specified || example.defaultSpecified) { - (specified || example.defaultSpecified)(specifiedResult); + (specified || example.defaultSpecified)(example.input, specifiedResult); } else { assert_not_equals(specifiedResult, null, 'Specified value must not be null'); @@ -129,7 +163,7 @@ function testPropertyValid(propertyName, examples, specified, computed, descript // computed style const computedResult = element.computedStyleMap().get(propertyName); if (computed || example.defaultComputed) { - (computed || example.defaultComputed)(computedResult); + (computed || example.defaultComputed)(example.input, computedResult); } else { assert_not_equals(computedResult, null, 'Computed value must not be null'); @@ -169,12 +203,20 @@ function createKeywordExample(keyword) { // } // // If a callback is passed to |specified|, then the callback will be passed -// the result of calling get() on the inline style map (specified values). +// two arguments: +// 1. The input test case +// 2. The result of calling get() on the inline style map (specified values). +// // The callback should check if the result is expected using assert_* functions. // If no callback is passed, then we assert that the result is the same as // the input. // // Same goes for |computed|, but with the computed style map (computed values). +// +// FIXME: The reason we pass argument #2 is that it's sometimes difficult to +// compute exactly what the expected result should be (e.g. browser-specific +// values). Once we can do that, we can remove argument #2 and just return +// the expected result. function runPropertyTests(propertyName, testCases) { let syntaxTested = new Set(); diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html index 021a87fb5d2..f79eda147c6 100644 --- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html @@ -15,8 +15,14 @@ runPropertyTests('width', [ { syntax: 'auto' }, - { syntax: '<percentage>' }, - { syntax: '<length>' }, + { + syntax: '<percentage>', + specified: assert_is_equal_with_range_handling + }, + { + syntax: '<length>', + specified: assert_is_equal_with_range_handling + }, ]); </script> diff --git a/tests/wpt/web-platform-tests/dom/events/event-disabled-dynamic.html b/tests/wpt/web-platform-tests/dom/events/event-disabled-dynamic.html new file mode 100644 index 00000000000..3f995b02f1b --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/event-disabled-dynamic.html @@ -0,0 +1,21 @@ +<!doctype html> +<meta charset=utf-8> +<title>Test that disabled is honored immediately in presence of dynamic changes</title> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="author" title="Andreas Farre" href="mailto:afarre@mozilla.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#enabling-and-disabling-form-controls:-the-disabled-attribute"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1405087"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<input type="button" value="Click" disabled> +<script> +async_test(t => { + // NOTE: This test will timeout if it fails. + window.addEventListener('load', t.step_func(() => { + let e = document.querySelector('input'); + e.disabled = false; + e.onclick = t.step_func_done(() => {}); + e.click(); + })); +}, "disabled is honored properly in presence of dynamic changes"); +</script> diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/script.html b/tests/wpt/web-platform-tests/fetch/nosniff/script.html index 6532e3db62f..e0b5dac7099 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/script.html +++ b/tests/wpt/web-platform-tests/fetch/nosniff/script.html @@ -5,7 +5,7 @@ var log = function() {}, // see comment below p = function() {}, // see comment below fails = [null, "", "x", "x/x", "text/html", "text/json"], - passes = ["text/javascript", "text/ecmascript", "text/ecmascript;blah"] + passes = ["text/javascript", "text/ecmascript", "text/ecmascript;blah", "text/javascript1.0"] // Ideally we'd also check whether the scripts in fact execute, but that would involve // timers and might get a bit racy without cross-browser support for the execute events. diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html new file mode 100644 index 00000000000..f626a79ae66 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html @@ -0,0 +1,28 @@ +<!doctype html> +<title>Aborting fetch for javascript:string navigation</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#navigate"> +<link rel="help" href="https://github.com/whatwg/html/issues/2590"> +<div id="log"></div> +<iframe src="support/iframe-and-links.html"></iframe> +<script> +async_test(test => { + onload = () => { + const child = document.querySelector('iframe').contentWindow; + child.document.querySelector("#slowLink").click(); + // The step below is in a timeout. The framed page can't communicate back mid-parse because that + // would involve running script, which makes that navigation "mature", and we need to do this + // before it matures. + test.step_timeout(() => { + child.document.querySelector("#javascriptStringLink").click(); + child.document.querySelector("iframe").onload = test.step_func_done(() => { + assert_false(child.childLoaded, 'child.childLoaded'); + }); + }, 100); + }; + window.javascriptStringDocLoaded = test.step_func(() => { + assert_unreached("javascript: URL doc replaced the document, should be targeted to child iframe."); + }); +}); +</script> diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html new file mode 100644 index 00000000000..80a0d27a7d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html @@ -0,0 +1,25 @@ +<!doctype html> +<title>Not aborting fetch for javascript:undefined navigation</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#navigate"> +<link rel="help" href="https://github.com/whatwg/html/issues/2590"> +<div id="log"></div> +<iframe src="support/iframe-and-links.html"></iframe> +<script> +async_test(test => { + onload = () => { + const child = document.querySelector('iframe').contentWindow; + child.document.querySelector("#slowLink").click(); + // The step below is in a timeout. The framed page can't communicate back mid-parse because that + // would involve running script, which makes that navigation "mature", and we need to do this + // before it matures. + test.step_timeout(() => { + child.document.querySelector("#javascriptUndefinedLink").click(); + child.document.querySelector("iframe").onload = test.step_func_done(() => { + assert_true(child.childLoaded, 'child.childLoaded'); + }); + }, 100); + }; +}); +</script> diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html new file mode 100644 index 00000000000..545b0988ba9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html @@ -0,0 +1,18 @@ +<!doctype html> + +<iframe name="iframe"></iframe> + +<!-- slow link's response is delayed by 1 second --> +<!-- https://wptserve.readthedocs.io/en/latest/pipes.html#trickle --> +<a target="iframe" href="set-child-loaded.html?pipe=trickle(d1)" id="slowLink">slow link</a> +<a target="iframe" href="javascript:'javascript:string <script> parent.javascriptStringDocLoaded(); </script>'" id="javascriptStringLink">javascript:string link</a> +<a target="iframe" href="javascript:undefined" id="javascriptUndefinedLink">javascript:undefined link</a> + +<script> +// set-child-loaded.html (the slow link) sets this to true. +window.childLoaded = false; + +// Do nothing when the javascript:string doc has loaded, if it's correctly targeted to the above iframe. +// However, if it replaces this document, it needs to fail the test (handled in the parent). +function javascriptStringDocLoaded() {} +</script> diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html new file mode 100644 index 00000000000..a4b34ad6e9d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html @@ -0,0 +1,5 @@ +<!doctype html> +set-child-loaded.html +<script> +parent.childLoaded = true; +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html b/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html index 0c4deb93ed6..4bcecf234cc 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html @@ -62,7 +62,7 @@ for (let prop of ["selectionStart", "selectionEnd"]) { for (let el of createTestElements(testValue)) { test(function() { - assert_equals(el.selectionStart, testValue.length); + assert_equals(el[prop], testValue.length); }, `Initial .value set on ${el.id} should set ${prop} to end of value`); } } diff --git a/tests/wpt/web-platform-tests/images/blue-png-cachable.py b/tests/wpt/web-platform-tests/images/blue-png-cachable.py new file mode 100644 index 00000000000..e87975343f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/images/blue-png-cachable.py @@ -0,0 +1,13 @@ +import os +import time + +def main(request, response): + """Serves the contents in blue.png but with a Cache-Control header. + + Emits a Cache-Control header with max-age set to 1h to allow the browser + cache the image. Used for testing behaviors involving caching logics. + """ + image_path = os.path.join(os.path.dirname(__file__), "blue.png") + response.headers.set("Cache-Control", "max-age=3600") + response.headers.set("Content-Type", "image/png") + response.content = open(image_path, mode='rb').read() diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html index 82138dda466..48aefd4a7af 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html @@ -6,24 +6,6 @@ <script src="resources/test-helpers.sub.js"></script> <body> <script> -// Registers, waits for activation, then unregisters on a dummy scope. -// -// This helper can be used in tests that assert that activation doesn't happen. -// It would not be sufficient to check the .waiting/.active properties once, -// since activation could be scheduled and just hasn't happened yet. Since this -// helper shows that activation of another registration completed, we can be -// sure that activation really will not happen. -function wait_for_activation_on_dummy_scope(t) { - var dummy_scope = 'resources/there/is/no/there/there'; - var registration; - return navigator.serviceWorker.register('resources/empty-worker.js', - { scope: dummy_scope }) - .then(r => { - registration = r; - return wait_for_state(t, registration.installing, 'activated'); - }) - .then(() => registration.unregister()); -} // Returns {registration, iframe}, where |registration| has an active and // waiting worker. The active worker controls |iframe| and has an inflight // message event that can be finished by calling diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html index d345982343f..e70de4d70b6 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html @@ -16,6 +16,7 @@ promise_test(t => { const scope_for_main = 'resources/' + scope_for_iframe; const script = 'resources/empty-worker.js'; let frame; + let resolvedCount = 0; return service_worker_unregister(t, scope_for_main) .then(() => { @@ -41,9 +42,23 @@ promise_test(t => { assert_equals(r.active.state, 'activated'); assert_equals(r.scope, normalizeURL(scope_for_main)); r.onupdatefound = () => { /* empty */ }; - return Promise.all([ - promise_rejects(t, 'InvalidStateError', r.unregister()), - promise_rejects(t, 'InvalidStateError', r.update())]); + + // We want to verify that unregister() and update() do not + // resolve on a detached registration. We can't check for + // an explicit rejection, though, because not all browsers + // fire rejection callbacks on detached promises. Instead + // we wait for a dummy scope to install, activate, and + // unregister before declaring that the promises did not + // resolve. + r.unregister().then(() => resolvedCount += 1, + () => {}); + r.update().then(() => resolvedCount += 1, + () => {}); + return wait_for_activation_on_dummy_scope(t); + }) + .then(() => { + assert_equals(resolvedCount, 0, + 'methods called on a detached registration should not resolve'); }) }, 'accessing a ServiceWorkerRegistration from a removed iframe'); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html new file mode 100644 index 00000000000..22ddddc3e2a --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>embed and object are not intercepted</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/test-helpers.sub.js?pipe=sub"></script> +<body> +<script> +let registration; + +const kScript = 'resources/embed-and-object-are-not-intercepted-worker.js'; +const kScope = 'resources/'; + +promise_test(t => { + return service_worker_unregister_and_register(t, kScript, kScope) + .then(registration => { + promise_test(() => { + return registration.unregister(); + }, 'restore global state'); + + return wait_for_state(t, registration.installing, 'activated'); + }) + }, 'initialize global state'); + +promise_test(t => { + let frame; + return with_iframe('resources/embed-is-not-intercepted-iframe.html') + .then(f => { + frame = f; + t.add_cleanup(() => { frame.remove(); }); + return frame.contentWindow.test_promise; + }) + .then(result => { + assert_equals(result, 'request for embedded content was not intercepted'); + }); + }, 'requests for EMBED elements should not be intercepted by service workers'); + +promise_test(t => { + let frame; + return with_iframe('resources/object-is-not-intercepted-iframe.html') + .then(f => { + frame = f; + t.add_cleanup(() => { frame.remove(); }); + return frame.contentWindow.test_promise; + }) + .then(result => { + assert_equals(result, 'request for embedded content was not intercepted'); + }); + }, 'requests for OBJECT elements should not be intercepted by service workers'); +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/multipart-image.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/multipart-image.https.html new file mode 100644 index 00000000000..9bdadff21fb --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/multipart-image.https.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<title>Tests for cross-origin multipart image returned by service worker</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/test-helpers.sub.js"></script> + +<script> +// This tests loading a multipart image via service worker. The service worker responds with +// an opaque or a non-opaque response. The content of opaque response should not be readable. + +const script = 'resources/multipart-image-worker.js'; +const scope = 'resources/multipart-image-iframe.html'; +let frame; + +function check_image_data(data) { + assert_equals(data[0], 255); + assert_equals(data[1], 0); + assert_equals(data[2], 0); + assert_equals(data[3], 255); +} + +promise_test(t => { + return service_worker_unregister_and_register(t, script, scope) + .then(registration => { + promise_test(() => { + if (frame) { + frame.remove(); + } + return registration.unregister(); + }, 'restore global state'); + + return wait_for_state(t, registration.installing, 'activated'); + }) + .then(() => with_iframe(scope)) + .then(f => { + frame = f; + }); + }, 'initialize global state'); + +promise_test(t => { + return frame.contentWindow.load_multipart_image('same-origin-multipart-image') + .then(img => frame.contentWindow.get_image_data(img)) + .then(img_data => { + check_image_data(img_data.data); + }); + }, 'same-origin multipart image via SW should be readable'); + +promise_test(t => { + return frame.contentWindow.load_multipart_image('cross-origin-multipart-image-with-cors-approved') + .then(img => frame.contentWindow.get_image_data(img)) + .then(img_data => { + check_image_data(img_data.data); + }); + }, 'cross-origin multipart image via SW with approved CORS should be readable'); + +promise_test(t => { + return frame.contentWindow.load_multipart_image('cross-origin-multipart-image-with-no-cors') + .then(img => { + assert_throws('SecurityError', () => frame.contentWindow.get_image_data(img)); + }); + }, 'cross-origin multipart image with no-cors via SW should not be readable'); + +promise_test(t => { + const promise = frame.contentWindow.load_multipart_image('cross-origin-multipart-image-with-cors-rejected'); + return promise_rejects(t, new DOMException('load failed', 'NetworkError'), promise); + }, 'cross-origin multipart image via SW with rejected CORS should fail to load'); +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js new file mode 100644 index 00000000000..7a2e874c286 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js @@ -0,0 +1,8 @@ +// This worker intercepts a request for EMBED/OBJECT and responds with a +// response that indicates that interception occurred. The tests expect +// that interception does not occur. +self.addEventListener('fetch', e => { + if (e.request.url.indexOf('embedded-content-from-server.html') != -1) { + e.respondWith(fetch('embedded-content-from-service-worker.html')); + } + }); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html new file mode 100644 index 00000000000..a168b29b76a --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>iframe for embed-and-object-are-not-intercepted test</title> +<body> +<script> +// The EMBED element will call this with the result about whether the EMBED +// request was intercepted by the service worker. +var report_result; + +// Our parent (the root frame of the test) will examine this to get the result. +var test_promise = new Promise(resolve => { + report_result = resolve; + }); +</script> + +<embed src="embedded-content-from-server.html"></embed> +</body> + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-server.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-server.html new file mode 100644 index 00000000000..ff50a9c7526 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-server.html @@ -0,0 +1,6 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>embed for embed-and-object-are-not-intercepted test</title> +<script> +window.parent.report_result('request for embedded content was not intercepted'); +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-service-worker.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-service-worker.html new file mode 100644 index 00000000000..2e2b9236082 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-service-worker.html @@ -0,0 +1,7 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>embed for embed-and-object-are-not-intercepted test</title> +<script> +window.parent.report_result('request for embedded content was intercepted by service worker'); +</script> + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-iframe.html new file mode 100644 index 00000000000..c59b95594ff --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-iframe.html @@ -0,0 +1,19 @@ +<script> +function load_multipart_image(src) { + return new Promise((resolve, reject) => { + const img = document.createElement('img'); + img.addEventListener('load', () => resolve(img)); + img.addEventListener('error', (e) => reject(new DOMException('load failed', 'NetworkError'))); + img.src = src; + }); +} + +function get_image_data(img) { + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + context.drawImage(img, 0, 0); + // When |img.src| is cross origin, this should throw a SecurityError. + const imageData = context.getImageData(0, 0, 1, 1); + return imageData; +} +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-worker.js new file mode 100644 index 00000000000..a38fe54d34f --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-worker.js @@ -0,0 +1,21 @@ +importScripts('/common/get-host-info.sub.js'); +importScripts('test-helpers.sub.js'); + +const host_info = get_host_info(); + +const multipart_image_path = base_path() + 'multipart-image.py'; +const sameorigin_url = host_info['HTTPS_ORIGIN'] + multipart_image_path; +const cross_origin_url = host_info['HTTPS_REMOTE_ORIGIN'] + multipart_image_path; + +self.addEventListener('fetch', event => { + const url = event.request.url; + if (url.indexOf('cross-origin-multipart-image-with-no-cors') >= 0) { + event.respondWith(fetch(cross_origin_url, {mode: 'no-cors'})); + } else if (url.indexOf('cross-origin-multipart-image-with-cors-rejected') >= 0) { + event.respondWith(fetch(cross_origin_url, {mode: 'cors'})); + } else if (url.indexOf('cross-origin-multipart-image-with-cors-approved') >= 0) { + event.respondWith(fetch(cross_origin_url + '?approvecors', {mode: 'cors'})); + } else if (url.indexOf('same-origin-multipart-image') >= 0) { + event.respondWith(fetch(sameorigin_url)); + } +}); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image.py new file mode 100644 index 00000000000..53b77aeb0e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image.py @@ -0,0 +1,23 @@ +# A request handler that serves a multipart image. + +import os + + +BOUNDARY = 'cutHere' + + +def create_part(path): + with open(path, 'rb') as f: + return 'Content-Type: image/png\r\n\r\n' + f.read() + '--%s' % BOUNDARY + + +def main(request, response): + content_type = 'multipart/x-mixed-replace; boundary=%s' % BOUNDARY + headers = [('Content-Type', content_type)] + if 'approvecors' in request.GET: + headers.append(('Access-Control-Allow-Origin', '*')) + + image_path = os.path.join(request.doc_root, 'images') + body = create_part(os.path.join(image_path, 'green-1x1.png')) + body = body + create_part(os.path.join(image_path, 'red-16x16.png')) + return headers, body diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/object-is-not-intercepted-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/object-is-not-intercepted-iframe.html new file mode 100644 index 00000000000..0aeb81951ed --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/object-is-not-intercepted-iframe.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>iframe for embed-and-object-are-not-intercepted test</title> +<body> +<script> +// The OBJECT element will call this with the result about whether the OBJECT +// request was intercepted by the service worker. +var report_result; + +// Our parent (the root frame of the test) will examine this to get the result. +var test_promise = new Promise(resolve => { + report_result = resolve; + }); +</script> + +<object data="embedded-content-from-server.html"></object> +</body> + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html index 155dbddb6d4..239fa733037 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html @@ -1,56 +1,63 @@ <script> function with_iframe(url) { - return new Promise(function(resolve) { - var frame = document.createElement('iframe'); - frame.src = url; - frame.onload = function() { resolve(frame); }; - document.body.appendChild(frame); - }); + return new Promise(resolve => { + let frame = document.createElement('iframe'); + frame.src = url; + frame.onload = () => { resolve(frame); }; + document.body.appendChild(frame); + }); } function with_sandboxed_iframe(url, sandbox) { - return new Promise(function(resolve) { - var frame = document.createElement('iframe'); - frame.sandbox = sandbox; - frame.src = url; - frame.onload = function() { resolve(frame); }; - document.body.appendChild(frame); - }); + return new Promise(resolve => { + let frame = document.createElement('iframe'); + frame.sandbox = sandbox; + frame.src = url; + frame.onload = () => { resolve(frame); }; + document.body.appendChild(frame); + }); } -function fetch_in_worker() { - return new Promise((resolve) => { - var blob = new Blob([ - "fetch('" + location.href + "_workerfetch', {mode: 'no-cors'})" + +function fetch_from_worker(url) { + return new Promise(resolve => { + let blob = new Blob([ + `fetch('${url}', {mode: 'no-cors'})` + " .then(() => { self.postMessage('OK'); });"]); - var url = URL.createObjectURL(blob); - var worker = new Worker(url); + let worker_url = URL.createObjectURL(blob); + let worker = new Worker(worker_url); worker.onmessage = resolve; }); } -window.onmessage = function (e) { - var id = e.data['id']; - fetch(location.href + "_fetch", {mode: 'no-cors'}) - .then(function() { - return fetch_in_worker(); - }) - .then(function() { - return with_iframe(location.href + "_iframe"); - }) - .then(function() { - return with_sandboxed_iframe(location.href + "_script", - "allow-scripts"); - }) - .then(function() { - return with_sandboxed_iframe(location.href + "_script-origin", - "allow-scripts allow-same-origin"); - }) - .then(function() { - window.top.postMessage({id: id, result: 'done'}, '*'); - }) - .catch(function(e) { - window.top.postMessage({id: id, result: 'error: ' + e.toString()}, '*'); - }); +function run_test(type) { + const base_path = location.href; + switch (type) { + case 'fetch': + return fetch(`${base_path}&test=fetch`, {mode: 'no-cors'}); + case 'fetch-from-worker': + return fetch_from_worker(`${base_path}&test=fetch-from-worker`); + case 'iframe': + return with_iframe(`${base_path}&test=iframe`); + case 'sandboxed-iframe': + return with_sandboxed_iframe(`${base_path}&test=sandboxed-iframe`, + "allow-scripts"); + case 'sandboxed-iframe-same-origin': + return with_sandboxed_iframe( + `${base_path}&test=sandboxed-iframe-same-origin`, + "allow-scripts allow-same-origin"); + default: + return Promise.reject(`Unknown type: ${type}`); + } +} + +window.onmessage = event => { + let id = event.data['id']; + run_test(event.data['type']) + .then(() => { + window.top.postMessage({id: id, result: 'done'}, '*'); + }) + .catch(e => { + window.top.postMessage({id: id, result: 'error: ' + e.toString()}, '*'); + }); }; </script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py new file mode 100644 index 00000000000..4d84839c813 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py @@ -0,0 +1,13 @@ +import os.path + +def main(request, response): + header = [('Content-Type', 'text/html')] + if 'test' in request.GET: + with open(os.path.join(os.path.dirname(__file__),'blank.html'), 'r') as f: + body = f.read() + return (header, body) + + with open(os.path.join(os.path.dirname(__file__), + 'sandboxed-iframe-fetch-event-iframe.html'), 'r') as f: + body = f.read() + return (header, body) diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js index ffa0abac34f..4035a8b19b9 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js @@ -10,6 +10,7 @@ self.addEventListener('message', function(event) { client_urls = client_urls.sort(); event.data.port.postMessage( {clients: client_urls, requests: requests}); + requests = []; })); }); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js index 38ec4ae9674..b99ed200f1a 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js @@ -257,3 +257,17 @@ function with_sandboxed_iframe(url, sandbox) { document.body.appendChild(frame); }); } + +// Registers, waits for activation, then unregisters on a dummy scope. +// +// This can be used to wait for a period of time needed to register, +// activate, and then unregister a service worker. When checking that +// certain behavior does *NOT* happen, this is preferable to using an +// arbitrary delay. +async function wait_for_activation_on_dummy_scope(t) { + const script = 'resources/empty-worker.js'; + const scope = 'resources/there/is/no/there/there?' + Date.now(); + let registration = await navigator.serviceWorker.register(script, { scope }); + await wait_for_state(t, registration.installing, 'activated'); + await registration.unregister(); +} diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html index 8b361bd25df..db012c2e9ad 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html @@ -7,210 +7,351 @@ <script> var lastCallbackId = 0; var callbacks = {}; -function postMessageAndWaitResult(frame) { +function doTest(frame, type) { return new Promise(function(resolve) { var id = ++lastCallbackId; callbacks[id] = resolve; - frame.contentWindow.postMessage({id:id}, '*'); + frame.contentWindow.postMessage({id: id, type: type}, '*'); + }); +} + +// Asks the service worker for data about requests and clients seen. The +// worker posts a message back with |data| where: +// |data.requests|: the requests the worker received FetchEvents for +// |data.clients|: the URLs of all the worker's clients +// The worker clears its data after responding. +function getResultsFromWorker(worker) { + return new Promise(resolve => { + let channel = new MessageChannel(); + channel.port1.onmessage = msg => { + resolve(msg.data); + }; + worker.postMessage({port: channel.port2}, [channel.port2]); }); } window.onmessage = function (e) { message = e.data; var id = message['id']; - var calback = callbacks[id]; + var callback = callbacks[id]; delete callbacks[id]; - calback(message['result']); + callback(message['result']); }; -promise_test(function(t) { - var SCOPE = 'resources/sandboxed-iframe-fetch-event-iframe.html'; - var SCRIPT = 'resources/sandboxed-iframe-fetch-event-worker.js'; - var frames = []; - var worker; - return service_worker_unregister_and_register(t, SCRIPT, SCOPE) - .then(function(registration) { - worker = registration.installing; - return wait_for_state(t, registration.installing, 'activated'); - }) - .then(function() { - return with_iframe(SCOPE + '?iframe'); - }) - .then(function(frame) { - frames.push(frame); - return postMessageAndWaitResult(frame); - }) - .then(function(result) { - assert_equals(result, 'done'); - return with_sandboxed_iframe(SCOPE + '?script', 'allow-scripts'); - }) - .then(function(frame) { - frames.push(frame); - return postMessageAndWaitResult(frame); - }) - .then(function(result) { - assert_equals(result, 'done'); - return with_sandboxed_iframe(SCOPE + '?script-origin', - 'allow-scripts allow-same-origin'); - }) - .then(function(frame) { - frames.push(frame); - return postMessageAndWaitResult(frame); - }) - .then(function(result) { - assert_equals(result, 'done'); - return new Promise(function(resolve) { - var channel = new MessageChannel(); - channel.port1.onmessage = function(msg) { - resolve(msg); - }; - worker.postMessage({port: channel.port2}, [channel.port2]); - }); - }) - .then(function(msg) { - for (var frame of frames) { - frame.remove(); - } - var expected_base_url = new URL(SCOPE, location.href).href; - var request_set = {}; - for (var request of msg.data.requests) { - request_set[request] = true; - } - assert_true( - expected_base_url + '?iframe' in request_set, - 'The request for normal iframe should be handled by SW.'); - assert_true( - expected_base_url + '?iframe_fetch' in request_set, - 'The fetch request from normal iframe should be handled by SW.'); - assert_true( - expected_base_url + '?iframe_workerfetch' in request_set, - 'The fetch request from worker in normal iframe should be ' + - 'handled by SW.'); - assert_true( - expected_base_url + '?iframe_iframe' in request_set, - 'The request for normal iframe inside normal iframe should be ' + - 'handled by SW.'); - assert_false( - expected_base_url + '?iframe_script' in request_set, - 'The request for sandboxed iframe with allow-scripts flag ' + - 'inside normal iframe should not be handled by SW.'); - assert_true( - expected_base_url + '?iframe_script-origin' in request_set, - 'The request for sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag inside normal iframe should be handled ' + - 'by SW.'); - assert_false( - expected_base_url + '?script' in request_set, - 'The request for sandboxed iframe with allow-scripts flag ' + - 'should not be handled by SW.'); - assert_false( - expected_base_url + '?script_fetch' in request_set, - 'The fetch request from sandboxed iframe with allow-scripts ' + - 'flag should not be handled by SW.'); - assert_false( - expected_base_url + '?script_workerfetch' in request_set, - 'The fetch request from worker from sandboxed iframe with ' + - 'allow-scripts flag should not be handled by SW.'); - assert_false( - expected_base_url + '?script_iframe' in request_set, - 'The request for normal iframe inside sandboxed iframe with ' + - 'allow-scripts flag should not be handled by SW.'); - assert_false( - expected_base_url + '?script_script' in request_set, - 'The request for sandboxed iframe with allow-scripts flag ' + - 'inside sandboxed iframe with allow-scripts flag should not be ' + - 'handled by SW.'); - assert_false( - expected_base_url + '?script_script-origin' in request_set, - 'The request for sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag inside sandboxed iframe with ' + - 'allow-scripts flag should not be handled by SW.'); - assert_true( - expected_base_url + '?script-origin' in request_set, - 'The request for sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag should be handled by SW.'); - assert_true( - expected_base_url + '?script-origin_fetch' in request_set, - 'The fetch request from sandboxed iframe with allow-scripts ' + - 'and allow-same-origin flag should be handled by SW.'); - assert_true( - expected_base_url + '?script-origin_workerfetch' in request_set, - 'The fetch request from worker in sandboxed iframe with ' + - 'allow-scripts and allow-same-origin flag should be handled ' + - 'by SW.'); - assert_true( - expected_base_url + '?script-origin_iframe' in request_set, - 'The request for normal iframe inside sandboxed iframe with ' + - 'allow-scripts and allow-same-origin flag should be handled by' + - 'SW.'); - assert_false( - expected_base_url + '?script-origin_script' in request_set, - 'The request for sandboxed iframe with allow-scripts flag ' + - 'inside sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag should be handled by SW.'); - assert_true( - expected_base_url + '?script-origin_script-origin' in request_set, - 'The request for sandboxed iframe with allow-scripts and' + - 'allow-same-origin flag inside sandboxed iframe with ' + - 'allow-scripts and allow-same-origin flag should be handled by' + - 'SW.'); - - var client_set = {}; - for (var client of msg.data.clients) { - client_set[client] = true; - } - assert_true( - expected_base_url + '?iframe' in client_set, - 'The normal iframe should be controlled by SW.'); - assert_true( - expected_base_url + '?iframe_iframe' in client_set, - 'The normal iframe inside normal iframe should be controlled ' + - 'by SW.'); - assert_false( - expected_base_url + '?iframe_script' in client_set, - 'The sandboxed iframe with allow-scripts flag inside normal ' + - 'iframe should not be controlled by SW.'); - assert_true( - expected_base_url + '?iframe_script-origin' in client_set, - 'The sandboxed iframe with allow-scripts and allow-same-origin' + - 'flag inside normal iframe should be controlled by SW.'); - assert_false( - expected_base_url + '?script' in client_set, - 'The sandboxed iframe with allow-scripts flag should not be ' + - 'controlled by SW.'); - assert_false( - expected_base_url + '?script_iframe' in client_set, - 'The normal iframe inside sandboxed iframe with allow-scripts' + - 'flag should not be controlled by SW.'); - assert_false( - expected_base_url + '?script_script' in client_set, - 'The sandboxed iframe with allow-scripts flag inside sandboxed ' + - 'iframe with allow-scripts flag should not be controlled by SW.'); - assert_false( - expected_base_url + '?script_script-origin' in client_set, - 'The sandboxed iframe with allow-scripts and allow-same-origin ' + - 'flag inside sandboxed iframe with allow-scripts flag should ' + - 'not be controlled by SW.'); - assert_true( - expected_base_url + '?script-origin' in client_set, - 'The sandboxed iframe with allow-scripts and allow-same-origin ' + - 'flag should be controlled by SW.'); - assert_true( - expected_base_url + '?script-origin_iframe' in client_set, - 'The normal iframe inside sandboxed iframe with allow-scripts ' + - 'and allow-same-origin flag should be controlled by SW.'); - assert_false( - expected_base_url + '?script-origin_script' in client_set, - 'The sandboxed iframe with allow-scripts flag inside sandboxed ' + - 'iframe with allow-scripts and allow-same-origin flag should ' + - 'be controlled by SW.'); - assert_true( - expected_base_url + '?script-origin_script-origin' in client_set, - 'The sandboxed iframe with allow-scripts and allow-same-origin ' + - 'flag inside sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag should be controlled by SW.'); - return service_worker_unregister_and_done(t, SCOPE); - }); - }, 'ServiceWorker FetchEvent for sandboxed iframe.'); +const SCOPE = 'resources/sandboxed-iframe-fetch-event-iframe.py'; +const SCRIPT = 'resources/sandboxed-iframe-fetch-event-worker.js'; +const expected_base_url = new URL(SCOPE, location.href); +// Service worker controlling |SCOPE|. +let worker; +// A normal iframe. +// This should be controlled by a service worker. +let normal_frame; +// An iframe created by <iframe sandbox='allow-scripts'>. +// This should NOT be controlled by a service worker. +let sandboxed_frame; +// An iframe created by <iframe sandbox='allow-scripts allow-same-origin'>. +// This should be controlled by a service worker. +let sandboxed_same_origin_frame; + +promise_test(t => { + return service_worker_unregister_and_register(t, SCRIPT, SCOPE) + .then(function(registration) { + add_completion_callback(() => registration.unregister()); + worker = registration.installing; + return wait_for_state(t, registration.installing, 'activated'); + }); +}, 'Prepare a service worker.'); + +promise_test(t => { + return with_iframe(SCOPE + '?iframe') + .then(f => { + normal_frame = f; + add_completion_callback(() => f.remove()); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1); + assert_equals(requests[0], expected_base_url + '?iframe'); + assert_true(data.clients.includes(expected_base_url + '?iframe')); + }); +}, 'Prepare a normal iframe.'); + +promise_test(t => { + return with_sandboxed_iframe(SCOPE + '?sandboxed-iframe', 'allow-scripts') + .then(f => { + sandboxed_frame = f; + add_completion_callback(() => f.remove()); + return getResultsFromWorker(worker); + }) + .then(data => { + assert_equals(data.requests.length, 0); + assert_false(data.clients.includes(expected_base_url + + '?sandboxed-iframe')); + }); +}, 'Prepare an iframe sandboxed by <iframe sandbox="allow-scripts">.'); + +promise_test(t => { + return with_sandboxed_iframe(SCOPE + '?sandboxed-iframe-same-origin', + 'allow-scripts allow-same-origin') + .then(f => { + sandboxed_same_origin_frame = f; + add_completion_callback(() => f.remove()); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1); + assert_equals(requests[0], + expected_base_url + '?sandboxed-iframe-same-origin'); + assert_true(data.clients.includes( + expected_base_url + '?sandboxed-iframe-same-origin')); + }) +}, 'Prepare an iframe sandboxed by ' + + '<iframe sandbox="allow-scripts allow-same-origin">.'); + +promise_test(t => { + let frame = normal_frame; + return doTest(frame, 'fetch') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1, + 'The fetch request should be handled by SW.'); + assert_equals(requests[0], frame.src + '&test=fetch'); + }); +}, 'Fetch request from a normal iframe'); + +promise_test(t => { + let frame = normal_frame; + return doTest(frame, 'fetch-from-worker') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1, + 'The fetch request should be handled by SW.'); + assert_equals(requests[0], frame.src + '&test=fetch-from-worker'); + }); +}, 'Fetch request from a worker in a normal iframe'); + +promise_test(t => { + let frame = normal_frame; + return doTest(frame, 'iframe') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1, + 'The request should be handled by SW.'); + assert_equals(requests[0], frame.src + '&test=iframe'); + assert_true(data.clients.includes(frame.src + '&test=iframe')); + + }); +}, 'Request for an iframe in the normal iframe'); + +promise_test(t => { + let frame = normal_frame; + return doTest(frame, 'sandboxed-iframe') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + assert_equals(data.requests.length, 0, + 'The request should NOT be handled by SW.'); + assert_false(data.clients.includes( + frame.src + '&test=sandboxed-iframe')); + }); +}, 'Request for an sandboxed iframe with allow-scripts flag in the normal ' + + 'iframe'); + +promise_test(t => { + let frame = normal_frame; + return doTest(frame, 'sandboxed-iframe-same-origin') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1, + 'The request should be handled by SW.'); + assert_equals(requests[0], + frame.src + '&test=sandboxed-iframe-same-origin'); + assert_true(data.clients.includes( + frame.src + '&test=sandboxed-iframe-same-origin')); + }); +}, 'Request for an sandboxed iframe with allow-scripts and ' + + 'allow-same-origin flag in the normal iframe'); + +promise_test(t => { + let frame = sandboxed_frame; + return doTest(frame, 'fetch') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + assert_equals(data.requests.length, 0, + 'The fetch request should NOT be handled by SW.'); + }); +}, 'Fetch request from iframe sandboxed by an attribute with allow-scripts ' + + 'flag'); + +promise_test(t => { + let frame = sandboxed_frame; + return doTest(frame, 'fetch-from-worker') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + assert_equals(data.requests.length, 0, + 'The fetch request should NOT be handled by SW.'); + }); +}, 'Fetch request from a worker in iframe sandboxed by an attribute with ' + + 'allow-scripts flag'); + +promise_test(t => { + let frame = sandboxed_frame; + return doTest(frame, 'iframe') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + assert_equals(data.requests.length, 0, + 'The request should NOT be handled by SW.'); + assert_false(data.clients.includes(frame.src + '&test=iframe')); + }); +}, 'Request for an iframe in the iframe sandboxed by an attribute with ' + + 'allow-scripts flag'); + +promise_test(t => { + let frame = sandboxed_frame; + return doTest(frame, 'sandboxed-iframe') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + assert_equals(data.requests.length, 0, + 'The request should NOT be handled by SW.'); + assert_false(data.clients.includes( + frame.src + '&test=sandboxed-iframe')); + }); +}, 'Request for an sandboxed iframe with allow-scripts flag in the iframe ' + + 'sandboxed by an attribute with allow-scripts flag'); + +promise_test(t => { + let frame = sandboxed_frame; + return doTest(frame, 'sandboxed-iframe-same-origin') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + assert_equals(data.requests.length, 0, + 'The request should NOT be handled by SW.'); + assert_false(data.clients.includes( + frame.src + '&test=sandboxed-iframe-same-origin')); + }); +}, 'Request for an sandboxed iframe with allow-scripts and ' + + 'allow-same-origin flag in the iframe sandboxed by an attribute with ' + + 'allow-scripts flag'); + +promise_test(t => { + let frame = sandboxed_same_origin_frame; + return doTest(frame, 'fetch') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1, + 'The fetch request should be handled by SW.'); + assert_equals(requests[0], frame.src + '&test=fetch'); + }); +}, 'Fetch request from iframe sandboxed by an attribute with allow-scripts ' + + 'and allow-same-origin flag'); + +promise_test(t => { + let frame = sandboxed_same_origin_frame; + return doTest(frame, 'fetch-from-worker') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1, + 'The fetch request should be handled by SW.'); + assert_equals(requests[0], + frame.src + '&test=fetch-from-worker'); + }); +}, 'Fetch request from a worker in iframe sandboxed by an attribute with ' + + 'allow-scripts and allow-same-origin flag'); + +promise_test(t => { + let frame = sandboxed_same_origin_frame; + return doTest(frame, 'iframe') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1, + 'The request should be handled by SW.'); + assert_equals(requests[0], frame.src + '&test=iframe'); + assert_true(data.clients.includes(frame.src + '&test=iframe')); + }); +}, 'Request for an iframe in the iframe sandboxed by an attribute with ' + + 'allow-scripts and allow-same-origin flag'); + +promise_test(t => { + let frame = sandboxed_same_origin_frame; + return doTest(frame, 'sandboxed-iframe') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + assert_equals(data.requests.length, 0, + 'The request should NOT be handled by SW.'); + assert_false(data.clients.includes( + frame.src + '&test=sandboxed-iframe')); + }); +}, 'Request for an sandboxed iframe with allow-scripts flag in the iframe ' + + 'sandboxed by attribute with allow-scripts and allow-same-origin flag'); + +promise_test(t => { + let frame = sandboxed_same_origin_frame; + return doTest(frame, 'sandboxed-iframe-same-origin') + .then(result => { + assert_equals(result, 'done'); + return getResultsFromWorker(worker); + }) + .then(data => { + let requests = data.requests; + assert_equals(requests.length, 1, + 'The request should be handled by SW.'); + assert_equals(requests[0], + frame.src + '&test=sandboxed-iframe-same-origin'); + assert_true(data.clients.includes( + frame.src + '&test=sandboxed-iframe-same-origin')); + }); +}, 'Request for an sandboxed iframe with allow-scripts and ' + + 'allow-same-origin flag in the iframe sandboxed by attribute with ' + + 'allow-scripts and allow-same-origin flag'); </script> </body> diff --git a/tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js b/tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js index a6d30fe747e..cf95c443275 100644 --- a/tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js +++ b/tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js @@ -428,4 +428,52 @@ promise_test(t => { }, 'Errors must be propagated forward: shutdown must not occur until the final write completes'); +promise_test(t => { + + const rs = recordingReadableStream(); + + let resolveWriteCalled; + const writeCalledPromise = new Promise(resolve => { + resolveWriteCalled = resolve; + }); + + let resolveWritePromise; + const ws = recordingWritableStream({ + write() { + resolveWriteCalled(); + + return new Promise(resolve => { + resolveWritePromise = resolve; + }); + } + }, new CountQueuingStrategy({ highWaterMark: 2 })); + + let pipeComplete = false; + const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws)).then(() => { + pipeComplete = true; + }); + + rs.controller.enqueue('a'); + rs.controller.enqueue('b'); + + return writeCalledPromise.then(() => flushAsyncEvents()).then(() => { + assert_array_equals(ws.events, ['write', 'a'], 'abort should not be called before the first write completes'); + assert_false(pipeComplete, 'the pipe should not complete while the first write is pending'); + + rs.controller.error(error1); + resolveWritePromise(); + return flushAsyncEvents(); + }).then(() => { + assert_array_equals(ws.events, ['write', 'a', 'write', 'b'], + 'abort should not be called before the second write completes'); + assert_false(pipeComplete, 'the pipe should not complete while the second write is pending'); + + resolveWritePromise(); + return pipePromise; + }).then(() => { + assert_array_equals(ws.events, ['write', 'a', 'write', 'b', 'abort', error1], 'sink abort should be called'); + }); + +}, 'Errors must be propagated forward: abort should not happen until all queued writes complete'); + done(); diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html new file mode 100644 index 00000000000..887e3343d21 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>construct-byob-request.js dedicated worker wrapper file</title> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +'use strict'; +fetch_tests_from_worker(new Worker('construct-byob-request.js')); +</script> diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.html new file mode 100644 index 00000000000..4e071e70c56 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>construct-byob-request.js browser context wrapper file</title> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script src="../resources/rs-utils.js"></script> + +<script src="construct-byob-request.js"></script> diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.js b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.js new file mode 100644 index 00000000000..29fdac5baa9 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.js @@ -0,0 +1,82 @@ +'use strict'; + +// Prior to whatwg/stream#870 it was possible to construct a ReadableStreamBYOBRequest directly. This made it possible +// to construct requests that were out-of-sync with the state of the ReadableStream. They could then be used to call +// internal operations, resulting in asserts or bad behaviour. This file contains regression tests for the change. + +if (self.importScripts) { + self.importScripts('../resources/rs-utils.js'); + self.importScripts('/resources/testharness.js'); +} + +function getRealByteStreamController() { + let controller; + new ReadableStream({ + start(c) { + controller = c; + }, + type: 'bytes' + }); + return controller; +} + +const ReadableByteStreamController = getRealByteStreamController().constructor; + +// Create an object pretending to have prototype |prototype|, of type |type|. |type| is one of "undefined", "null", +// "fake", or "real". "real" will call the realObjectCreator function to get a real instance of the object. +function createDummyObject(prototype, type, realObjectCreator) { + switch (type) { + case 'undefined': + return undefined; + + case 'null': + return null; + + case 'fake': + return Object.create(prototype); + + case 'real': + return realObjectCreator(); + } + + throw new Error('not reached'); +} + +const dummyTypes = ['undefined', 'null', 'fake', 'real']; + +function runTests(ReadableStreamBYOBRequest) { + for (const controllerType of dummyTypes) { + const controller = createDummyObject(ReadableByteStreamController.prototype, controllerType, + getRealByteStreamController); + for (const viewType of dummyTypes) { + const view = createDummyObject(Uint8Array.prototype, viewType, () => new Uint8Array(16)); + test(() => { + assert_throws(new TypeError(), () => new ReadableStreamBYOBRequest(controller, view), + 'constructor should throw'); + }, `ReadableStreamBYOBRequest constructor should throw when passed a ${controllerType} ` + + `ReadableByteStreamController and a ${viewType} view`); + } + } +} + +function getConstructorAndRunTests() { + let ReadableStreamBYOBRequest; + const rs = new ReadableStream({ + pull(controller) { + const byobRequest = controller.byobRequest; + ReadableStreamBYOBRequest = byobRequest.constructor; + byobRequest.respond(4); + }, + type: 'bytes' + }); + rs.getReader({ mode: 'byob' }).read(new Uint8Array(8)).then(() => { + runTests(ReadableStreamBYOBRequest); + done(); + }); +} + +// We can only get at the ReadableStreamBYOBRequest constructor asynchronously, so we need to make the test harness wait +// for us to explicitly tell it all our tests have run. +setup({ explicit_done: true }); + +getConstructorAndRunTests(); diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html new file mode 100644 index 00000000000..abf70cbf643 --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>construct-byob-request.js service worker wrapper file</title> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> + +<script> +'use strict'; +service_worker_test('construct-byob-request.js', 'Service worker test setup'); +</script> diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.sharedworker.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.sharedworker.html new file mode 100644 index 00000000000..6f7ef5ca59f --- /dev/null +++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.sharedworker.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>construct-byob-request.js shared worker wrapper file</title> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +'use strict'; +fetch_tests_from_worker(new SharedWorker('construct-byob-request.js')); +</script> diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html index 32de3b20d53..717f3863872 100644 --- a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html +++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html @@ -6,5 +6,6 @@ <script src="/resources/testharnessreport.js"></script> <script src="../resources/rs-utils.js"></script> +<script src="../resources/test-utils.js"></script> <script src="general.js"></script> diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js index edbe1c83f15..4207277d1a5 100644 --- a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js +++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js @@ -2,6 +2,7 @@ if (self.importScripts) { self.importScripts('../resources/rs-utils.js'); + self.importScripts('../resources/test-utils.js'); self.importScripts('/resources/testharness.js'); } @@ -1883,6 +1884,93 @@ promise_test(t => { 'errored in it'); promise_test(() => { + let byobRequest; + const rs = new ReadableStream({ + pull(controller) { + byobRequest = controller.byobRequest; + byobRequest.respond(4); + }, + type: 'bytes' + }); + const reader = rs.getReader({ mode: 'byob' }); + const view = new Uint8Array(16); + return reader.read(view).then(() => { + assert_throws(new TypeError(), () => byobRequest.respond(4), 'respond() should throw a TypeError'); + }); +}, 'calling respond() twice on the same byobRequest should throw'); + +promise_test(() => { + let byobRequest; + const newView = () => new Uint8Array(16); + const rs = new ReadableStream({ + pull(controller) { + byobRequest = controller.byobRequest; + byobRequest.respondWithNewView(newView()); + }, + type: 'bytes' + }); + const reader = rs.getReader({ mode: 'byob' }); + return reader.read(newView()).then(() => { + assert_throws(new TypeError(), () => byobRequest.respondWithNewView(newView()), + 'respondWithNewView() should throw a TypeError'); + }); +}, 'calling respondWithNewView() twice on the same byobRequest should throw'); + +promise_test(() => { + let byobRequest; + let resolvePullCalledPromise; + const pullCalledPromise = new Promise(resolve => { + resolvePullCalledPromise = resolve; + }); + let resolvePull; + const rs = new ReadableStream({ + pull(controller) { + byobRequest = controller.byobRequest; + resolvePullCalledPromise(); + return new Promise(resolve => { + resolvePull = resolve; + }); + }, + type: 'bytes' + }); + const reader = rs.getReader({ mode: 'byob' }); + const readPromise = reader.read(new Uint8Array(16)); + return pullCalledPromise.then(() => { + const cancelPromise = reader.cancel('meh'); + resolvePull(); + byobRequest.respond(0); + return Promise.all([readPromise, cancelPromise]).then(() => { + assert_throws(new TypeError(), () => byobRequest.respond(0), 'respond() should throw'); + }); + }); +}, 'calling respond(0) twice on the same byobRequest should throw even when closed'); + +promise_test(() => { + let resolvePullCalledPromise; + const pullCalledPromise = new Promise(resolve => { + resolvePullCalledPromise = resolve; + }); + let resolvePull; + const rs = new ReadableStream({ + pull() { + resolvePullCalledPromise(); + return new Promise(resolve => { + resolvePull = resolve; + }); + }, + type: 'bytes' + }); + const reader = rs.getReader({ mode: 'byob' }); + reader.read(new Uint8Array(16)); + return pullCalledPromise.then(() => { + resolvePull(); + return delay(0).then(() => { + assert_throws(new TypeError(), () => reader.releaseLock(), 'releaseLock() should throw'); + }); + }); +}, 'pull() resolving should not make releaseLock() possible'); + +promise_test(() => { // Tests https://github.com/whatwg/streams/issues/686 let controller; diff --git a/tests/wpt/web-platform-tests/tools/manifest/manifest.py b/tests/wpt/web-platform-tests/tools/manifest/manifest.py index e466e6ff56a..7adf49b64e5 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/manifest.py +++ b/tests/wpt/web-platform-tests/tools/manifest/manifest.py @@ -3,6 +3,7 @@ import os import re from collections import defaultdict from six import iteritems, itervalues, viewkeys, string_types +from tempfile import mkstemp from .item import ManualTest, WebdriverSpecTest, Stub, RefTestNode, RefTest, TestharnessTest, SupportFile, ConformanceCheckerTest, VisualTest from .log import get_logger @@ -232,6 +233,11 @@ def write(manifest, manifest_path): dir_name = os.path.dirname(manifest_path) if not os.path.exists(dir_name): os.makedirs(dir_name) - with open(manifest_path, "wb") as f: - json.dump(manifest.to_json(), f, sort_keys=True, indent=1, separators=(',', ': ')) - f.write("\n") + + fd, temp_manifest_path = mkstemp(dir=dir_name) + temp_manifest = open(temp_manifest_path, "wb") + json.dump(manifest.to_json(), temp_manifest, + sort_keys=True, indent=1, separators=(',', ': ')) + temp_manifest.write("\n") + os.rename(temp_manifest_path, manifest_path) + os.close(fd) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in b/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in index d3b530a500b..d36344f9668 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in +++ b/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in @@ -4,4 +4,3 @@ include wptrunner.default.ini include wptrunner/testharness_runner.html include wptrunner/*.js include wptrunner/executors/*.js -include wptrunner/config.json diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/setup.py b/tests/wpt/web-platform-tests/tools/wptrunner/setup.py index 148a1d2f8c1..63d3edde244 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/setup.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/setup.py @@ -50,7 +50,6 @@ setup(name=PACKAGE_NAME, "executors/reftest-wait.js", "testharnessreport.js", "testharness_runner.html", - "config.json", "wptrunner.default.ini", "browsers/sauce_setup/*", "prefs/*"]}, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py index 57e05278c0a..acec0efe572 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py @@ -117,6 +117,11 @@ def env_extras(**kwargs): def env_options(): + # The server host is set to 127.0.0.1 as Firefox is configured (through the + # network.dns.localDomains preference set below) to resolve the test + # domains to localhost without relying on the network stack. + # + # https://github.com/w3c/web-platform-tests/pull/9480 return {"host": "127.0.0.1", "external_host": "web-platform.test", "bind_hostname": "false", diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py index 42c83c5d24f..69ebc07a814 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py @@ -127,15 +127,29 @@ def get_tar(url, dest): class SauceConnect(): def __init__(self, **kwargs): - self.config = kwargs["config"] self.sauce_user = kwargs["sauce_user"] self.sauce_key = kwargs["sauce_key"] self.sauce_tunnel_id = kwargs["sauce_tunnel_id"] self.sauce_connect_binary = kwargs.get("sauce_connect_binary") self.sc_process = None self.temp_dir = None + self.env_config = None + + def __call__(self, env_options, env_config): + self.env_config = env_config + + return self + + def __enter__(self): + # Because this class implements the context manager protocol, it is + # possible for instances to be provided to the `with` statement + # directly. This class implements the callable protocol so that data + # which is not available during object initialization can be provided + # prior to this moment. Instances must be invoked in preparation for + # the context manager protocol, but this additional constraint is not + # itself part of the protocol. + assert self.env_config is not None, 'The instance has been invoked.' - def __enter__(self, options): if not self.sauce_connect_binary: self.temp_dir = tempfile.mkdtemp() get_tar("https://saucelabs.com/downloads/sc-4.4.9-linux.tar.gz", self.temp_dir) @@ -153,7 +167,7 @@ class SauceConnect(): "--metrics-address=0.0.0.0:9876", "--readyfile=./sauce_is_ready", "--tunnel-domains", - ",".join(self.config['domains'].values()) + ",".join(self.env_config['domains'].values()) ]) # Timeout config vars @@ -180,6 +194,7 @@ class SauceConnect(): raise SauceException("Unable to start Sauce Connect Proxy. Process exited with code %s", self.sc_process.returncode) def __exit__(self, exc_type, exc_val, exc_tb): + self.env_config = None self.sc_process.terminate() if self.temp_dir and os.path.exists(self.temp_dir): try: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py index 17fa59834fd..f16363199a3 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py @@ -54,7 +54,7 @@ def env_extras(**kwargs): def env_options(): return {"host": "127.0.0.1", "external_host": "web-platform.test", - "bind_hostname": "false", + "bind_hostname": False, "testharnessreport": "testharnessreport-servo.js", "supports_debugger": True} diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.json b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.json deleted file mode 100644 index d146424a0f0..00000000000 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.json +++ /dev/null @@ -1,7 +0,0 @@ -{"host": "%(host)s", - "ports":{"http":[8000, 8001], - "https":[8443], - "ws":[8888]}, - "check_subdomains":false, - "bind_hostname":%(bind_hostname)s, - "ssl":{}} diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py index 22b02a9e4ad..8ecbb4bb8e7 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py @@ -84,18 +84,29 @@ class TestEnvironment(object): self.cache_manager = multiprocessing.Manager() self.stash = serve.stash.StashServer() self.env_extras = env_extras + self.env_extras_cms = None def __enter__(self): self.stash.__enter__() self.ssl_env.__enter__() self.cache_manager.__enter__() - for cm in self.env_extras: - cm.__enter__(self.options) - self.setup_server_logging() + self.config = self.load_config() + self.setup_server_logging() ports = serve.get_ports(self.config, self.ssl_env) self.config = serve.normalise_config(self.config, ports) + + assert self.env_extras_cms is None, ( + "A TestEnvironment object cannot be nested") + + self.env_extras_cms = [] + + for env in self.env_extras: + cm = env(self.options, self.config) + cm.__enter__() + self.env_extras_cms.append(cm) + self.servers = serve.start(self.config, self.ssl_env, self.get_routes()) if self.options.get("supports_debugger") and self.debug_info and self.debug_info.interactive: @@ -108,8 +119,11 @@ class TestEnvironment(object): for scheme, servers in self.servers.iteritems(): for port, server in servers: server.kill() - for cm in self.env_extras: + for cm in self.env_extras_cms: cm.__exit__(exc_type, exc_val, exc_tb) + + self.env_extras_cms = None + self.cache_manager.__exit__(exc_type, exc_val, exc_tb) self.ssl_env.__exit__(exc_type, exc_val, exc_tb) self.stash.__exit__() @@ -122,15 +136,23 @@ class TestEnvironment(object): def load_config(self): default_config_path = os.path.join(serve_path(self.test_paths), "config.default.json") - local_config_path = os.path.join(here, "config.json") + local_config = { + "ports": { + "http": [8000, 8001], + "https": [8443], + "ws": [8888] + }, + "check_subdomains": False, + "bind_hostname": self.options["bind_hostname"], + "ssl": {} + } + + if "host" in self.options: + local_config["host"] = self.options["host"] with open(default_config_path) as f: default_config = json.load(f) - with open(local_config_path) as f: - data = f.read() - local_config = json.loads(data % self.options) - #TODO: allow non-default configuration for ssl local_config["external_host"] = self.options.get("external_host", None) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py index fdf1b1249e2..79fca428ceb 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py @@ -17,7 +17,10 @@ class FontInstaller(object): self.created_dir = False self.fonts = fonts - def __enter__(self, options=None): + def __call__(self, env_options=None, env_config=None): + return self + + def __enter__(self): for _, font_path in self.fonts.items(): font_name = font_path.split('/')[-1] install = getattr(self, 'install_%s_font' % SYSTEM, None) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py index 019b538ec1c..62c092533a8 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py @@ -20,15 +20,15 @@ def test_sauceconnect_success(): exists.return_value = True sauce_connect = sauce.SauceConnect( - config={ - "domains": {"": "example.net"} - }, sauce_user="aaa", sauce_key="bbb", sauce_tunnel_id="ccc", sauce_connect_binary="ddd") - sauce_connect.__enter__(None) + env_config = { + "domains": {"": "example.net"} + } + sauce_connect.__enter__(None, env_config) @pytest.mark.parametrize("readyfile,returncode", [ @@ -49,16 +49,16 @@ def test_sauceconnect_failure_exit(readyfile, returncode): exists.return_value = readyfile sauce_connect = sauce.SauceConnect( - config={ - "domains": {"": "example.net"} - }, sauce_user="aaa", sauce_key="bbb", sauce_tunnel_id="ccc", sauce_connect_binary="ddd") + env_config = { + "domains": {"": "example.net"} + } with pytest.raises(sauce.SauceException): - sauce_connect.__enter__(None) + sauce_connect.__enter__(None, env_config) # Given we appear to exit immediately with these mocks, sleep shouldn't be called sleep.assert_not_called() @@ -74,16 +74,16 @@ def test_sauceconnect_failure_never_ready(): exists.return_value = False sauce_connect = sauce.SauceConnect( - config={ - "domains": {"": "example.net"} - }, sauce_user="aaa", sauce_key="bbb", sauce_tunnel_id="ccc", sauce_connect_binary="ddd") + env_config = { + "domains": {"": "example.net"} + } with pytest.raises(sauce.SauceException): - sauce_connect.__enter__(None) + sauce_connect.__enter__(None, env_config) # We should sleep while waiting for it to create the readyfile sleep.assert_called() @@ -102,15 +102,15 @@ def test_sauceconnect_tunnel_domains(): exists.return_value = True sauce_connect = sauce.SauceConnect( - config={ - "domains": {"foo": "foo.bar.example.com", "": "example.net"} - }, sauce_user="aaa", sauce_key="bbb", sauce_tunnel_id="ccc", sauce_connect_binary="ddd") - sauce_connect.__enter__(None) + env_config = { + "domains": {"foo": "foo.bar.example.com", "": "example.net"} + } + sauce_connect.__enter__(None, env_config) Popen.assert_called_once() args, kwargs = Popen.call_args diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/combining-effects/applying-the-composited-result.html b/tests/wpt/web-platform-tests/web-animations/animation-model/combining-effects/applying-the-composited-result.html new file mode 100644 index 00000000000..336115e5779 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/combining-effects/applying-the-composited-result.html @@ -0,0 +1,29 @@ +<!doctype html> +<meta charset=utf-8> +<title>Applying the composited result</title> +<link rel="help" + href="https://drafts.csswg.org/web-animations-1/#applying-the-composited-result"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="../../testcommon.js"></script> +<div id="log"></div> +<script> +'use strict'; + +promise_test(async t => { + const div = createDiv(t); + div.style.marginLeft = '10px'; + const animation = div.animate( + { marginLeft: ['100px', '200px'] }, + 100 * MS_PER_SEC + ); + await animation.ready; + + animation.finish(); + + const marginLeft = parseFloat(getComputedStyle(div).marginLeft); + assert_equals(marginLeft, 10, 'The computed style should be reset'); +}, 'Finishing an animation that does not fill forwards causes its animation' + + ' style to be cleared'); + +</script> diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finish.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finish.html deleted file mode 100644 index 1f81867ebdd..00000000000 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finish.html +++ /dev/null @@ -1,246 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<title>Animation.finish</title> -<link rel="help" href="https://drafts.csswg.org/web-animations/#dom-animation-finish"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../../testcommon.js"></script> -<body> -<div id="log"></div> -<script> -'use strict'; - -const gKeyFrames = { 'marginLeft': ['100px', '200px'] }; - -test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - animation.playbackRate = 0; - - assert_throws({name: 'InvalidStateError'}, () => { - animation.finish(); - }); -}, 'Test exceptions when finishing non-running animation'); - -test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, - { duration : 100 * MS_PER_SEC, - iterations : Infinity }); - - assert_throws({name: 'InvalidStateError'}, () => { - animation.finish(); - }); -}, 'Test exceptions when finishing infinite animation'); - -test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - animation.finish(); - - assert_equals(animation.currentTime, 100 * MS_PER_SEC, - 'After finishing, the currentTime should be set to the end ' + - 'of the active duration'); -}, 'Test finishing of animation'); - -test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - // 1s past effect end - animation.currentTime = - animation.effect.getComputedTiming().endTime + 1 * MS_PER_SEC; - animation.finish(); - - assert_equals(animation.currentTime, 100 * MS_PER_SEC, - 'After finishing, the currentTime should be set back to the ' + - 'end of the active duration'); -}, 'Test finishing of animation with a current time past the effect end'); - -promise_test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - animation.currentTime = 100 * MS_PER_SEC; - return animation.finished.then(() => { - animation.playbackRate = -1; - animation.finish(); - - assert_equals(animation.currentTime, 0, - 'After finishing a reversed animation the currentTime ' + - 'should be set to zero'); - }); -}, 'Test finishing of reversed animation'); - -promise_test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - animation.currentTime = 100 * MS_PER_SEC; - return animation.finished.then(() => { - animation.playbackRate = -1; - animation.currentTime = -1000; - animation.finish(); - - assert_equals(animation.currentTime, 0, - 'After finishing a reversed animation the currentTime ' + - 'should be set back to zero'); - }); -}, 'Test finishing of reversed animation with a current time less than zero'); - -promise_test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - animation.pause(); - return animation.ready.then(() => { - animation.finish(); - - assert_equals(animation.playState, 'finished', - 'The play state of a paused animation should become ' + - '"finished" after finish() is called'); - assert_times_equal(animation.startTime, - animation.timeline.currentTime - 100 * MS_PER_SEC, - 'The start time of a paused animation should be set ' + - 'after calling finish()'); - }); -}, 'Test finish() while paused'); - -test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - animation.pause(); - // Update playbackRate so we can test that the calculated startTime - // respects it - animation.playbackRate = 2; - // While animation is still pause-pending call finish() - animation.finish(); - - assert_equals(animation.playState, 'finished', - 'The play state of a pause-pending animation should become ' + - '"finished" after finish() is called'); - assert_times_equal(animation.startTime, - animation.timeline.currentTime - 100 * MS_PER_SEC / 2, - 'The start time of a pause-pending animation should ' + - 'be set after calling finish()'); -}, 'Test finish() while pause-pending with positive playbackRate'); - -test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - animation.pause(); - animation.playbackRate = -2; - animation.finish(); - - assert_equals(animation.playState, 'finished', - 'The play state of a pause-pending animation should become ' + - '"finished" after finish() is called'); - assert_equals(animation.startTime, animation.timeline.currentTime, - 'The start time of a pause-pending animation should be ' + - 'set after calling finish()'); -}, 'Test finish() while pause-pending with negative playbackRate'); - -test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - animation.playbackRate = 0.5; - animation.finish(); - - assert_equals(animation.playState, 'finished', - 'The play state of a play-pending animation should become ' + - '"finished" after finish() is called'); - assert_times_equal(animation.startTime, - animation.timeline.currentTime - 100 * MS_PER_SEC / 0.5, - 'The start time of a play-pending animation should ' + - 'be set after calling finish()'); -}, 'Test finish() while play-pending'); - -// FIXME: Add a test for when we are play-pending without an active timeline. -// - In that case even after calling finish() we should still be pending but -// the current time should be updated - -promise_test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - return animation.ready.then(() => { - animation.pause(); - animation.play(); - // We are now in the unusual situation of being play-pending whilst having - // a resolved start time. Check that finish() still triggers a transition - // to the finished state immediately. - animation.finish(); - - assert_equals(animation.playState, 'finished', - 'After aborting a pause then calling finish() the play ' + - 'state of an animation should become "finished" immediately'); - }); -}, 'Test finish() during aborted pause'); - -promise_test(t => { - const div = createDiv(t); - div.style.marginLeft = '10px'; - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - return animation.ready.then(() => { - animation.finish(); - const marginLeft = parseFloat(getComputedStyle(div).marginLeft); - - assert_equals(marginLeft, 10, - 'The computed style should be reset when finish() is ' + - 'called'); - }); -}, 'Test resetting of computed style'); - -promise_test(t => { - const div = createDiv(t); - const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC); - let resolvedFinished = false; - animation.finished.then(() => { - resolvedFinished = true; - }); - - return animation.ready.then(() => { - animation.finish(); - }).then(() => { - assert_true(resolvedFinished, - 'Animation.finished should be resolved soon after ' + - 'Animation.finish()'); - }); -}, 'Test finish() resolves finished promise synchronously'); - -promise_test(t => { - const effect = new KeyframeEffectReadOnly(null, gKeyFrames, 100 * MS_PER_SEC); - const animation = new Animation(effect, document.timeline); - let resolvedFinished = false; - animation.finished.then(() => { - resolvedFinished = true; - }); - - return animation.ready.then(() => { - animation.finish(); - }).then(() => { - assert_true(resolvedFinished, - 'Animation.finished should be resolved soon after ' + - 'Animation.finish()'); - }); -}, 'Test finish() resolves finished promise synchronously with an animation ' + - 'without a target'); - -promise_test(t => { - const effect = new KeyframeEffectReadOnly(null, gKeyFrames, 100 * MS_PER_SEC); - const animation = new Animation(effect, document.timeline); - animation.play(); - - let resolvedFinished = false; - animation.finished.then(() => { - resolvedFinished = true; - }); - - return animation.ready.then(() => { - animation.currentTime = animation.effect.getComputedTiming().endTime - 1; - return waitForAnimationFrames(2); - }).then(() => { - assert_true(resolvedFinished, - 'Animation.finished should be resolved soon after ' + - 'Animation finishes normally'); - }); -}, 'Test normally finished animation resolves finished promise synchronously ' + - 'with an animation without a target'); - -</script> -</body> diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html index 30751460121..bf7c9f39beb 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html @@ -29,6 +29,7 @@ interface Animation : EventTarget { void finish (); void play (); void pause (); + void updatePlaybackRate (double playbackRate); void reverse (); }; </script> diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html deleted file mode 100644 index be5bf969498..00000000000 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html +++ /dev/null @@ -1,84 +0,0 @@ -<!DOCTYPE html> -<meta charset=utf-8> -<title>Animation.playbackRate</title> -<link rel="help" href="https://drafts.csswg.org/web-animations/#dom-animation-playbackrate"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="../../testcommon.js"></script> -<body> -<div id="log"></div> -<script> -'use strict'; - -function assert_playbackrate(animation, - previousAnimationCurrentTime, - previousTimelineCurrentTime, - description) { - const animationCurrentTimeDifference = - animation.currentTime - previousAnimationCurrentTime; - const timelineCurrentTimeDifference = - animation.timeline.currentTime - previousTimelineCurrentTime; - - assert_times_equal(animationCurrentTimeDifference, - timelineCurrentTimeDifference * animation.playbackRate, - description); -} - -promise_test(t => { - const div = createDiv(t); - const animation = div.animate(null, 100 * MS_PER_SEC); - return animation.ready.then(() => { - animation.currentTime = 7 * MS_PER_SEC; // ms - animation.playbackRate = 0.5; - - assert_equals(animation.currentTime, 7 * MS_PER_SEC, - 'Reducing Animation.playbackRate should not change the currentTime ' + - 'of a playing animation'); - animation.playbackRate = 2; - assert_equals(animation.currentTime, 7 * MS_PER_SEC, - 'Increasing Animation.playbackRate should not change the currentTime ' + - 'of a playing animation'); - }); -}, 'Test the initial effect of setting playbackRate on currentTime'); - -promise_test(t => { - const div = createDiv(t); - const animation = div.animate(null, 100 * MS_PER_SEC); - animation.playbackRate = 2; - let previousTimelineCurrentTime; - let previousAnimationCurrentTime; - return animation.ready.then(() => { - previousAnimationCurrentTime = animation.currentTime; - previousTimelineCurrentTime = animation.timeline.currentTime; - return waitForAnimationFrames(1); - }).then(() => { - assert_playbackrate(animation, - previousAnimationCurrentTime, - previousTimelineCurrentTime, - 'animation.currentTime should be 2 times faster than timeline.'); - }); -}, 'Test the effect of setting playbackRate on currentTime'); - -promise_test(t => { - const div = createDiv(t); - const animation = div.animate(null, 100 * MS_PER_SEC); - animation.playbackRate = 2; - let previousTimelineCurrentTime; - let previousAnimationCurrentTime; - return animation.ready.then(() => { - previousAnimationCurrentTime = animation.currentTime; - previousTimelineCurrentTime = animation.timeline.currentTime; - animation.playbackRate = 1; - return waitForAnimationFrames(1); - }).then(() => { - assert_equals(animation.playbackRate, 1, - 'sanity check: animation.playbackRate is still 1.'); - assert_playbackrate(animation, - previousAnimationCurrentTime, - previousTimelineCurrentTime, - 'animation.currentTime should be the same speed as timeline now.'); - }); -}, 'Test the effect of setting playbackRate while playing animation'); - -</script> -</body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html index 69644319a63..87b3ee06c26 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html @@ -26,29 +26,28 @@ promise_test(t => { }, 'A play-pending ready promise should be rejected when the animation is' + ' canceled'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); - return animation.ready.then(() => { - animation.pause(); - // Set up listeners on pause-pending ready promise - const retPromise = animation.ready.then(() => { - assert_unreached('ready promise was fulfilled'); - }).catch(err => { - assert_equals(err.name, 'AbortError', - 'ready promise is rejected with AbortError'); - }); - animation.cancel(); - return retPromise; - }); + await animation.ready; + + // Make it pause-pending + animation.pause(); + + // We need to store the original ready promise since cancel() will + // replace it + const originalPromise = animation.ready; + animation.cancel(); + + await promise_rejects(t, 'AbortError', originalPromise, + 'Cancel should abort ready promise'); }, 'A pause-pending ready promise should be rejected when the animation is' + ' canceled'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null); animation.cancel(); - return animation.ready.then(p => { - assert_equals(p, animation); - }); + const promiseResult = await animation.ready; + assert_equals(promiseResult, animation); }, 'When an animation is canceled, it should create a resolved Promise'); test(t => { diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html index 7fde3c4db5e..b479db9b93e 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html @@ -11,7 +11,208 @@ <script> 'use strict'; -promise_test(t => { +test(t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + animation.playbackRate = 0; + + assert_throws({name: 'InvalidStateError'}, () => { + animation.finish(); + }); +}, 'Finishing an animation with a zero playback rate throws'); + +test(t => { + const div = createDiv(t); + const animation = div.animate(null, + { duration : 100 * MS_PER_SEC, + iterations : Infinity }); + + assert_throws({name: 'InvalidStateError'}, () => { + animation.finish(); + }); +}, 'Finishing an infinite animation throws'); + +test(t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + animation.finish(); + + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC, + 'After finishing, the currentTime should be set to the end of the' + + ' active duration'); +}, 'Finishing an animation seeks to the end time'); + +test(t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + // 1s past effect end + animation.currentTime = + animation.effect.getComputedTiming().endTime + 1 * MS_PER_SEC; + animation.finish(); + + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC, + 'After finishing, the currentTime should be set back to the end of the' + + ' active duration'); +}, 'Finishing an animation with a current time past the effect end jumps' + + ' back to the end'); + +promise_test(async t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + animation.currentTime = 100 * MS_PER_SEC; + await animation.finished; + + animation.playbackRate = -1; + animation.finish(); + + assert_equals(animation.currentTime, 0, + 'After finishing a reversed animation the currentTime ' + + 'should be set to zero'); +}, 'Finishing a reversed animation jumps to zero time'); + +promise_test(async t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + animation.currentTime = 100 * MS_PER_SEC; + await animation.finished; + + animation.playbackRate = -1; + animation.currentTime = -1000; + animation.finish(); + + assert_equals(animation.currentTime, 0, + 'After finishing a reversed animation the currentTime ' + + 'should be set back to zero'); +}, 'Finishing a reversed animation with a current time less than zero' + + ' makes it jump back to zero'); + +promise_test(async t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + animation.pause(); + await animation.ready; + + animation.finish(); + + assert_equals(animation.playState, 'finished', + 'The play state of a paused animation should become ' + + '"finished"'); + assert_times_equal(animation.startTime, + animation.timeline.currentTime - 100 * MS_PER_SEC, + 'The start time of a paused animation should be set'); +}, 'Finishing a paused animation resolves the start time'); + +test(t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + // Update playbackRate so we can test that the calculated startTime + // respects it + animation.playbackRate = 2; + animation.pause(); + // While animation is still pause-pending call finish() + animation.finish(); + + assert_false(animation.pending); + assert_equals(animation.playState, 'finished', + 'The play state of a pause-pending animation should become ' + + '"finished"'); + assert_times_equal(animation.startTime, + animation.timeline.currentTime - 100 * MS_PER_SEC / 2, + 'The start time of a pause-pending animation should ' + + 'be set'); +}, 'Finishing a pause-pending animation resolves the pending task' + + ' immediately and update the start time'); + +test(t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + animation.playbackRate = -2; + animation.pause(); + animation.finish(); + + assert_false(animation.pending); + assert_equals(animation.playState, 'finished', + 'The play state of a pause-pending animation should become ' + + '"finished"'); + assert_times_equal(animation.startTime, animation.timeline.currentTime, + 'The start time of a pause-pending animation should be ' + + 'set'); +}, 'Finishing a pause-pending animation with negative playback rate' + + ' resolves the pending task immediately'); + +test(t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + animation.playbackRate = 0.5; + animation.finish(); + + assert_false(animation.pending); + assert_equals(animation.playState, 'finished', + 'The play state of a play-pending animation should become ' + + '"finished"'); + assert_times_equal(animation.startTime, + animation.timeline.currentTime - 100 * MS_PER_SEC / 0.5, + 'The start time of a play-pending animation should ' + + 'be set'); +}, 'Finishing an animation while play-pending resolves the pending' + + ' task immediately'); + +// FIXME: Add a test for when we are play-pending without an active timeline. +// - In that case even after calling finish() we should still be pending but +// the current time should be updated + +promise_test(async t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + await animation.ready; + + animation.pause(); + animation.play(); + // We are now in the unusual situation of being play-pending whilst having + // a resolved start time. Check that finish() still triggers a transition + // to the finished state immediately. + animation.finish(); + + assert_equals(animation.playState, 'finished', + 'After aborting a pause then finishing an animation its play ' + + 'state should become "finished" immediately'); +}, 'Finishing an animation during an aborted pause makes it finished' + + ' immediately'); + +promise_test(async t => { + const div = createDiv(t); + const animation = div.animate(null, 100 * MS_PER_SEC); + let resolvedFinished = false; + animation.finished.then(() => { + resolvedFinished = true; + }); + + await animation.ready; + + animation.finish(); + await Promise.resolve(); + + assert_true(resolvedFinished, 'finished promise should be resolved'); +}, 'Finishing an animation resolves the finished promise synchronously'); + +promise_test(async t => { + const effect = new KeyframeEffectReadOnly(null, null, 100 * MS_PER_SEC); + const animation = new Animation(effect, document.timeline); + let resolvedFinished = false; + animation.finished.then(() => { + resolvedFinished = true; + }); + + await animation.ready; + + animation.finish(); + await Promise.resolve(); + + assert_true(resolvedFinished, 'finished promise should be resolved'); +}, 'Finishing an animation without a target resolves the finished promise' + + ' synchronously'); + +promise_test(async t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); const promise = animation.ready; let readyResolved = false; @@ -19,13 +220,69 @@ promise_test(t => { animation.finish(); animation.ready.then(() => { readyResolved = true; }); - return animation.finished.then(p => { - assert_equals(p, animation); - assert_equals(animation.ready, promise); - assert_true(readyResolved); + const promiseResult = await animation.finished; + + assert_equals(promiseResult, animation); + assert_equals(animation.ready, promise); + assert_true(readyResolved); +}, 'A pending ready promise is resolved and not replaced when the animation' + + ' is finished'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + await animation.ready; + + animation.updatePlaybackRate(2); + assert_true(animation.pending); + + animation.finish(); + assert_false(animation.pending); + assert_equals(animation.playbackRate, 2); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); +}, 'A pending playback rate should be applied immediately when an animation' + + ' is finished'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + await animation.ready; + + animation.updatePlaybackRate(0); + + assert_throws('InvalidStateError', () => { + animation.finish(); + }); +}, 'An exception should be thrown if the effective playback rate is zero'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, { + duration: 100 * MS_PER_SEC, + iterations: Infinity }); -}, 'A pending ready promise should be resolved and not replaced when the' - + ' animation is finished'); + animation.currentTime = 50 * MS_PER_SEC; + animation.playbackRate = -1; + await animation.ready; + + animation.updatePlaybackRate(1); + + assert_throws('InvalidStateError', () => { + animation.finish(); + }); +}, 'An exception should be thrown when finishing if the effective playback rate' + + ' is positive and the target effect end is infinity'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, { + duration: 100 * MS_PER_SEC, + iterations: Infinity + }); + await animation.ready; + + animation.updatePlaybackRate(-1); + + animation.finish(); + // Should not have thrown +}, 'An exception is NOT thrown when finishing if the effective playback rate' + + ' is negative and the target effect end is infinity'); </script> </body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html index f04ec1a904b..c9aabba231a 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html @@ -11,17 +11,36 @@ <script> 'use strict'; -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); const promise = animation.ready; animation.pause(); - return promise.then(p => { - assert_equals(p, animation); - assert_equals(animation.ready, promise); - assert_false(animation.pending, 'No longer pause-pending'); - }); + + const promiseResult = await promise; + + assert_equals(promiseResult, animation); + assert_equals(animation.ready, promise); + assert_false(animation.pending, 'No longer pause-pending'); }, 'A pending ready promise should be resolved and not replaced when the' + ' animation is paused'); +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + // Let animation start roughly half-way through + animation.currentTime = 50 * MS_PER_SEC; + await animation.ready; + + // Go pause-pending and also set a pending playback rate + animation.pause(); + animation.updatePlaybackRate(0.5); + + await animation.ready; + // If the current time was updated using the new playback rate it will jump + // back to 25s but if we correctly used the old playback rate the current time + // will be >50s. + assert_greater_than(animation.currentTime, 50 * MS_PER_SEC); +}, 'A pause-pending animation maintains the current time when applying a' + + ' pending playback rate'); + </script> </body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html index 49b26382ec7..5d8fdeac6ec 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <meta charset=utf-8> <title>Play states</title> -<link rel="help" href="https://drafts.csswg.org/web-animations/#play-state"> +<link rel="help" href="https://drafts.csswg.org/web-animations/#play-states"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="../../testcommon.js"></script> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html index 10641920514..fb7020c49b8 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html @@ -45,15 +45,31 @@ test(t => { }, 'The ready promise should be replaced if the animation is not already' + ' pending'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); const promise = animation.ready; - return promise.then(p => { - assert_equals(p, animation); - assert_equals(animation.ready, promise); - }); + const promiseResult = await promise; + assert_equals(promiseResult, animation); + assert_equals(animation.ready, promise); }, 'A pending ready promise should be resolved and not replaced when the' + ' animation enters the running state'); +promise_test(async t => { + // Seek animation beyond target end + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.currentTime = -100 * MS_PER_SEC; + await animation.ready; + + // Set pending playback rate to the opposite direction + animation.updatePlaybackRate(-1); + assert_true(animation.pending); + assert_equals(animation.playbackRate, 1); + + // When we play, we should seek to the target end, NOT to zero (which + // is where we would seek to if we used the playbackRate of 1. + animation.play(); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); +}, 'A pending playback rate is used when determining auto-rewind behavior'); + </script> </body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html index 2d5d4e5d0f8..41302d95816 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html @@ -1,8 +1,8 @@ <!DOCTYPE html> <meta charset=utf-8> -<title>Reverse an animation</title> +<title>Reversing an animation</title> <link rel="help" - href="https://drafts.csswg.org/web-animations/#reverse-an-animation"> + href="https://drafts.csswg.org/web-animations/#reversing-an-animation-section"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="../../testcommon.js"></script> @@ -11,38 +11,43 @@ <script> 'use strict'; -promise_test(t => { +promise_test(async t => { const div = createDiv(t); const animation = div.animate({}, { duration: 100 * MS_PER_SEC, iterations: Infinity }); + await animation.ready; // Wait a frame because if currentTime is still 0 when we call // reverse(), it will throw (per spec). - return animation.ready.then(waitForAnimationFrames(1)).then(() => { - assert_greater_than_equal(animation.currentTime, 0, - 'currentTime expected to be greater than 0, one frame after starting'); - animation.currentTime = 50 * MS_PER_SEC; - const previousPlaybackRate = animation.playbackRate; - animation.reverse(); - assert_equals(animation.playbackRate, -previousPlaybackRate, - 'playbackRate should be inverted'); - }); + await waitForAnimationFrames(1); + + assert_greater_than_equal(animation.currentTime, 0, + 'currentTime expected to be greater than 0, one frame after starting'); + animation.currentTime = 50 * MS_PER_SEC; + const previousPlaybackRate = animation.playbackRate; + animation.reverse(); + assert_equals(animation.playbackRate, previousPlaybackRate, + 'Playback rate should not have changed'); + await animation.ready; + + assert_equals(animation.playbackRate, -previousPlaybackRate, + 'Playback rate should be inverted'); }, 'Reversing an animation inverts the playback rate'); -promise_test(t => { +promise_test(async t => { const div = createDiv(t); const animation = div.animate({}, { duration: 100 * MS_PER_SEC, iterations: Infinity }); animation.currentTime = 50 * MS_PER_SEC; animation.pause(); - return animation.ready.then(() => { - animation.reverse(); - return animation.ready; - }).then(() => { - assert_equals(animation.playState, 'running', - 'Animation.playState should be "running" after reverse()'); - }); + await animation.ready; + + animation.reverse(); + await animation.ready; + + assert_equals(animation.playState, 'running', + 'Animation.playState should be "running" after reverse()'); }, 'Reversing an animation plays a pausing animation'); test(t => { @@ -69,7 +74,7 @@ test(t => { 'The animation is still pending after calling reverse'); }, 'Reversing an animation does not cause it to leave the pending state'); -promise_test(t => { +promise_test(async t => { const div = createDiv(t); const animation = div.animate({}, { duration: 200 * MS_PER_SEC, delay: -100 * MS_PER_SEC }); @@ -78,10 +83,9 @@ promise_test(t => { animation.reverse(); - return Promise.resolve(() => { - assert_false(readyResolved, - 'ready promise should not have been resolved yet'); - }); + await Promise.resolve(); + assert_false(readyResolved, + 'ready promise should not have been resolved yet'); }, 'Reversing an animation does not cause it to resolve the ready promise'); test(t => { @@ -149,13 +153,16 @@ test(t => { }, 'Reversing an animation when playbackRate > 0 and currentTime < 0 ' + 'and the target effect end is positive infinity should throw an exception'); -test(t => { +promise_test(async t => { const animation = createDiv(t).animate({}, { duration: 100 * MS_PER_SEC, iterations: Infinity }); animation.currentTime = -200 * MS_PER_SEC; try { animation.reverse(); } catch(e) { } + assert_equals(animation.playbackRate, 1, 'playbackRate is unchanged'); + + await animation.ready; assert_equals(animation.playbackRate, 1, 'playbackRate remains unchanged'); }, 'When reversing throws an exception, the playback rate remains unchanged'); @@ -191,18 +198,18 @@ test(t => { 'and the target effect end is positive infinity should make it play ' + 'from the start'); -test(t => { +promise_test(async t => { const div = createDiv(t); const animation = div.animate({}, 100 * MS_PER_SEC); animation.playbackRate = 0; animation.currentTime = 50 * MS_PER_SEC; animation.reverse(); + await animation.ready; assert_equals(animation.playbackRate, 0, 'reverse() should preserve playbackRate if the playbackRate == 0'); assert_equals(animation.currentTime, 50 * MS_PER_SEC, 'reverse() should not affect the currentTime if the playbackRate == 0'); - t.done(); }, 'Reversing when when playbackRate == 0 should preserve the current ' + 'time and playback rate'); @@ -215,5 +222,33 @@ test(t => { }, 'Reversing an animation without an active timeline throws an ' + 'InvalidStateError'); +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + await animation.ready; + + animation.updatePlaybackRate(2); + animation.reverse(); + + await animation.ready; + assert_equals(animation.playbackRate, -2); +}, 'Reversing should use the negative pending playback rate'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, { + duration: 100 * MS_PER_SEC, + iterations: Infinity, + }); + animation.currentTime = -200 * MS_PER_SEC; + await animation.ready; + + animation.updatePlaybackRate(2); + assert_throws('InvalidStateError', () => { animation.reverse(); }); + assert_equals(animation.playbackRate, 1); + + await animation.ready; + assert_equals(animation.playbackRate, 2); +}, 'When reversing fails, it should restore any previous pending playback' + + ' rate'); + </script> </body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html new file mode 100644 index 00000000000..41e9776c136 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html @@ -0,0 +1,142 @@ +<!doctype html> +<meta charset=utf-8> +<title>Seamlessly updating the playback rate of an animation</title> +<link rel="help" + href="https://drafts.csswg.org/web-animations-1/#seamlessly-updating-the-playback-rate-of-an-animation"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../testcommon.js"></script> +<body> +<div id="log"></div> +<script> +'use strict'; + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + await animation.ready; + + animation.currentTime = 50 * MS_PER_SEC; + + animation.updatePlaybackRate(0.5); + await animation.ready; + // Since the animation is in motion (and we want to test it while it is in + // motion!) we can't assert that the current time == 50s but we can check + // that the current time is NOT re-calculated by simply substituting in the + // new playback rate (i.e. without adjusting the start time). If that were + // the case the currentTime would jump to 25s. So we just test the currentTime + // hasn't gone backwards. + assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC, + 'Reducing the playback rate should not change the current time ' + + 'of a playing animation'); + + animation.updatePlaybackRate(2); + await animation.ready; + // Likewise, we test here that the current time does not jump to 100s as it + // would if we naively applied a playbackRate of 2 without adjusting the + // startTime. + assert_less_than(animation.currentTime, 100 * MS_PER_SEC, + 'Increasing the playback rate should not change the current time ' + + 'of a playing animation'); +}, 'Updating the playback rate maintains the current time'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + await animation.ready; + + assert_false(animation.pending); + animation.updatePlaybackRate(2); + assert_true(animation.pending); +}, 'Updating the playback rate while running makes the animation pending'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.currentTime = 50 * MS_PER_SEC; + assert_true(animation.pending); + + animation.updatePlaybackRate(0.5); + + // Check that the hold time is updated as expected + assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC); + + await animation.ready; + + // As above, check that the currentTime is not calculated by simply + // substituting in the updated playbackRate without updating the startTime. + assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC, + 'Reducing the playback rate should not change the current time ' + + 'of a play-pending animation'); +}, 'Updating the playback rate on a play-pending animation maintains' + + ' the current time'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.currentTime = 50 * MS_PER_SEC; + await animation.ready; + + animation.pause(); + animation.updatePlaybackRate(0.5); + + assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC); +}, 'Updating the playback rate on a pause-pending animation maintains' + + ' the current time'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + + animation.updatePlaybackRate(2); + animation.updatePlaybackRate(3); + animation.updatePlaybackRate(4); + + assert_equals(animation.playbackRate, 1); + await animation.ready; + + assert_equals(animation.playbackRate, 4); +}, 'If a pending playback rate is set multiple times, the latest wins'); + +test(t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.cancel(); + + animation.updatePlaybackRate(2); + assert_equals(animation.playbackRate, 2); + assert_false(animation.pending); +}, 'In the idle state, the playback rate is applied immediately'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.pause(); + await animation.ready; + + animation.updatePlaybackRate(2); + assert_equals(animation.playbackRate, 2); + assert_false(animation.pending); +}, 'In the paused state, the playback rate is applied immediately'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.finish(); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); + assert_false(animation.pending); + + animation.updatePlaybackRate(2); + assert_equals(animation.playbackRate, 2); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); + assert_false(animation.pending); +}, 'Updating the playback rate on a finished animation maintains' + + ' the current time'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.finish(); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); + assert_false(animation.pending); + + animation.updatePlaybackRate(0); + assert_equals(animation.playbackRate, 0); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); + assert_false(animation.pending); +}, 'Updating the playback rate to zero on a finished animation maintains' + + ' the current time'); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html new file mode 100644 index 00000000000..04589ffa001 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html @@ -0,0 +1,38 @@ +<!doctype html> +<meta charset=utf-8> +<title>Setting the current time of an animation</title> +<link rel="help" + href="https://drafts.csswg.org/web-animations-1/#setting-the-current-time-of-an-animation"> +<script src='/resources/testharness.js'></script> +<script src='/resources/testharnessreport.js'></script> +<script src='../../testcommon.js'></script> +<body> +<div id='log'></div> +<script> +'use strict'; + +promise_test(async t => { + const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); + await anim.ready; + anim.pause(); + + // We should be pause-pending now + assert_true(anim.pending); + assert_equals(anim.playState, 'paused'); + + // Apply a pending playback rate + anim.updatePlaybackRate(2); + assert_equals(anim.playbackRate, 1); + + // Setting the current time should apply the pending playback rate + anim.currentTime = 50 * MS_PER_SEC; + assert_equals(anim.playbackRate, 2); + assert_false(anim.pending); + + // Sanity check that the current time is preserved + assert_time_equals_literal(anim.currentTime, 50 * MS_PER_SEC); +}, 'Setting the current time of a pausing animation applies a pending playback' + + ' rate'); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html new file mode 100644 index 00000000000..9d07d53df46 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html @@ -0,0 +1,61 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Setting the playback rate of an animation</title> +<link rel="help" href="https://drafts.csswg.org/web-animations/#setting-the-playback-rate-of-an-animation"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../testcommon.js"></script> +<body> +<div id="log"></div> +<script> +'use strict'; + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.playbackRate = 2; + await animation.ready; + + const previousAnimationCurrentTime = animation.currentTime; + const previousTimelineCurrentTime = animation.timeline.currentTime; + + await waitForAnimationFrames(1); + + const animationCurrentTimeDifference = + animation.currentTime - previousAnimationCurrentTime; + const timelineCurrentTimeDifference = + animation.timeline.currentTime - previousTimelineCurrentTime; + + assert_times_equal( + animationCurrentTimeDifference, + timelineCurrentTimeDifference * animation.playbackRate, + 'The current time should increase two times faster than timeline' + ); +}, 'The playback rate affects the rate of progress of the current time'); + +test(t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.currentTime = 50 * MS_PER_SEC; + animation.playbackRate = 2; + assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC); +}, 'Setting the playback rate while play-pending preserves the current time'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.currentTime = 50 * MS_PER_SEC; + await animation.ready; + animation.playbackRate = 2; + assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC); + assert_less_than(animation.currentTime, 100 * MS_PER_SEC); +}, 'Setting the playback rate while playing preserves the current time'); + +promise_test(async t => { + const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); + animation.currentTime = 50 * MS_PER_SEC; + animation.updatePlaybackRate(2); + animation.playbackRate = 1; + await animation.ready; + assert_equals(animation.playbackRate, 1); +}, 'Setting the playback rate should clear any pending playback rate'); + +</script> +</body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html index d2a311d4dd4..2c4922bd135 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <meta charset=utf-8> -<title>Set the animation start time</title> -<link rel="help" href="https://drafts.csswg.org/web-animations/#set-the-animation-start-time"> +<title>Setting the start time of an animation</title> +<link rel="help" href="https://drafts.csswg.org/web-animations/#setting-the-start-time-of-an-animation"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="../../testcommon.js"></script> @@ -112,7 +112,7 @@ test(t => { + ' start time'); }, 'Setting an unresolved start time sets the hold time'); -promise_test(t => { +promise_test(async t => { const animation = new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), document.timeline); @@ -135,13 +135,12 @@ promise_test(t => { // If we schedule another microtask then it should run immediately after // the ready promise resolution microtask. - return Promise.resolve().then(() => { - assert_true(readyPromiseCallbackCalled, - 'Ready promise callback called after setting startTime'); - }); + await Promise.resolve(); + assert_true(readyPromiseCallbackCalled, + 'Ready promise callback called after setting startTime'); }, 'Setting the start time resolves a pending ready promise'); -promise_test(t => { +promise_test(async t => { const animation = new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), document.timeline); @@ -163,13 +162,12 @@ promise_test(t => { assert_false(readyPromiseCallbackCalled, 'Ready promise callback is not called synchronously'); - return Promise.resolve().then(() => { - assert_true(readyPromiseCallbackCalled, - 'Ready promise callback called after setting startTime'); - }); + await Promise.resolve(); + assert_true(readyPromiseCallbackCalled, + 'Ready promise callback called after setting startTime'); }, 'Setting the start time resolves a pending pause task'); -promise_test(t => { +promise_test(async t => { const animation = new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), document.timeline); @@ -190,12 +188,60 @@ promise_test(t => { // Furthermore, that time should persist if we have correctly updated // the hold time const finishedCurrentTime = animation.currentTime; - return waitForAnimationFrames(1).then(() => { - assert_equals(animation.currentTime, finishedCurrentTime, - 'Current time does not change after seeking past the effect' - + ' end time by setting the current time'); - }); + await waitForAnimationFrames(1); + assert_equals(animation.currentTime, finishedCurrentTime, + 'Current time does not change after seeking past the effect' + + ' end time by setting the current time'); }, 'Setting the start time updates the finished state'); +promise_test(async t => { + const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); + + // We should be play-pending now + assert_true(anim.pending); + assert_equals(anim.playState, 'running'); + + // Apply a pending playback rate + anim.updatePlaybackRate(2); + assert_equals(anim.playbackRate, 1); + assert_true(anim.pending); + + // Setting the start time should apply the pending playback rate + anim.startTime = anim.timeline.currentTime - 25 * MS_PER_SEC; + assert_equals(anim.playbackRate, 2); + assert_false(anim.pending); + + // Sanity check that the start time is preserved and current time is + // calculated using the new playback rate + assert_times_equal(anim.startTime, + anim.timeline.currentTime - 25 * MS_PER_SEC); + assert_time_equals_literal(anim.currentTime, 50 * MS_PER_SEC); +}, 'Setting the start time of a play-pending animation applies a pending playback rate'); + +promise_test(async t => { + const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); + await anim.ready; + + // We should be running now + assert_false(anim.pending); + assert_equals(anim.playState, 'running'); + + // Apply a pending playback rate + anim.updatePlaybackRate(2); + assert_equals(anim.playbackRate, 1); + assert_true(anim.pending); + + // Setting the start time should apply the pending playback rate + anim.startTime = anim.timeline.currentTime - 25 * MS_PER_SEC; + assert_equals(anim.playbackRate, 2); + assert_false(anim.pending); + + // Sanity check that the start time is preserved and current time is + // calculated using the new playback rate + assert_times_equal(anim.startTime, + anim.timeline.currentTime - 25 * MS_PER_SEC); + assert_time_equals_literal(anim.currentTime, 50 * MS_PER_SEC); +}, 'Setting the start time of a playing animation applies a pending playback rate'); + </script> </body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html index b416bda5568..184804d6702 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html @@ -1,6 +1,6 @@ <!DOCTYPE html> <meta charset=utf-8> -<title>Setting the target effect</title> +<title>Setting the target effect of an animation</title> <link rel='help' href='https://drafts.csswg.org/web-animations/#setting-the-target-effect'> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> @@ -31,7 +31,7 @@ promise_test(t => { }, 'If new effect is null and old effect is not null, we reset the pending ' + 'tasks and ready promise is rejected'); -promise_test(t => { +promise_test(async t => { const anim = new Animation(); anim.pause(); assert_true(anim.pending); @@ -40,15 +40,14 @@ promise_test(t => { { marginLeft: [ '0px', '100px' ] }, 100 * MS_PER_SEC); assert_true(anim.pending); + await anim.ready; - return anim.ready.then(() => { - assert_false(anim.pending); - assert_equals(anim.playState, 'paused'); - }); + assert_false(anim.pending); + assert_equals(anim.playState, 'paused'); }, 'If animation has a pending pause task, reschedule that task to run ' + 'as soon as animation is ready.'); -promise_test(t => { +promise_test(async t => { const anim = new Animation(); anim.play(); assert_true(anim.pending); @@ -57,24 +56,23 @@ promise_test(t => { { marginLeft: [ '0px', '100px' ] }, 100 * MS_PER_SEC); assert_true(anim.pending); + await anim.ready; - return anim.ready.then(() => { - assert_false(anim.pending); - assert_equals(anim.playState, 'running'); - }); + assert_false(anim.pending); + assert_equals(anim.playState, 'running'); }, 'If animation has a pending play task, reschedule that task to run ' + 'as soon as animation is ready to play new effect.'); -promise_test(t => { +promise_test(async t => { const animA = createDiv(t).animate({ marginLeft: [ '0px', '100px' ] }, 100 * MS_PER_SEC); const animB = new Animation(); - return animA.ready.then(() => { - animB.effect = animA.effect; - assert_equals(animA.effect, null); - assert_equals(animA.playState, 'finished'); - }); + await animA.ready; + + animB.effect = animA.effect; + assert_equals(animA.effect, null); + assert_equals(animA.playState, 'finished'); }, 'When setting the effect of an animation to the effect of an existing ' + 'animation, the existing animation\'s target effect should be set to null.'); @@ -95,5 +93,15 @@ test(t => { 'existing animation, the target effect\'s timing is updated to reflect ' + 'the current time of the new animation.'); +test(t => { + const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); + anim.updatePlaybackRate(2); + assert_equals(anim.playbackRate, 1); + + anim.effect = null; + assert_equals(anim.playbackRate, 2); +}, 'Setting the target effect to null causes a pending playback rate to be' + + ' applied'); + </script> </body> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html index 24f201d550c..dd861750395 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html @@ -1,6 +1,6 @@ <!DOCTYPE html> <meta charset=utf-8> -<title>Setting the timeline</title> +<title>Setting the timeline of an animation</title> <link rel="help" href="https://drafts.csswg.org/web-animations/#setting-the-timeline"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> @@ -81,7 +81,7 @@ test(t => { }, 'After setting timeline on an idle animation with a sufficiently ancient' + ' start time it is finished'); -promise_test(t => { +promise_test(async t => { const animation = new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), null); @@ -94,14 +94,13 @@ promise_test(t => { assert_true(animation.pending && animation.playState === 'running', 'Animation is still play-pending after setting timeline'); - return animation.ready.then(() => { - assert_true(!animation.pending && animation.playState === 'running', - 'Animation plays after it finishes pending'); - }); + await animation.ready; + assert_true(!animation.pending && animation.playState === 'running', + 'Animation plays after it finishes pending'); }, 'After setting timeline on a play-pending animation it begins playing' + ' after pending'); -promise_test(t => { +promise_test(async t => { const animation = new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), null); @@ -116,10 +115,9 @@ promise_test(t => { assert_true(animation.pending && animation.playState === 'paused', 'Animation is still pause-pending after setting timeline'); - return animation.ready.then(() => { - assert_true(!animation.pending && animation.playState === 'paused', - 'Animation pauses after it finishes pending'); - }); + await animation.ready; + assert_true(!animation.pending && animation.playState === 'paused', + 'Animation pauses after it finishes pending'); }, 'After setting timeline on a pause-pending animation it becomes paused' + ' after pending'); @@ -193,7 +191,7 @@ test(t => { assert_true(animation.pending && animation.playState === 'running'); }, 'After clearing timeline on play-pending animation it is still pending'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); assert_true(animation.pending && animation.playState === 'running'); @@ -201,9 +199,8 @@ promise_test(t => { animation.timeline = document.timeline; assert_true(animation.pending && animation.playState === 'running'); - return animation.ready.then(() => { - assert_true(!animation.pending && animation.playState === 'running'); - }); + await animation.ready; + assert_true(!animation.pending && animation.playState === 'running'); }, 'After clearing and re-setting timeline on play-pending animation it' + ' begins to play'); @@ -220,7 +217,7 @@ test(t => { assert_true(animation.pending && animation.playState === 'paused'); }, 'After clearing timeline on a pause-pending animation it is still pending'); -promise_test(t => { +promise_test(async t => { const animation = new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), document.timeline); @@ -232,13 +229,12 @@ promise_test(t => { animation.timeline = document.timeline; assert_true(animation.pending && animation.playState === 'paused'); - return animation.ready.then(() => { - assert_true(!animation.pending && animation.playState === 'paused'); - }); + await animation.ready; + assert_true(!animation.pending && animation.playState === 'paused'); }, 'After clearing and re-setting timeline on a pause-pending animation it' + ' completes pausing'); -promise_test(t => { +promise_test(async t => { const animation = new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), document.timeline); @@ -250,9 +246,8 @@ promise_test(t => { animation.timeline = null; animation.timeline = document.timeline; - return animation.ready.then(() => { - assert_times_equal(animation.startTime, initialStartTime); - }); + await animation.ready; + assert_times_equal(animation.startTime, initialStartTime); }, 'After clearing and re-setting timeline on an animation in the middle of' + ' an aborted pause, it continues playing using the same start time'); diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/the-current-time-of-an-animation.html index 08f90d9f0c1..a0e1a111fd4 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/the-current-time-of-an-animation.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <meta charset=utf-8> -<title>Current time</title> -<link rel="help" href="https://drafts.csswg.org/web-animations/#current-time"> +<title>The current time of an animation</title> +<link rel="help" href="https://drafts.csswg.org/web-animations/#the-current-time-of-an-animation"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="../../testcommon.js"></script> @@ -21,14 +21,13 @@ test(t => { 'state'); }, 'The current time returns the hold time when set'); -promise_test(t => { +promise_test(async t => { const animation = new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), null); - return animation.ready.then(() => { - assert_equals(animation.currentTime, null); - }); + await animation.ready; + assert_equals(animation.currentTime, null); }, 'The current time is unresolved when there is no associated timeline ' + '(and no hold time is set)'); @@ -62,14 +61,13 @@ test(t => { }, 'The current time is calculated from the timeline time, start time and ' + 'playback rate'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); animation.playbackRate = 0; - return animation.ready.then(() => waitForAnimationFrames(1)) - .then(() => { - assert_time_equals_literal(animation.currentTime, 0); - }); + await animation.ready; + await waitForAnimationFrames(1); + assert_time_equals_literal(animation.currentTime, 0); }, 'The current time does not progress if playback rate is 0'); </script> diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html index 034cd6ee683..7059423b363 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html @@ -20,32 +20,33 @@ // (Also the start time is resolved and there is pending task) // Did seek = false -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); // Here and in the following tests we wait until ready resolves as // otherwise we don't have a resolved start time. We test the case // where the start time is unresolved in a subsequent test. - return anim.ready.then(() => { - // Seek to 1ms before the target end and then wait 1ms - anim.currentTime = 100 * MS_PER_SEC - 1; - return waitForAnimationFramesWithDelay(1); - }).then(() => { - assert_equals(anim.currentTime, 100 * MS_PER_SEC, - 'Hold time is set to target end clamping current time'); - }); + await anim.ready; + + // Seek to 1ms before the target end and then wait 1ms + anim.currentTime = 100 * MS_PER_SEC - 1; + await waitForAnimationFramesWithDelay(1); + + assert_equals(anim.currentTime, 100 * MS_PER_SEC, + 'Hold time is set to target end clamping current time'); }, 'Updating the finished state when playing past end'); // Did seek = true -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); - return anim.ready.then(() => { - anim.currentTime = 200 * MS_PER_SEC; - return waitForNextFrame(); - }).then(() => { - assert_equals(anim.currentTime, 200 * MS_PER_SEC, - 'Hold time is set so current time should NOT change'); - }); + + await anim.ready; + + anim.currentTime = 200 * MS_PER_SEC; + await waitForNextFrame(); + + assert_equals(anim.currentTime, 200 * MS_PER_SEC, + 'Hold time is set so current time should NOT change'); }, 'Updating the finished state when seeking past end'); // Test current time == target end @@ -59,15 +60,15 @@ promise_test(t => { // (on the subsequent tick the hold time will be set to the same value anyway). // Did seek = true -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); - return anim.ready.then(() => { - anim.currentTime = 100 * MS_PER_SEC; - return waitForNextFrame(); - }).then(() => { - assert_equals(anim.currentTime, 100 * MS_PER_SEC, - 'Hold time is set so current time should NOT change'); - }); + await anim.ready; + + anim.currentTime = 100 * MS_PER_SEC; + await waitForNextFrame(); + + assert_equals(anim.currentTime, 100 * MS_PER_SEC, + 'Hold time is set so current time should NOT change'); }, 'Updating the finished state when seeking exactly to end'); @@ -75,49 +76,51 @@ promise_test(t => { // (Also the start time is resolved and there is pending task) // Did seek = false -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.playbackRate = -1; anim.play(); // Make sure animation is not initially finished - return anim.ready.then(() => { - // Seek to 1ms before 0 and then wait 1ms - anim.currentTime = 1; - return waitForAnimationFramesWithDelay(1); - }).then(() => { - assert_equals(anim.currentTime, 0 * MS_PER_SEC, - 'Hold time is set to zero clamping current time'); - }); + + await anim.ready; + + // Seek to 1ms before 0 and then wait 1ms + anim.currentTime = 1; + await waitForAnimationFramesWithDelay(1); + + assert_equals(anim.currentTime, 0 * MS_PER_SEC, + 'Hold time is set to zero clamping current time'); }, 'Updating the finished state when playing in reverse past zero'); // Did seek = true -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.playbackRate = -1; anim.play(); - return anim.ready.then(() => { - anim.currentTime = -100 * MS_PER_SEC; - return waitForNextFrame(); - }).then(() => { - assert_equals(anim.currentTime, -100 * MS_PER_SEC, - 'Hold time is set so current time should NOT change'); - }); + + await anim.ready; + + anim.currentTime = -100 * MS_PER_SEC; + await waitForNextFrame(); + + assert_equals(anim.currentTime, -100 * MS_PER_SEC, + 'Hold time is set so current time should NOT change'); }, 'Updating the finished state when seeking a reversed animation past zero'); // As before, it's difficult to test current time == 0 for did seek = false but // it doesn't really matter. // Did seek = true -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.playbackRate = -1; anim.play(); - return anim.ready.then(() => { - anim.currentTime = 0; - return waitForNextFrame(); - }).then(() => { - assert_equals(anim.currentTime, 0 * MS_PER_SEC, - 'Hold time is set so current time should NOT change'); - }); + await anim.ready; + + anim.currentTime = 0; + await waitForNextFrame(); + + assert_equals(anim.currentTime, 0 * MS_PER_SEC, + 'Hold time is set so current time should NOT change'); }, 'Updating the finished state when seeking a reversed animation exactly' + ' to zero'); @@ -126,41 +129,41 @@ promise_test(t => { // (Also the start time is resolved and there is pending task) // Did seek = false; playback rate > 0 -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); // We want to test that the hold time is cleared so first we need to // put the animation in a state where the hold time is set. anim.finish(); - return anim.ready.then(() => { - assert_equals(anim.currentTime, 100 * MS_PER_SEC, - 'Hold time is initially set'); - // Then extend the duration so that the hold time is cleared and on - // the next tick the current time will increase. - anim.effect.timing.duration *= 2; - return waitForNextFrame(); - }).then(() => { - assert_greater_than(anim.currentTime, 100 * MS_PER_SEC, - 'Hold time is not set so current time should increase'); - }); + await anim.ready; + + assert_equals(anim.currentTime, 100 * MS_PER_SEC, + 'Hold time is initially set'); + // Then extend the duration so that the hold time is cleared and on + // the next tick the current time will increase. + anim.effect.timing.duration *= 2; + await waitForNextFrame(); + + assert_greater_than(anim.currentTime, 100 * MS_PER_SEC, + 'Hold time is not set so current time should increase'); }, 'Updating the finished state when playing before end'); // Did seek = true; playback rate > 0 -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.finish(); - return anim.ready.then(() => { - anim.currentTime = 50 * MS_PER_SEC; - // When did seek = true, updating the finished state: (i) updates - // the animation's start time and (ii) clears the hold time. - // We can test both by checking that the currentTime is initially - // updated and then increases. - assert_equals(anim.currentTime, 50 * MS_PER_SEC, 'Start time is updated'); - return waitForNextFrame(); - }).then(() => { - assert_greater_than(anim.currentTime, 50 * MS_PER_SEC, - 'Hold time is not set so current time should increase'); - }); + await anim.ready; + + anim.currentTime = 50 * MS_PER_SEC; + // When did seek = true, updating the finished state: (i) updates + // the animation's start time and (ii) clears the hold time. + // We can test both by checking that the currentTime is initially + // updated and then increases. + assert_equals(anim.currentTime, 50 * MS_PER_SEC, 'Start time is updated'); + await waitForNextFrame(); + + assert_greater_than(anim.currentTime, 50 * MS_PER_SEC, + 'Hold time is not set so current time should increase'); }, 'Updating the finished state when seeking before end'); // Did seek = false; playback rate < 0 @@ -177,69 +180,69 @@ promise_test(t => { // will set did seek = true). // Did seek = true; playback rate < 0 -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.playbackRate = -1; - return anim.ready.then(() => { - anim.currentTime = 50 * MS_PER_SEC; - assert_equals(anim.currentTime, 50 * MS_PER_SEC, 'Start time is updated'); - return waitForNextFrame(); - }).then(() => { - assert_less_than(anim.currentTime, 50 * MS_PER_SEC, - 'Hold time is not set so current time should decrease'); - }); + await anim.ready; + + anim.currentTime = 50 * MS_PER_SEC; + assert_equals(anim.currentTime, 50 * MS_PER_SEC, 'Start time is updated'); + await waitForNextFrame(); + + assert_less_than(anim.currentTime, 50 * MS_PER_SEC, + 'Hold time is not set so current time should decrease'); }, 'Updating the finished state when seeking a reversed animation before end'); // CASE 4: playback rate == 0 // current time < 0 -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.playbackRate = 0; - return anim.ready.then(() => { - anim.currentTime = -100 * MS_PER_SEC; - return waitForNextFrame(); - }).then(() => { - assert_equals(anim.currentTime, -100 * MS_PER_SEC, - 'Hold time should not be cleared so current time should' - + ' NOT change'); - }); + await anim.ready; + + anim.currentTime = -100 * MS_PER_SEC; + await waitForNextFrame(); + + assert_equals(anim.currentTime, -100 * MS_PER_SEC, + 'Hold time should not be cleared so current time should' + + ' NOT change'); }, 'Updating the finished state when playback rate is zero and the' + ' current time is less than zero'); // current time < target end -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.playbackRate = 0; - return anim.ready.then(() => { - anim.currentTime = 50 * MS_PER_SEC; - return waitForNextFrame(); - }).then(() => { - assert_equals(anim.currentTime, 50 * MS_PER_SEC, - 'Hold time should not be cleared so current time should' - + ' NOT change'); - }); + await anim.ready; + + anim.currentTime = 50 * MS_PER_SEC; + await waitForNextFrame(); + + assert_equals(anim.currentTime, 50 * MS_PER_SEC, + 'Hold time should not be cleared so current time should' + + ' NOT change'); }, 'Updating the finished state when playback rate is zero and the' + ' current time is less than end'); // current time > target end -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.playbackRate = 0; - return anim.ready.then(() => { - anim.currentTime = 200 * MS_PER_SEC; - return waitForNextFrame(); - }).then(() => { - assert_equals(anim.currentTime, 200 * MS_PER_SEC, - 'Hold time should not be cleared so current time should' - + ' NOT change'); - }); + await anim.ready; + + anim.currentTime = 200 * MS_PER_SEC; + await waitForNextFrame(); + + assert_equals(anim.currentTime, 200 * MS_PER_SEC, + 'Hold time should not be cleared so current time should' + + ' NOT change'); }, 'Updating the finished state when playback rate is zero and the' + ' current time is greater than end'); // CASE 5: current time unresolved -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.cancel(); // Trigger a change that will cause the "update the finished state" @@ -251,10 +254,10 @@ promise_test(t => { // change to timing, but just in case an implementation defers that, let's // wait a frame and check that the hold time / start time has still not been // updated. - return waitForAnimationFrames(1).then(() => { - assert_equals(anim.currentTime, null, - 'The animation hold time / start time should not be updated'); - }); + await waitForAnimationFrames(1); + + assert_equals(anim.currentTime, null, + 'The animation hold time / start time should not be updated'); }, 'Updating the finished state when current time is unresolved'); // CASE 6: has a pending task @@ -278,7 +281,7 @@ test(t => { // CASE 7: start time unresolved // Did seek = false -promise_test(t => { +promise_test(async t => { const anim = createDiv(t).animate(null, 100 * MS_PER_SEC); anim.cancel(); // Make it so that only the start time is unresolved (to avoid overlapping @@ -287,12 +290,12 @@ promise_test(t => { // Trigger a change that will cause the "update the finished state" // procedure to run (did seek = false). anim.effect.timing.duration = 200 * MS_PER_SEC; - return waitForAnimationFrames(1).then(() => { - assert_equals(anim.currentTime, 150 * MS_PER_SEC, - 'The animation hold time should not be updated'); - assert_equals(anim.startTime, null, - 'The animation start time should not be updated'); - }); + await waitForAnimationFrames(1); + + assert_equals(anim.currentTime, 150 * MS_PER_SEC, + 'The animation hold time should not be updated'); + assert_equals(anim.startTime, null, + 'The animation start time should not be updated'); }, 'Updating the finished state when start time is unresolved and' + ' did seek = false'); @@ -337,53 +340,61 @@ promise_test(t => { }, 'Finish notification steps don\'t run when the animation seeks to finish' + ' and then seeks back again'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 1); - return animation.ready.then(() => { - return waitForFinishEventAndPromise(animation); - }); + await animation.ready; + + return waitForFinishEventAndPromise(animation); }, 'Finish notification steps run when the animation completes normally'); -promise_test(t => { +promise_test(async t => { + const effect = new KeyframeEffectReadOnly(null, null, 1); + const animation = new Animation(effect, document.timeline); + animation.play(); + await animation.ready; + + return waitForFinishEventAndPromise(animation); +}, 'Finish notification steps run when an animation without a target' + + ' effect completes normally'); + +promise_test(async t => { const animation = createDiv(t).animate(null, 1); - return animation.ready.then(() => { - animation.currentTime = 10; - return waitForFinishEventAndPromise(animation); - }); + await animation.ready; + + animation.currentTime = 10; + return waitForFinishEventAndPromise(animation); }, 'Finish notification steps run when the animation seeks past finish'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 1); - return animation.ready.then(() => { - // Register for notifications now since once we seek away from being - // finished the 'finished' promise will be replaced. - const finishNotificationSteps = waitForFinishEventAndPromise(animation); - animation.finish(); - animation.currentTime = 0; - animation.pause(); - return finishNotificationSteps; - }); + await animation.ready; + + // Register for notifications now since once we seek away from being + // finished the 'finished' promise will be replaced. + const finishNotificationSteps = waitForFinishEventAndPromise(animation); + animation.finish(); + animation.currentTime = 0; + animation.pause(); + return finishNotificationSteps; }, 'Finish notification steps run when the animation completes with .finish(),' + ' even if we then seek away'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 1); const initialFinishedPromise = animation.finished; + await animation.finished; - return animation.finished.then(target => { - animation.currentTime = 0; - assert_not_equals(initialFinishedPromise, animation.finished); - }); + animation.currentTime = 0; + assert_not_equals(initialFinishedPromise, animation.finished); }, 'Animation finished promise is replaced after seeking back to start'); -promise_test(t => { +promise_test(async t => { const animation = createDiv(t).animate(null, 1); const initialFinishedPromise = animation.finished; + await animation.finished; - return animation.finished.then(target => { - animation.play(); - assert_not_equals(initialFinishedPromise, animation.finished); - }); + animation.play(); + assert_not_equals(initialFinishedPromise, animation.finished); }, 'Animation finished promise is replaced after replaying from start'); async_test(t => { diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html index 20d3d59fafc..978aeb9733b 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html @@ -1,51 +1,70 @@ <!doctype html> <meta charset=utf-8> -<title>Test exponentialRampToValue with end time in the past</title> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script> -function do_test(t, context) { - var source = context.createConstantSource(); - source.start(); - - var test = context.createGain(); - test.gain.exponentialRampToValueAtTime(0.1, 0.5*context.currentTime); - test.gain.exponentialRampToValueAtTime(0.9, 2.0); - - var reference = context.createGain(); - reference.gain.exponentialRampToValueAtTime(0.1, context.currentTime); - reference.gain.exponentialRampToValueAtTime(0.9, 2.0); - - source.connect(test); - source.connect(reference); - - var merger = context.createChannelMerger(); - test.connect(merger, 0, 0); - reference.connect(merger, 0, 1); - - var processor = context.createScriptProcessor(0, 2, 0); - merger.connect(processor); - processor.onaudioprocess = - t.step_func_done((e) => { - source.stop(); - processor.onaudioprocess = null; - - var testValue = e.inputBuffer.getChannelData(0)[0]; - var referenceValue = e.inputBuffer.getChannelData(1)[0]; - - assert_equals(testValue, referenceValue, - "value matches expected"); - }); -} - -async_test(function(t) { - var context = new AudioContext; - (function waitForTimeAdvance() { - if (context.currentTime == 0) { - t.step_timeout(waitForTimeAdvance, 0); - } else { - do_test(t, context); - } - })(); -}); -</script> +<html> + <head> + <title>Test exponentialRampToValue with end time in the past</title> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> + <script src="/webaudio/resources/audit-util.js"></script> + <script src="/webaudio/resources/audit.js"></script> + <script src="retrospective-test.js"></script> + </head> + <body> + <script> + let audit = Audit.createTaskRunner(); + + audit.define( + { + label: 'test', + description: 'Test exponentialRampToValue with end time in the past' + }, + (task, should) => { + let {context, source, test, reference} = setupRetrospectiveGraph(); + + // Suspend the context at this frame so we can synchronously set up + // automations. + const suspendFrame = 128; + + context.suspend(suspendFrame / context.sampleRate) + .then(() => { + // Call setTargetAtTime with a time in the past + test.gain.exponentialRampToValueAtTime( + 0.1, 0.5 * context.currentTime); + test.gain.exponentialRampToValueAtTime(0.9, 1.0); + + reference.gain.exponentialRampToValueAtTime( + 0.1, context.currentTime); + reference.gain.exponentialRampToValueAtTime(0.9, 1.0); + }) + .then(() => context.resume()); + + source.start(); + + context.startRendering() + .then(resultBuffer => { + let testValue = resultBuffer.getChannelData(0); + let referenceValue = resultBuffer.getChannelData(1); + + // Until the suspendFrame, both should be exactly equal to 1. + should( + testValue.slice(0, suspendFrame), + `Test[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + should( + referenceValue.slice(0, suspendFrame), + `Reference[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + + // After the suspendFrame, both should be equal (and not + // constant) + should( + testValue.slice(suspendFrame), `Test[${suspendFrame}:]`) + .beEqualToArray(referenceValue.slice(suspendFrame)); + }) + .then(() => task.done()); + }); + + audit.run(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html index 1594a30bd16..42af6a71b3a 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html @@ -1,51 +1,70 @@ <!doctype html> <meta charset=utf-8> -<title>Test linearRampToValue with end time in the past</title> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script> -function do_test(t, context) { - var source = context.createConstantSource(); - source.start(); - - var test = context.createGain(); - test.gain.linearRampToValueAtTime(0.1, 0.5*context.currentTime); - test.gain.linearRampToValueAtTime(0.9, 2.0); - - var reference = context.createGain(); - reference.gain.linearRampToValueAtTime(0.1, context.currentTime); - reference.gain.linearRampToValueAtTime(0.9, 2.0); - - source.connect(test); - source.connect(reference); - - var merger = context.createChannelMerger(); - test.connect(merger, 0, 0); - reference.connect(merger, 0, 1); - - var processor = context.createScriptProcessor(0, 2, 0); - merger.connect(processor); - processor.onaudioprocess = - t.step_func_done((e) => { - source.stop(); - processor.onaudioprocess = null; - - var testValue = e.inputBuffer.getChannelData(0)[0]; - var referenceValue = e.inputBuffer.getChannelData(1)[0]; - - assert_equals(testValue, referenceValue, - "value matches expected"); - }); -} - -async_test(function(t) { - var context = new AudioContext; - (function waitForTimeAdvance() { - if (context.currentTime == 0) { - t.step_timeout(waitForTimeAdvance, 0); - } else { - do_test(t, context); - } - })(); -}); -</script> +<html> + <head> + <title>Test linearRampToValue with end time in the past</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/webaudio/resources/audit-util.js"></script> + <script src="/webaudio/resources/audit.js"></script> + <script src="retrospective-test.js"></script> + </head> + <body> + <script> + let audit = Audit.createTaskRunner(); + + audit.define( + { + label: 'test', + description: 'Test linearRampToValue with end time in the past' + }, + (task, should) => { + let {context, source, test, reference} = setupRetrospectiveGraph(); + + // Suspend the context at this frame so we can synchronously set up + // automations. + const suspendFrame = 128; + + context.suspend(suspendFrame / context.sampleRate) + .then(() => { + // Call setTargetAtTime with a time in the past + test.gain.linearRampToValueAtTime( + 0.1, 0.5 * context.currentTime); + test.gain.linearRampToValueAtTime(0.9, 1.0); + + reference.gain.linearRampToValueAtTime( + 0.1, context.currentTime); + reference.gain.linearRampToValueAtTime(0.9, 1.0); + }) + .then(() => context.resume()); + + source.start(); + + context.startRendering() + .then(resultBuffer => { + let testValue = resultBuffer.getChannelData(0); + let referenceValue = resultBuffer.getChannelData(1); + + // Until the suspendFrame, both should be exactly equal to 1. + should( + testValue.slice(0, suspendFrame), + `Test[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + should( + referenceValue.slice(0, suspendFrame), + `Reference[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + + // After the suspendFrame, both should be equal (and not + // constant) + should( + testValue.slice(suspendFrame), `Test[${suspendFrame}:]`) + .beEqualToArray(referenceValue.slice(suspendFrame)); + }) + .then(() => task.done()); + }); + + audit.run(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html index 9b04fe22bb1..53427901e3d 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html @@ -1,51 +1,80 @@ <!doctype html> <meta charset=utf-8> -<title>Test setTargetAtTime with start time in the past</title> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script> -function do_test(t, context) { - var source = context.createConstantSource(); - source.start(); - - var test = context.createGain(); - test.gain.setTargetAtTime(0.1, 0.5*context.currentTime, 0.1); - test.gain.linearRampToValueAtTime(0.9, 2.0); - - var reference = context.createGain(); - reference.gain.setTargetAtTime(0.1, context.currentTime, 0.1); - reference.gain.linearRampToValueAtTime(0.9, 2.0); - - source.connect(test); - source.connect(reference); - - var merger = context.createChannelMerger(); - test.connect(merger, 0, 0); - reference.connect(merger, 0, 1); - - var processor = context.createScriptProcessor(0, 2, 0); - merger.connect(processor); - processor.onaudioprocess = - t.step_func_done((e) => { - source.stop(); - processor.onaudioprocess = null; - - var testValue = e.inputBuffer.getChannelData(0)[0]; - var referenceValue = e.inputBuffer.getChannelData(1)[0]; - - assert_equals(testValue, referenceValue, - "value matches expected"); - }); -} - -async_test(function(t) { - var context = new AudioContext; - (function waitForTimeAdvance() { - if (context.currentTime == 0) { - t.step_timeout(waitForTimeAdvance, 0); - } else { - do_test(t, context); - } - })(); -}); -</script> +<html> + <head> + <title>Test setTargetAtTime with start time in the past</title> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> + <script src="/webaudio/resources/audit-util.js"></script> + <script src="/webaudio/resources/audit.js"></script> + </head> + <body> + <script> + let audit = Audit.createTaskRunner(); + + audit.define( + { + label: 'test', + description: 'Test setTargetAtTime with start time in the past' + }, + (task, should) => { + // Use a sample rate that is a power of two to eliminate round-off + // in computing the currentTime. + let context = new OfflineAudioContext(2, 16384, 16384); + let source = new ConstantSourceNode(context); + + // Suspend the context at this frame so we can synchronously set up + // automations. + const suspendFrame = 128; + + let test = new GainNode(context); + let reference = new GainNode(context); + + source.connect(test); + source.connect(reference); + + let merger = new ChannelMergerNode( + context, {numberOfInputs: context.destination.channelCount}); + test.connect(merger, 0, 0); + reference.connect(merger, 0, 1); + + merger.connect(context.destination); + + context.suspend(suspendFrame / context.sampleRate) + .then(() => { + // Call setTargetAtTime with a time in the past + test.gain.setTargetAtTime(0.1, 0.5*context.currentTime, 0.1); + reference.gain.setTargetAtTime(0.1, context.currentTime, 0.1); + }) + .then(() => context.resume()); + + source.start(); + + context.startRendering() + .then(resultBuffer => { + let testValue = resultBuffer.getChannelData(0); + let referenceValue = resultBuffer.getChannelData(1); + + // Until the suspendFrame, both should be exactly equal to 1. + should( + testValue.slice(0, suspendFrame), + `Test[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + should( + referenceValue.slice(0, suspendFrame), + `Reference[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + + // After the suspendFrame, both should be equal (and not + // constant) + should( + testValue.slice(suspendFrame), `Test[${suspendFrame}:]`) + .beEqualToArray(referenceValue.slice(suspendFrame)); + }) + .then(() => task.done()); + }); + + audit.run(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html index b9657ef2113..32cdc6307fc 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html @@ -1,54 +1,74 @@ <!DOCTYPE html> -<title>Test setValueAtTime with startTime in the past</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> -function do_test(t, context) { - var source = context.createConstantSource(); - source.start(); - - // Use a ramp of slope 1/sample to measure time. - // The end value is the extent of exact precision in single precision float. - const rampEnd = Math.pow(2, 24); - const rampEndSeconds = rampEnd / context.sampleRate; - var test = context.createGain(); - test.gain.setValueAtTime(0.0, 0.5*context.currentTime); - test.gain.linearRampToValueAtTime(rampEnd, rampEndSeconds); - - var reference = context.createGain(); - reference.gain.setValueAtTime(0.0, context.currentTime); - reference.gain.linearRampToValueAtTime(rampEnd, rampEndSeconds); - - source.connect(test); - source.connect(reference); - - var merger = context.createChannelMerger(); - test.connect(merger, 0, 0); - reference.connect(merger, 0, 1); - - var processor = context.createScriptProcessor(0, 2, 0); - merger.connect(processor); - processor.onaudioprocess = - t.step_func_done((e) => { - source.stop(); - processor.onaudioprocess = null; - - var testValue = e.inputBuffer.getChannelData(0)[0]; - var referenceValue = e.inputBuffer.getChannelData(1)[0]; - - assert_equals(testValue, referenceValue, - "ramp value matches expected"); - }); -} - -async_test(function(t) { - var context = new AudioContext; - (function waitForTimeAdvance() { - if (context.currentTime == 0) { - t.step_timeout(waitForTimeAdvance, 0); - } else { - do_test(t, context); - } - })(); -}); -</script> +<html> + <head> + <title>Test setValueAtTime with startTime in the past</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/webaudio/resources/audit-util.js"></script> + <script src="/webaudio/resources/audit.js"></script> + <script src="retrospective-test.js"></script> + </head> + <body> + <script> + let audit = Audit.createTaskRunner(); + + audit.define( + { + label: 'test', + description: 'Test setValueAtTime with startTime in the past' + }, + (task, should) => { + let {context, source, test, reference} = setupRetrospectiveGraph(); + + // Suspend the context at this frame so we can synchronously set up + // automations. + const suspendFrame = 128; + + // Use a ramp of slope 1 per frame to measure time. + // The end value is the extent of exact precision in single + // precision float. + const rampEnd = context.length - suspendFrame; + const rampEndSeconds = context.length / context.sampleRate; + + context.suspend(suspendFrame / context.sampleRate) + .then(() => { + // Call setValueAtTime with a time in the past + test.gain.setValueAtTime(0.0, 0.5 * context.currentTime); + test.gain.linearRampToValueAtTime(rampEnd, rampEndSeconds); + + reference.gain.setValueAtTime(0.0, context.currentTime); + reference.gain.linearRampToValueAtTime( + rampEnd, rampEndSeconds); + }) + .then(() => context.resume()); + + source.start(); + + context.startRendering() + .then(resultBuffer => { + let testValue = resultBuffer.getChannelData(0); + let referenceValue = resultBuffer.getChannelData(1); + + // Until the suspendFrame, both should be exactly equal to 1. + should( + testValue.slice(0, suspendFrame), + `Test[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + should( + referenceValue.slice(0, suspendFrame), + `Reference[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + + // After the suspendFrame, both should be equal (and not + // constant) + should( + testValue.slice(suspendFrame), `Test[${suspendFrame}:]`) + .beEqualToArray(referenceValue.slice(suspendFrame)); + }) + .then(() => task.done()); + }); + + audit.run(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html index 008b2401290..451b6ea8296 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html @@ -1,49 +1,67 @@ <!doctype html> -<meta charset=utf-8> -<title>Test SetValueCurve with start time in the past</title> -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script> -function do_test(t, context) { - var source = context.createConstantSource(); - source.start(); - - var test = context.createGain(); - test.gain.setValueCurveAtTime(new Float32Array([1.0, 0.1]), 0.0, 1.0); - - var reference = context.createGain(); - reference.gain.setValueCurveAtTime(new Float32Array([1.0, 0.1]), 0.5*context.currentTime, 1.0); - - source.connect(test); - source.connect(reference); - - var merger = context.createChannelMerger(); - test.connect(merger, 0, 0); - reference.connect(merger, 0, 1); - - var processor = context.createScriptProcessor(0, 2, 0); - merger.connect(processor); - processor.onaudioprocess = - t.step_func_done((e) => { - source.stop(); - processor.onaudioprocess = null; - - var testValue = e.inputBuffer.getChannelData(0)[0]; - var referenceValue = e.inputBuffer.getChannelData(1)[0]; - - assert_equals(testValue, referenceValue, - "value matches expected"); - }); -} - -async_test(function(t) { - var context = new AudioContext; - (function waitForTimeAdvance() { - if (context.currentTime == 0) { - t.step_timeout(waitForTimeAdvance, 0); - } else { - do_test(t, context); - } - })(); -}); -</script> +<html> + <head> + <title>Test SetValueCurve with start time in the past</title> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> + <script src="/webaudio/resources/audit-util.js"></script> + <script src="/webaudio/resources/audit.js"></script> + <script src="retrospective-test.js"></script> + </head> + </body> + <script> + let audit = Audit.createTaskRunner(); + + audit.define( + { + label: 'test', + description: 'Test SetValueCurve with start time in the past' + }, + (task, should) => { + let {context, source, test, reference} = setupRetrospectiveGraph(); + + // Suspend the context at this frame so we can synchronously set up + // automations. + const suspendFrame = 128; + + context.suspend(suspendFrame / context.sampleRate) + .then(() => { + // Call setValueAtTime with a time in the past + test.gain.setValueCurveAtTime( + new Float32Array([1.0, 0.1]), 0.5 * context.currentTime, + 1.0); + reference.gain.setValueCurveAtTime( + new Float32Array([1.0, 0.1]), context.currentTime, 1.0); + }) + .then(() => context.resume()); + + source.start(); + + context.startRendering() + .then(resultBuffer => { + let testValue = resultBuffer.getChannelData(0); + let referenceValue = resultBuffer.getChannelData(1); + + // Until the suspendFrame, both should be exactly equal to 1. + should( + testValue.slice(0, suspendFrame), + `Test[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + should( + referenceValue.slice(0, suspendFrame), + `Reference[0:${suspendFrame - 1}]`) + .beConstantValueOf(1); + + // After the suspendFrame, both should be equal (and not + // constant) + should( + testValue.slice(suspendFrame), `Test[${suspendFrame}:]`) + .beEqualToArray(referenceValue.slice(suspendFrame)); + }) + .then(() => task.done()); + }); + + audit.run(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js new file mode 100644 index 00000000000..bbda190f099 --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js @@ -0,0 +1,29 @@ +// Create an audio graph on an offline context that consists of a +// constant source and two gain nodes. One of the nodes is the node te +// be tested and the other is the reference node. The output from the +// test node is in channel 0 of the offline context; the reference +// node is in channel 1. +// +// Returns a dictionary with the context, source node, the test node, +// and the reference node. +function setupRetrospectiveGraph() { + // Use a sample rate that is a power of two to eliminate round-off + // in computing the currentTime. + let context = new OfflineAudioContext(2, 16384, 16384); + let source = new ConstantSourceNode(context); + + let test = new GainNode(context); + let reference = new GainNode(context); + + source.connect(test); + source.connect(reference); + + let merger = new ChannelMergerNode( + context, {numberOfInputs: context.destination.channelCount}); + test.connect(merger, 0, 0); + reference.connect(merger, 0, 1); + + merger.connect(context.destination); + + return {context: context, source: source, test: test, reference: reference}; +} diff --git a/tests/wpt/web-platform-tests/webdriver/tests/interface.html b/tests/wpt/web-platform-tests/webdriver/tests/interface.html index 31637285e40..d54aaaf271d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/interface.html +++ b/tests/wpt/web-platform-tests/webdriver/tests/interface.html @@ -1,38 +1,49 @@ -<!DOCTYPE html> -<body> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> +<!doctype html> +<meta charset=utf-8> + +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> <script src=/resources/WebIDLParser.js></script> <script src=/resources/idlharness.js></script> + <script type=text/plain class=untested> [Exposed=Window] interface Navigator { // objects implementing this interface also implement the interfaces given below }; </script> + <script type=text/plain> Navigator includes NavigatorAutomationInformation; interface mixin NavigatorAutomationInformation { - readonly attribute boolean webdriver; - // always returns true + readonly attribute boolean webdriver; }; </script> + <script> "use strict"; -if ("webdriver" in navigator) { - test(() => assert_true(navigator.webdriver), "navigator.webdriver is always true"); - var idlArray = new IdlArray(); - [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) { - if (node.className == "untested") { - idlArray.add_untested_idls(node.textContent); - } else { - idlArray.add_idls(node.textContent); - } - }); - idlArray.test(); -} else { - done(); +test(() => assert_idl_attribute(navigator, "webdriver"), "navigator.webdriver is present"); + +// When test is run in automation navigator.webdriver is likely to +// be true because WebDriver controls the browser instance. To that +// extent, this test is a bit special. It should also be possible to +// run the test manually, when WebDriver is not active, and so either +// true/false outcome is OK. +if (navigator.webdriver) { + test(() => assert_true(navigator.webdriver), "navigator.webdriver is true when webdriver-active is set"); +} else { + test(() => assert_false(navigator.webdriver), "navigator.webdriver is false when webdriver-active is not set"); } + +var idls = new IdlArray(); +for (let node of [...document.scripts].filter(({type}) => type == "text/plain")) { + if (node.className == "untested") { + idls.add_untested_idls(node.textContent); + } else { + idls.add_idls(node.textContent); + } +}; +idls.test(); </script> |