diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/invokers/invoketarget-on-popover-behavior.tentative.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/invokers/invoketarget-on-popover-behavior.tentative.html | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/invokers/invoketarget-on-popover-behavior.tentative.html b/testing/web-platform/tests/html/semantics/invokers/invoketarget-on-popover-behavior.tentative.html new file mode 100644 index 0000000000..03eba22285 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/invokers/invoketarget-on-popover-behavior.tentative.html @@ -0,0 +1,209 @@ +<!doctype html> +<meta charset="utf-8" /> +<meta name="author" title="Keith Cirkel" href="mailto:keithamus@github.com" /> +<link rel="help" href="https://open-ui.org/components/invokers.explainer/" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="resources/invoker-utils.js"></script> + +<div id="invokee" popover> + <button id="invokerbutton2" invoketarget="invokee"></button> +</div> +<button id="invokerbutton" invoketarget="invokee"></button> + +<script> + // auto + + promise_test(async function (t) { + assert_false(invokee.matches(":popover-open")); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as auto) closed popover opens"); + + promise_test(async function (t) { + assert_false(invokee.matches(":popover-open")); + invokee.addEventListener("invoke", (e) => e.preventDefault(), { + once: true, + }); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as auto) closed popover with preventDefault does not open"); + + promise_test(async function (t) { + invokee.showPopover(); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as auto) open popover closes"); + + promise_test(async function (t) { + invokee.showPopover(); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton2); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as auto) from within open popover closes"); + + promise_test(async function (t) { + invokee.showPopover(); + t.add_cleanup(() => invokee.hidePopover()); + invokee.addEventListener("invoke", (e) => e.preventDefault(), { + once: true, + }); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton2); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as auto) open popover with preventDefault does not close"); + + // togglepopover + + promise_test(async function (t) { + assert_false(invokee.matches(":popover-open")); + invokerbutton.setAttribute("invokeaction", "togglepopover"); + t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction")); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as togglepopover) closed popover opens"); + + promise_test(async function (t) { + assert_false(invokee.matches(":popover-open")); + invokerbutton.setAttribute("invokeaction", "tOgGlEpOpOvEr"); + t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction")); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as togglepopover - case insensitive) closed popover opens"); + + promise_test(async function (t) { + assert_false(invokee.matches(":popover-open")); + invokerbutton.setAttribute("invokeaction", "togglepopover"); + t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction")); + invokee.addEventListener("invoke", (e) => e.preventDefault(), { + once: true, + }); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as togglepopover) closed popover with preventDefault does not open"); + + promise_test(async function (t) { + invokee.showPopover(); + invokerbutton2.setAttribute("invokeaction", "togglepopover"); + t.add_cleanup(() => invokerbutton2.removeAttribute("invokeaction")); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as togglepopover) open popover closes"); + + promise_test(async function (t) { + invokee.showPopover(); + invokerbutton2.setAttribute("invokeaction", "togglepopover"); + t.add_cleanup(() => invokerbutton2.removeAttribute("invokeaction")); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton2); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as togglepopover) from within open popover closes"); + + promise_test(async function (t) { + invokee.showPopover(); + t.add_cleanup(() => invokee.hidePopover()); + invokerbutton2.setAttribute("invokeaction", "togglepopover"); + t.add_cleanup(() => invokerbutton2.removeAttribute("invokeaction")); + invokee.addEventListener("invoke", (e) => e.preventDefault(), { + once: true, + }); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton2); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as togglepopover) open popover with preventDefault does not close"); + + // showpopover + + promise_test(async function (t) { + invokerbutton.setAttribute("invokeaction", "showpopover"); + t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction")); + assert_false(invokee.matches(":popover-open")); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as showpopover) closed popover opens"); + + promise_test(async function (t) { + invokerbutton.setAttribute("invokeaction", "sHoWpOpOvEr"); + t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction")); + assert_false(invokee.matches(":popover-open")); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as showpopover - case insensitive) closed popover opens"); + + promise_test(async function (t) { + invokerbutton.setAttribute("invokeaction", "showpopover"); + t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction")); + invokee.showPopover(); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as showpopover) open popover is noop"); + + promise_test(async function (t) { + invokerbutton.setAttribute("invokeaction", "showpopover"); + t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction")); + assert_false(invokee.matches(":popover-open")); + invokee.addEventListener("invoke", (e) => e.preventDefault(), { + once: true, + }); + await clickOn(invokerbutton); + t.add_cleanup(() => invokee.hidePopover()); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as showpopover) closed popover with preventDefault does not open"); + + // hidepopover + + promise_test(async function (t) { + invokerbutton.setAttribute("invokeaction", "hidepopover"); + t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction")); + assert_false(invokee.matches(":popover-open")); + await clickOn(invokerbutton); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as hidepopover) closed popover is noop"); + + promise_test(async function (t) { + invokerbutton2.setAttribute("invokeaction", "hidepopover"); + t.add_cleanup(() => invokerbutton2.removeAttribute("invokeaction")); + invokee.showPopover(); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton2); + t.add_cleanup(() => invokee.hidePopover()); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as hidepopover) open popover closes"); + + promise_test(async function (t) { + invokerbutton2.setAttribute("invokeaction", "hIdEpOpOvEr"); + t.add_cleanup(() => invokerbutton2.removeAttribute("invokeaction")); + invokee.showPopover(); + assert_true(invokee.matches(":popover-open")); + await clickOn(invokerbutton2); + t.add_cleanup(() => invokee.hidePopover()); + assert_false(invokee.matches(":popover-open")); + }, "invoking (as hidepopover - case insensitive) open popover closes"); + + promise_test(async function (t) { + invokerbutton2.setAttribute("invokeaction", "hidepopover"); + t.add_cleanup(() => invokerbutton2.removeAttribute("invokeaction")); + invokee.showPopover(); + t.add_cleanup(() => invokee.hidePopover()); + assert_true(invokee.matches(":popover-open")); + invokee.addEventListener("invoke", (e) => e.preventDefault(), { + once: true, + }); + await clickOn(invokerbutton2); + assert_true(invokee.matches(":popover-open")); + }, "invoking (as hidepopover) open popover with preventDefault does not close"); +</script> |