WEB: websocket-lanes upgrade-fail recovery #925

This commit is contained in:
Alexey
2026-09-10 23:11:36 +03:00
parent 844e41ea34
commit 479899240a
2 changed files with 39 additions and 5 deletions
+33
View File
@@ -217,6 +217,39 @@ fn rendered_page_preserves_exact_v1_status_control_envelope() {
assert!(!page.body.contains("port.postMessage({t:'status',state,"));
}
#[test]
fn committed_websocket_lane_escalates_only_pre_upgrade_failure() {
let page = render_page("LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 4);
assert!(page.body.contains("let upgraded=false,settled=false"));
assert!(page.body.contains(
"if(settled)return;settled=true;if(openTimer)clearTimeout(openTimer);openTimer=null"
));
assert!(page
.body
.contains("if(closed||lanes.get(lane.id)!==lane||lane.socket!==opened)return"));
assert!(page.body.contains(
"if(!upgraded){lane.socket=null;opened.close();recoveryController.recover(reason,null);return}"
));
assert!(page
.body
.contains("recoveryController.recover(reason,null);return}finishLane(lane,true)"));
assert!(page
.body
.contains("openTimer=setTimeout(()=>finishSocket('timeout'),websocketOpenMs)"));
assert!(page.body.contains(
"if(closed||lanes.get(lane.id)!==lane||lane.socket!==opened){opened.close();return}"
));
assert!(page.body.contains("upgraded=true;lane.ready=true"));
assert!(page
.body
.contains("lane.socket.onclose=()=>finishSocket(upgraded?'network':'upgrade')"));
assert!(page
.body
.contains("port.postMessage({t:'status',state})"));
assert!(!page.body.contains("port.postMessage({t:'status',state,"));
}
#[test]
fn bridge_diagnostic_sideband_is_absent_by_default() {
let page = render_page("IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", 4);