host/tests: Phase 1 — picker load/filter/paging/error-retry as SX engine tests
Port the rest of the relate-picker's interactive behaviours from Playwright into the SX harness, driving the real engine against the mock DOM: - load: the form's "load" trigger populates the results on first render - filter: a debounced "input" re-fetches and narrows the candidates - paging: revealing the load-more sentinel pages in the next page (outerHTML swap replaces the sentinel) - error-retry: a dropped fetch marks .sx-error, and the next request clears it Models two browser natives the OCaml runner lacks: observe-intersection (a recording stub the test fires to simulate the sentinel scrolling into view) and the synchronous-timer retry (stripped in the error test — backoff timing is a test-engine.sx concern; here we assert the visible state). Mock-DOM completeness (run_tests.ml): firstChild/lastChild on elements, so children-to-fragment can drain a parsed fragment into an innerHTML/outerHTML swap target. (Also repairs one pre-existing web test that needed firstChild.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2812,10 +2812,13 @@ let run_spec_tests env test_files =
|
||||
| "insertAdjacentHTML" | "prepend" | "showModal" | "show" | "close"
|
||||
| "getBoundingClientRect" | "getAnimations" | "scrollIntoView"
|
||||
| "scrollTo" | "scroll" | "reset" -> Bool true
|
||||
| "firstElementChild" ->
|
||||
| "firstElementChild" | "firstChild" ->
|
||||
(* the mock treats element children and child nodes alike, so
|
||||
firstChild == firstElementChild — children-to-fragment walks
|
||||
firstChild to drain a parsed fragment into a swap target. *)
|
||||
let kids = match Hashtbl.find_opt d "children" with Some (List l) -> l | _ -> [] in
|
||||
(match kids with c :: _ -> c | [] -> Nil)
|
||||
| "lastElementChild" ->
|
||||
| "lastElementChild" | "lastChild" ->
|
||||
let kids = match Hashtbl.find_opt d "children" with Some (List l) -> l | _ -> [] in
|
||||
(match List.rev kids with c :: _ -> c | [] -> Nil)
|
||||
| "nextElementSibling" | "nextSibling" ->
|
||||
|
||||
Reference in New Issue
Block a user