commit 0d13032d13683d9fd306018cac9338111355587c
parent c7093c2490827da3d10e491133f25a0c9cfc0d49
Author: Mason Freed <masonf@chromium.org>
Date: Fri, 26 Sep 2025 21:28:30 +0000
Bug 1990559 [wpt PR 55044] - Refactor the interestfor-invoker-descendants.tentative.html test, a=testonly
Automatic update from web-platform-tests
Refactor the interestfor-invoker-descendants.tentative.html test
Just cleans it up - no functional change.
Bug: 326681249
Change-Id: I8dad148ad76743befd8725b9dfeb0a25a5e5e489
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6974990
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Mason Freed <masonf@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1520344}
--
wpt-commits: 62b62702ef7ef2e2c10494e62eee5435fbfa37a4
wpt-pr: 55044
Diffstat:
1 file changed, 56 insertions(+), 86 deletions(-)
diff --git a/testing/web-platform/tests/html/semantics/interestfor/interestfor-invoker-descendants.tentative.html b/testing/web-platform/tests/html/semantics/interestfor/interestfor-invoker-descendants.tentative.html
@@ -17,6 +17,8 @@
<button id=otherbutton>Other button</button>
<style>
[interestfor] { interest-delay: 0s; }
+ :interest-source { background-color: lightgreen;}
+ :interest-target { background-color: lightblue;}
</style>
<script>
@@ -25,57 +27,42 @@ const innerSpan = document.getElementById('inner-span');
const target = document.getElementById('target');
const otherbutton = document.getElementById('otherbutton');
-promise_test(async function (t) {
- t.add_cleanup(() => focusOn(otherbutton));
- const signal = t.get_signal();
- let interestCount = 0;
- let loseInterestCount = 0;
- target.addEventListener('interest',() => (++interestCount),{signal});
- target.addEventListener('loseinterest',() => (++loseInterestCount),{signal});
- await focusOn(invoker);
- assert_true(invoker.matches(':interest-source'),'focusing invoker should show interest');
- assert_equals(interestCount,1,'One interest event');
- interestCount = 0;
- assert_equals(loseInterestCount,0,'No loseinterest events');
- await focusOn(innerSpan);
- assert_true(invoker.matches(':interest-source'),'focusing inner span should keep interest');
- assert_equals(interestCount,0,'No extra interest events');
- assert_equals(loseInterestCount,0,'No loseinterest events');
- await focusOn(invoker);
- assert_true(invoker.matches(':interest-source'),'focusing back to outer button should keep interest');
- assert_equals(interestCount,0,'No extra interest events');
- assert_equals(loseInterestCount,0,'No loseinterest events');
- await focusOn(otherbutton);
- assert_false(invoker.matches(':interest-source'),'focusing outside should lose interest');
- assert_equals(interestCount,0,'No extra interest events');
- assert_equals(loseInterestCount,1,'Finally got loseinterest event');
-},'Moving focus within invoker works correctly');
+async function showInterest(el, method) {
+ if (method === 'focus') {
+ await focusOn(el);
+ } else {
+ assert_equals(method,'hover');
+ await hoverOver(el);
+ }
+}
-promise_test(async function (t) {
- t.add_cleanup(() => focusOn(otherbutton));
- const signal = t.get_signal();
- let interestCount = 0;
- let loseInterestCount = 0;
- target.addEventListener('interest',() => (++interestCount),{signal});
- target.addEventListener('loseinterest',() => (++loseInterestCount),{signal});
- await hoverOver(invoker);
- assert_true(invoker.matches(':interest-source'),'hovering invoker should show interest');
- assert_equals(interestCount,1,'One interest event');
- interestCount = 0;
- assert_equals(loseInterestCount,0,'No loseinterest events');
- await hoverOver(innerSpan);
- assert_true(invoker.matches(':interest-source'),'hovering inner span should keep interest');
- assert_equals(interestCount,0,'No extra interest events');
- assert_equals(loseInterestCount,0,'No loseinterest events');
- await hoverOver(invoker);
- assert_true(invoker.matches(':interest-source'),'hovering back to outer button should keep interest');
- assert_equals(interestCount,0,'No extra interest events');
- assert_equals(loseInterestCount,0,'No loseinterest events');
- await hoverOver(otherbutton);
- assert_false(invoker.matches(':interest-source'),'hovering outside should lose interest');
- assert_equals(interestCount,0,'No extra interest events');
- assert_equals(loseInterestCount,1,'Finally got loseinterest event');
-},'Moving hover within invoker works correctly');
+['focus','hover'].forEach(method => {
+ promise_test(async function (t) {
+ t.add_cleanup(() => showInterest(otherbutton, method));
+ const signal = t.get_signal();
+ let interestCount = 0;
+ let loseInterestCount = 0;
+ target.addEventListener('interest',() => (++interestCount),{signal});
+ target.addEventListener('loseinterest',() => (++loseInterestCount),{signal});
+ await showInterest(invoker, method);
+ assert_true(invoker.matches(':interest-source'),'focusing invoker should show interest');
+ assert_equals(interestCount,1,'One interest event');
+ interestCount = 0;
+ assert_equals(loseInterestCount,0,'No loseinterest events');
+ await showInterest(innerSpan, method);
+ assert_true(invoker.matches(':interest-source'),'focusing inner span should keep interest');
+ assert_equals(interestCount,0,'No extra interest events');
+ assert_equals(loseInterestCount,0,'No loseinterest events');
+ await showInterest(invoker, method);
+ assert_true(invoker.matches(':interest-source'),'focusing back to outer button should keep interest');
+ assert_equals(interestCount,0,'No extra interest events');
+ assert_equals(loseInterestCount,0,'No loseinterest events');
+ await showInterest(otherbutton, method);
+ assert_false(invoker.matches(':interest-source'),'focusing outside should lose interest');
+ assert_equals(interestCount,0,'No extra interest events');
+ assert_equals(loseInterestCount,1,'Finally got loseinterest event');
+ },`Moving focus within invoker, ${method}`);
+});
</script>
<a id=outer href="#" interestfor="middle">Outer</a>
@@ -90,43 +77,26 @@ const middle = document.getElementById('middle');
const middleLink = document.getElementById('middle-link');
const inner = document.getElementById('inner');
const innerButton = document.getElementById('inner-button');
-promise_test(async function (t) {
- t.add_cleanup(() => focusOn(otherbutton));
- assert_false(middle.matches(':popover-open'),'middle starts closed');
- await focusOn(outer);
- assert_true(outer.matches(':interest-source'),'focusing outer should show interest');
- assert_true(middle.matches(':popover-open'),'outer popover open');
- await focusOn(middleLink);
- assert_true(middleLink.matches(':interest-source'),'focusing middle should show interest');
- assert_true(outer.matches(':interest-source'),'outer keeps interest');
- assert_true(middle.matches(':popover-open'),'middle popover stays open');
- assert_true(inner.matches(':popover-open'),'inner popover opens');
+['focus','hover'].forEach(method => {
+ promise_test(async function (t) {
+ t.add_cleanup(() => showInterest(otherbutton, method));
+ assert_false(middle.matches(':popover-open'),'middle starts closed');
+ await showInterest(outer, method);
+ assert_true(outer.matches(':interest-source'),'focusing outer should show interest');
+ assert_true(middle.matches(':popover-open'),'outer popover open');
- await focusOn(innerButton);
- assert_true(outer.matches(':interest-source'),'outer keeps interest');
- assert_true(middleLink.matches(':interest-source'),'middle keeps interest');
- assert_true(middle.matches(':popover-open'),'middle popover stays open');
- assert_true(inner.matches(':popover-open'),'inner popover stays open');
-},'Nested invokers maintain interest properly (focus)');
+ await showInterest(middleLink, method);
+ assert_true(middleLink.matches(':interest-source'),'focusing middle should show interest');
+ assert_true(outer.matches(':interest-source'),'outer keeps interest');
+ assert_true(middle.matches(':popover-open'),'middle popover stays open');
+ assert_true(inner.matches(':popover-open'),'inner popover opens');
-promise_test(async function (t) {
- t.add_cleanup(() => focusOn(otherbutton));
- assert_false(middle.matches(':popover-open'),'middle starts closed');
- await hoverOver(outer);
- assert_true(outer.matches(':interest-source'),'hovering outer should show interest');
- assert_true(middle.matches(':popover-open'),'outer popover open');
-
- await hoverOver(middleLink);
- assert_true(outer.matches(':interest-source'),'outer keeps interest');
- assert_true(middle.matches(':popover-open'),'middle popover stays open');
- assert_true(middleLink.matches(':interest-source'),'hovering middle should show interest');
- assert_true(inner.matches(':popover-open'),'inner popover opens');
-
- await hoverOver(innerButton);
- assert_true(outer.matches(':interest-source'),'outer keeps interest');
- assert_true(middleLink.matches(':interest-source'),'middle keeps interest');
- assert_true(middle.matches(':popover-open'),'middle popover stays open');
- assert_true(inner.matches(':popover-open'),'inner popover stays open');
-},'Nested invokers maintain interest properly (hover)');
+ await showInterest(innerButton, method);
+ assert_true(outer.matches(':interest-source'),'outer keeps interest');
+ assert_true(middleLink.matches(':interest-source'),'middle keeps interest');
+ assert_true(middle.matches(':popover-open'),'middle popover stays open');
+ assert_true(inner.matches(':popover-open'),'inner popover stays open');
+ },`Nested invokers, ${method}`);
+});
</script>