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:
@@ -358,7 +358,39 @@
|
||||
content
|
||||
(dom-set-inner-html main (host-get content "innerHTML"))
|
||||
(dom-set-inner-html main text)))
|
||||
(dom-set-inner-html main text)))
|
||||
(let
|
||||
((container (dom-create-element "div")))
|
||||
(let
|
||||
((rendered (sx-render text)))
|
||||
(when
|
||||
rendered
|
||||
(dom-append container rendered)
|
||||
(process-oob-swaps
|
||||
container
|
||||
(fn
|
||||
(t oob (s :as string))
|
||||
(dispose-islands-in t)
|
||||
(swap-dom-nodes
|
||||
t
|
||||
(if
|
||||
(= s "innerHTML")
|
||||
(children-to-fragment oob)
|
||||
oob)
|
||||
s)
|
||||
(post-swap t)))
|
||||
(let
|
||||
((content (select-from-container container "#sx-content")))
|
||||
(if
|
||||
content
|
||||
(do
|
||||
(dispose-islands-in main)
|
||||
(dom-set-inner-html main "")
|
||||
(dom-append main content))
|
||||
(do
|
||||
(dispose-islands-in main)
|
||||
(dom-set-inner-html
|
||||
main
|
||||
(dom-get-inner-html container))))))))))
|
||||
(post-swap main)
|
||||
(host-call (dom-window) "scrollTo" 0 scroll-y)))
|
||||
(fn (err) (log-warn (str "fetch-and-restore error: " err))))))
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -361,9 +361,14 @@
|
||||
(=
|
||||
(dom-get-attr old-node "data-sx-island")
|
||||
(dom-get-attr new-node "data-sx-island")))
|
||||
(do
|
||||
(let
|
||||
((old-state (dom-get-attr old-node "data-sx-state"))
|
||||
(new-state (dom-get-attr new-node "data-sx-state")))
|
||||
(sync-attrs old-node new-node)
|
||||
(morph-island-children old-node new-node))
|
||||
(if
|
||||
(and new-state (not (= old-state new-state)))
|
||||
(do (dispose-island old-node) (hydrate-island old-node))
|
||||
(morph-island-children old-node new-node)))
|
||||
(or
|
||||
(not (= (dom-node-type old-node) (dom-node-type new-node)))
|
||||
(not (= (dom-node-name old-node) (dom-node-name new-node))))
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -572,9 +572,7 @@
|
||||
(and settle-expr (not (empty? settle-expr)))
|
||||
(let
|
||||
((exprs (sx-parse settle-expr)))
|
||||
(for-each
|
||||
(fn (expr) (eval-expr expr (env-extend (dict))))
|
||||
exprs))))))
|
||||
(for-each (fn (expr) (cek-eval expr)) exprs))))))
|
||||
|
||||
(define
|
||||
activate-scripts
|
||||
@@ -1585,12 +1583,9 @@
|
||||
(pathname (url-pathname url)))
|
||||
(when
|
||||
target
|
||||
(if
|
||||
(try-client-route pathname target-sel)
|
||||
(browser-scroll-to 0 scrollY)
|
||||
(let
|
||||
((headers (dict "SX-History-Restore" "true")))
|
||||
(fetch-and-restore target url headers scrollY)))))))
|
||||
(let
|
||||
((headers (dict "SX-Request" "true")))
|
||||
(fetch-and-restore target url headers scrollY))))))
|
||||
|
||||
(define
|
||||
engine-init
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
shared/static/wasm/sx_browser.bc.wasm.assets/sx-de8114db.wasm
Normal file
BIN
shared/static/wasm/sx_browser.bc.wasm.assets/sx-de8114db.wasm
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1792,7 +1792,7 @@
|
||||
blake2_js_for_wasm_create: blake2_js_for_wasm_create};
|
||||
}
|
||||
(globalThis))
|
||||
({"link":[["runtime-0db9b496",0],["prelude-d7e4b000",0],["stdlib-23ce0836",[]],["sx-319ce79b",[2]],["jsoo_runtime-f96b44a8",[2]],["js_of_ocaml-651f6707",[2,4]],["dune__exe__Sx_browser-8ae21d0a",[2,3,5]],["std_exit-10fb8830",[2]],["start-80fdb768",0]],"generated":(b=>{var
|
||||
({"link":[["runtime-0db9b496",0],["prelude-d7e4b000",0],["stdlib-23ce0836",[]],["sx-de8114db",[2]],["jsoo_runtime-f96b44a8",[2]],["js_of_ocaml-651f6707",[2,4]],["dune__exe__Sx_browser-9ecd0d53",[2,3,5]],["std_exit-10fb8830",[2]],["start-80fdb768",0]],"generated":(b=>{var
|
||||
c=b,a=b?.module?.export||b;return{"env":{"caml_ba_kind_of_typed_array":()=>{throw new
|
||||
Error("caml_ba_kind_of_typed_array not implemented")},"caml_exn_with_js_backtrace":()=>{throw new
|
||||
Error("caml_exn_with_js_backtrace not implemented")},"caml_int64_create_lo_mi_hi":()=>{throw new
|
||||
|
||||
Reference in New Issue
Block a user