mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 19:17:10 +00:00
test(browser): compare ax.find across both hosts on one page
This commit is contained in:
1 parent
3fe972946d
commit
e62b08dffd
3 files changed
+111
No files matched your search
+16
@@ -0,0 +1,16 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<!-- Two elements share the id, one inside a shadow root on the mount and
|
||||
one later in the light DOM. The hierarchy dump orders a host's shadow
|
||||
children before its light ones, so a pre-order search there reaches the
|
||||
shadow one first; a light-DOM sweep that only descends afterwards
|
||||
reaches the other. The page exists to make the two walks disagree. -->
|
||||
<div id="mount" style="width: 200px; height: 80px"></div>
|
||||
<span id="x">light</span>
|
||||
<script>
|
||||
document.getElementById("mount").attachShadow({ mode: "open" }).innerHTML =
|
||||
'<span id="x">shadow</span>';
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
import { always, extract, taps } from "@sanderling/spec";
|
||||
|
||||
// Which of the two #x a selector means is the whole fixture. The reading is
|
||||
// compared between the two hosts by TestBrowserAxFindAgreesAcrossHosts, which
|
||||
// drives each host's production path and never asks one what the other said.
|
||||
//
|
||||
// Written in the "k:v" string grammar because that is the one form both hosts
|
||||
// resolve the same way: the object form {id: "x"} reaches the goja host as a
|
||||
// plain attribute filter, and a web hierarchy dump carries the id under
|
||||
// resource-id, so it matches nothing there.
|
||||
const found = extract((s) => s.ax.find("id:x")?.text).named("found");
|
||||
|
||||
const findsTheShadowMatch = always(() => found.current === "shadow");
|
||||
|
||||
export const properties = { findsTheShadowMatch };
|
||||
|
||||
export const actionsRoot = taps;
|
||||
Reference in new issue
Block a user