Merge sx-tools: test coverage + bug fixes + Playwright fixes

- 7 new test files (~268 tests): stdlib, adapter-html, adapter-dom,
  boot-helpers, page-helpers, layout, tw-layout
- Fix component-pure? transitive scan, render-target crash on unknown
  components, &rest param binding (String vs Symbol), swap! extra args
- Fix 5 Playwright marshes tests: timing + test logic
- 2522/2522 OCaml tests, 173/173 Playwright tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

# Conflicts:
#	shared/static/wasm/sx/orchestration.sxbc
#	shared/static/wasm/sx_browser.bc.js
#	shared/static/wasm/sx_browser.bc.wasm.js
#	sx/sx/not-found.sx
#	tests/playwright/isomorphic.spec.js
This commit is contained in:
2026-04-02 18:59:45 +00:00
29 changed files with 1770 additions and 1359 deletions

View File

@@ -183,7 +183,9 @@
(div
:id "oob-box-b"
:sx-swap-oob "innerHTML"
(p (~tw :tokens "text-violet-600 font-medium") "Box B updated via OOB!")
(p
(~tw :tokens "text-violet-600 font-medium")
"Box B updated via OOB!")
(p (~tw :tokens "text-sm text-stone-500") (str "at " now)))
(~docs/oob-code
:target-id "oob-wire"
@@ -222,7 +224,8 @@
(fn
(i)
(div
(~tw :tokens "px-4 py-3 border-b border-stone-100 text-sm text-stone-700")
(~tw
:tokens "px-4 py-3 border-b border-stone-100 text-sm text-stone-700")
(str "Item " i " — loaded from page " page)))
(range start (+ start 5)))
(if
@@ -373,7 +376,9 @@
((email (helper "request-form" "email" "")))
(if
(or (= email "") (not (contains? email "@")))
(p (~tw :tokens "text-sm text-rose-600 mt-2") "Please enter a valid email.")
(p
(~tw :tokens "text-sm text-rose-600 mt-2")
"Please enter a valid email.")
(p
(~tw :tokens "text-sm text-emerald-600 mt-2")
(str "Form submitted with: " email)))))
@@ -626,13 +631,13 @@
(let
((color (nth anim-colors idx)))
(<>
(~anim-result :color color :time now)
(~examples/anim-result :color color :time now)
(~docs/oob-code
:target-id "anim-comp"
:text (helper "component-source" "~anim-result"))
:text (helper "component-source" "~examples/anim-result"))
(~docs/oob-code
:target-id "anim-wire"
:text (str "(~anim-result :color \"" color "\" :time \"" now "\")"))))))
:text (str "(~examples/anim-result :color \"" color "\" :time \"" now "\")"))))))
(defhandler
ex-dialog

View File

@@ -16,5 +16,6 @@
:sx-swap "outerHTML"
:sx-push-url "true"
(~tw
:tokens "inline-block mt-6 px-4 py-2 rounded border transition-colors text-violet-700 text-sm border-violet-200")
:tokens "inline-block mt-6 px-4 py-2 rounded border transition-colors")
:style (tw "text-violet-700 text-sm border-violet-200")
"Back to home")))