summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/invokers/invoketarget-on-popover-behavior.tentative.html
diff options
context:
space:
mode:
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.html312
1 files changed, 118 insertions, 194 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
index 2bddfa7621..f414559e55 100644
--- 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
@@ -1,6 +1,7 @@
<!doctype html>
<meta charset="utf-8" />
-<meta name="author" title="Keith Cirkel" href="mailto:keithamus@github.com" />
+<meta name="author" title="Keith Cirkel" href="mailto:wpt@keithcirkel.co.uk" />
+<meta name="timeout" content="long" />
<link rel="help" href="https://open-ui.org/components/invokers.explainer/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -19,215 +20,138 @@
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(), {
+ invokee.addEventListener("invoke", (e) => { invokerbutton.setAttribute('invokeaction', 'hidepopover'); }, {
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(containedinvoker);
- 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,
+ t.add_cleanup(() => {
+ invokee.hidePopover();
+ invokerbutton.removeAttribute("invokeaction");
});
assert_true(invokee.matches(":popover-open"));
- await clickOn(containedinvoker);
- 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();
- containedinvoker.setAttribute("invokeaction", "togglepopover");
- t.add_cleanup(() => containedinvoker.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();
- containedinvoker.setAttribute("invokeaction", "togglepopover");
- t.add_cleanup(() => containedinvoker.removeAttribute("invokeaction"));
- assert_true(invokee.matches(":popover-open"));
- await clickOn(containedinvoker);
- 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());
- containedinvoker.setAttribute("invokeaction", "togglepopover");
- t.add_cleanup(() => containedinvoker.removeAttribute("invokeaction"));
- invokee.addEventListener("invoke", (e) => e.preventDefault(), {
- once: true,
- });
- assert_true(invokee.matches(":popover-open"));
- await clickOn(containedinvoker);
- assert_true(invokee.matches(":popover-open"));
- }, "invoking (as togglepopover) open popover with preventDefault does not close");
-
- // showpopover
-
- promise_test(async function (t) {
+ }, "changing invokeaction attribute inside invokeevent doesn't impact the invocation");
+
+ function resetState() {
+ invokerbutton.removeAttribute("invokeaction");
+ containedinvoker.removeAttribute("invokeaction");
+ try {
+ invokee.hidePopover();
+ } catch {}
+ invokee.setAttribute("popover", "");
+ }
+
+ // Open actions
+ [
+ null,
+ "",
+ "togglepopover",
+ "showpopover",
+ /* test case sensitivity */
+ "tOgGlEpOpOvEr",
+ "sHoWpOpOvEr",
+ ].forEach((action) => {
+ promise_test(
+ async function (t) {
+ t.add_cleanup(resetState);
+ if (action !== null) invokerbutton.invokeAction = action;
+ assert_false(invokee.matches(":popover-open"));
+ await clickOn(invokerbutton);
+ assert_true(invokee.matches(":popover-open"));
+ },
+ `invoking (as ${
+ action === null ? "auto" : action || "explicit empty"
+ }) closed popover opens`,
+ );
+
+ promise_test(
+ async function (t) {
+ t.add_cleanup(resetState);
+ if (action !== null) invokerbutton.invokeAction = action;
+ assert_false(invokee.matches(":popover-open"));
+ invokee.addEventListener("invoke", (e) => e.preventDefault(), {
+ once: true,
+ });
+ await clickOn(invokerbutton);
+ assert_false(invokee.matches(":popover-open"));
+ },
+ `invoking (as ${
+ action === null ? "auto" : action || "explicit empty"
+ }) closed popover with preventDefault does not open`,
+ );
+ });
+
+ // Close actions
+ [
+ null,
+ "",
+ "togglepopover",
+ "hidepopover",
+ /* test case sensitivity */
+ "tOgGlEpOpOvEr",
+ "hIdEpOpOvEr",
+ ].forEach((action) => {
+ promise_test(
+ async function (t) {
+ t.add_cleanup(resetState);
+ if (action !== null) invokerbutton.invokeAction = action;
+ invokee.showPopover();
+ assert_true(invokee.matches(":popover-open"));
+ await clickOn(invokerbutton);
+ assert_false(invokee.matches(":popover-open"));
+ },
+ `invoking (as ${
+ action === null ? "auto" : action || "explicit empty"
+ }) open popover closes`,
+ );
+
+ promise_test(
+ async function (t) {
+ t.add_cleanup(resetState);
+ if (action !== null) containedinvoker.invokeAction = action;
+ invokee.showPopover();
+ assert_true(invokee.matches(":popover-open"));
+ await clickOn(containedinvoker);
+ assert_false(invokee.matches(":popover-open"));
+ },
+ `invoking (as ${
+ action === null ? "auto" : action || "explicit empty"
+ }) from within open popover closes`,
+ );
+
+ promise_test(
+ async function (t) {
+ t.add_cleanup(resetState);
+ if (action !== null) invcontainedinvokervokeaction = action;
+ invokee.showPopover();
+ invokee.addEventListener("invoke", (e) => e.preventDefault(), {
+ once: true,
+ });
+ assert_true(invokee.matches(":popover-open"));
+ await clickOn(containedinvoker);
+ assert_true(invokee.matches(":popover-open"));
+ },
+ `invoking (as ${
+ action === null ? "auto" : action || "explicit empty"
+ }) open popover with preventDefault does not close`,
+ );
+ });
+
+ // showpopover specific
+ promise_test(async function (t) {
+ t.add_cleanup(resetState);
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");
+ // hidepopover specific
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) {
+ t.add_cleanup(resetState);
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) {
- containedinvoker.setAttribute("invokeaction", "hidepopover");
- t.add_cleanup(() => containedinvoker.removeAttribute("invokeaction"));
- invokee.showPopover();
- assert_true(invokee.matches(":popover-open"));
- await clickOn(containedinvoker);
- t.add_cleanup(() => invokee.hidePopover());
- assert_false(invokee.matches(":popover-open"));
- }, "invoking (as hidepopover) open popover closes");
-
- promise_test(async function (t) {
- containedinvoker.setAttribute("invokeaction", "hIdEpOpOvEr");
- t.add_cleanup(() => containedinvoker.removeAttribute("invokeaction"));
- invokee.showPopover();
- assert_true(invokee.matches(":popover-open"));
- await clickOn(containedinvoker);
- t.add_cleanup(() => invokee.hidePopover());
- assert_false(invokee.matches(":popover-open"));
- }, "invoking (as hidepopover - case insensitive) open popover closes");
-
- promise_test(async function (t) {
- containedinvoker.setAttribute("invokeaction", "hidepopover");
- t.add_cleanup(() => containedinvoker.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(containedinvoker);
- assert_true(invokee.matches(":popover-open"));
- }, "invoking (as hidepopover) open popover with preventDefault does not close");
-
- // invalid
-
- ["foo", "togglemodal", "showpicker", "toggle", "open", "close"].forEach(action => {
- promise_test(async function (t) {
- invokerbutton.setAttribute("invokeaction", action);
- t.add_cleanup(() => invokerbutton.removeAttribute("invokeaction"));
- assert_false(invokee.matches(":popover-open"));
- await clickOn(invokerbutton);
- assert_false(invokee.matches(":popover-open"));
- }, `invoking (as ${action}) on popover does nothing`);
-
- promise_test(async function (t) {
- invokerbutton.setAttribute("invokeaction", action);
- t.add_cleanup(() => {
- invokerbutton.removeAttribute("invokeaction")
- invokee.hidePopover();
- });
- invokee.showPopover()
- assert_true(invokee.matches(":popover-open"));
- await clickOn(invokerbutton);
- assert_true(invokee.matches(":popover-open"));
- }, `invoking (as ${action}) on open popover does nothing`);
- })
</script>