From 9d499d712b477875a39faff233f4a0de9d1e03f2 Mon Sep 17 00:00:00 2001 From: slhx agent Date: Mon, 25 May 2026 23:07:47 +0200 Subject: [PATCH] test(js): cover native nav escape hatches Cover page-swap guards that preserve native browser navigation for modified clicks, non-primary buttons, downloads, blank targets, cross-origin links, and prevented events. req: page_swap/007 req: failure/006 --- slhx-js/tests/runtime.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/slhx-js/tests/runtime.rs b/slhx-js/tests/runtime.rs index 0471c84..06ba537 100644 --- a/slhx-js/tests/runtime.rs +++ b/slhx-js/tests/runtime.rs @@ -115,6 +115,20 @@ fn runtime_exposes_page_swap_hooks() { assert!(source.contains("location.href = href")); } +#[test] +fn runtime_preserves_native_navigation_escape_hatches() { + // req: page_swap/007 req: failure/006 + let source = slhx_js::RUNTIME_JS; + + assert!(source.contains("function sameOriginNav(event, anchor)")); + assert!(source.contains("!event.defaultPrevented")); + assert!(source.contains("event.button === 0")); + assert!(source.contains("!event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey")); + assert!(source.contains("anchor.origin === location.origin")); + assert!(source.contains("!anchor.download")); + assert!(source.contains("anchor.target !== \"_blank\"")); +} + #[test] fn runtime_refuses_partial_updates_on_fingerprint_mismatch() { // req: abi/003 req: abi/004 req: runtime/004