forked from mozilla/gecko-dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1768709 [wpt PR 34022] - WebKit export of https://bugs.webkit.org…
…/show_bug.cgi?id=239831, a=testonly Automatic update from web-platform-tests WebKit export of https://bugs.webkit.org/show_bug.cgi?id=239831 (#34022) Add test for hit-testing on pseudo-elements of inert nodes -- wpt-commits: 764ba538c7fb6af0243f4cb1c069069a888615f0 wpt-pr: 34022
- Loading branch information
1 parent
05f666d
commit 78da561
Showing
1 changed file
with
65 additions
and
0 deletions.
There are no files selected for viewing
65 changes: 65 additions & 0 deletions
65
testing/web-platform/tests/inert/inert-pseudo-element-hittest.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8"> | ||
<title>Hit-testing on pseudo elements of inert nodes</title> | ||
<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/testdriver.js"></script> | ||
<script src="/resources/testdriver-vendor.js"></script> | ||
<script src="/resources/testdriver-actions.js"></script> | ||
<style> | ||
#target::before { | ||
content: ""; | ||
width: 50px; | ||
height: 50px; | ||
background-color: green; | ||
display: inline-block; | ||
} | ||
|
||
#target:hover::before, | ||
#target:active::before { | ||
background-color: red; | ||
} | ||
</style> | ||
<p>Manual test: hover the green square, pass if it does not turn red.</p> | ||
<div id="target" inert></div> | ||
<script> | ||
const events = [ | ||
"mousedown", "mouseenter", "mousemove", "mouseover", | ||
"pointerdown", "pointerenter", "pointermove", "pointerover", | ||
]; | ||
async function mouseDownAndGetEvents(test) { | ||
const receivedEvents = []; | ||
for (let event of events) { | ||
target.addEventListener(event, () => { | ||
receivedEvents.push(event); | ||
}, { once: true, capture: true }); | ||
} | ||
|
||
await new test_driver.Actions() | ||
.pointerMove(0, 0, { origin: target }) | ||
.pointerDown() | ||
.send(); | ||
test.add_cleanup(() => test_driver.click(document.body)); | ||
|
||
// Exact order of events is not interoperable. | ||
receivedEvents.sort(); | ||
return receivedEvents; | ||
} | ||
promise_test(async function() { | ||
const receivedEvents = await mouseDownAndGetEvents(this); | ||
assert_array_equals(receivedEvents, [], "target got no event"); | ||
assert_false(target.matches(":active"), "target is not active"); | ||
assert_false(target.matches(":hover"), "target is not hovered"); | ||
assert_equals(getComputedStyle(target, "::before").backgroundColor, "rgb(0, 128, 0)", "#target::before has no hover style"); | ||
}, "Hit-testing cannot reach pseudo elements of inert nodes"); | ||
|
||
promise_test(async function() { | ||
target.inert = false; | ||
const receivedEvents = await mouseDownAndGetEvents(this); | ||
assert_array_equals(receivedEvents, events, "target got all events"); | ||
assert_true(target.matches(":active"), "target is active"); | ||
assert_true(target.matches(":hover"), "target is hovered"); | ||
assert_equals(getComputedStyle(target, "::before").backgroundColor, "rgb(255, 0, 0)", "#target::before has hover style"); | ||
}, "Hit-testing can reach pseudo elements of non-inert nodes"); | ||
</script> |