diff --git a/slhx-js/runtime/slhx.js b/slhx-js/runtime/slhx.js index b1a2de1..f935f85 100644 --- a/slhx-js/runtime/slhx.js +++ b/slhx-js/runtime/slhx.js @@ -214,6 +214,8 @@ if (pending.get(target)?.abort === abort) { pending.delete(target); showPending(target, false); + } else if (policy === "parallel") { + showPending(target, false); } finish(); } diff --git a/slhx-js/tests/runtime.rs b/slhx-js/tests/runtime.rs index e9da75e..7530e1a 100644 --- a/slhx-js/tests/runtime.rs +++ b/slhx-js/tests/runtime.rs @@ -152,6 +152,17 @@ fn runtime_latest_request_policy_releases_superseded_pending_state() { assert!(source.contains("if (pending.get(target)?.abort === abort)")); } +#[test] +fn runtime_parallel_request_policy_releases_each_pending_state() { + // req: convention/006 req: convention/007 req: convention/008 + let source = slhx_js::RUNTIME_JS; + + assert!(source.contains("else if (policy === \"parallel\") {\n showPending(target, false);\n }")); + assert!(source.contains("const pendingClassStates = new WeakMap()")); + assert!(source.contains("const indicatorStates = new WeakMap()")); + assert!(source.contains("const disabledStates = new WeakMap()")); +} + #[test] fn runtime_exposes_page_swap_hooks() { let source = slhx_js::RUNTIME_JS;