[INFO] cloning repository https://github.com/yie1d/browserkit [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/yie1d/browserkit" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyie1d%2Fbrowserkit", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyie1d%2Fbrowserkit'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] cf9745b910e2a4f748ff8ee76467949c0a15a8f6 [INFO] testing yie1d/browserkit against 1.97.0-beta.6+cargoflags=--release for beta-1.98-release-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyie1d%2Fbrowserkit" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/yie1d/browserkit [INFO] finished tweaking git repo https://github.com/yie1d/browserkit [INFO] tweaked toml for git repo https://github.com/yie1d/browserkit written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/yie1d/browserkit on toolchain 1.97.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/yie1d/browserkit already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded zmij v1.0.19 [INFO] [stderr] Downloaded tracing-appender v0.2.5 [INFO] [stderr] Downloaded symlink v0.1.0 [INFO] [stderr] Downloaded tempfile v3.25.0 [INFO] [stderr] Downloaded konst_macro_rules v0.2.19 [INFO] [stderr] Downloaded const_format v0.2.36 [INFO] [stderr] Downloaded clap_lex v1.0.0 [INFO] [stderr] Downloaded clap_complete v4.5.66 [INFO] [stderr] Downloaded clap v4.5.60 [INFO] [stderr] Downloaded konst v0.2.20 [INFO] [stderr] Downloaded clap_builder v4.5.60 [INFO] [stderr] Downloaded cdpkit v0.5.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80 [INFO] running `Command { std: "docker" "start" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling unicode-ident v1.0.22 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling zmij v1.0.19 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling utf-8 v0.7.6 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling powerfmt v0.2.0 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling data-encoding v2.10.0 [INFO] [stderr] Compiling clap_builder v4.5.60 [INFO] [stderr] Compiling deranged v0.3.11 [INFO] [stderr] Compiling indexmap v2.3.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling unicode-xid v0.2.6 [INFO] [stderr] Compiling konst_macro_rules v0.2.19 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling num-conv v0.1.0 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling time-core v0.1.2 [INFO] [stderr] Compiling time v0.3.36 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling tungstenite v0.28.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling konst v0.2.20 [INFO] [stderr] Compiling const_format_proc_macros v0.2.34 [INFO] [stderr] Compiling crossbeam-channel v0.5.15 [INFO] [stderr] Compiling symlink v0.1.0 [INFO] [stderr] Compiling tracing-appender v0.2.5 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling tokio-tungstenite v0.28.0 [INFO] [stderr] Compiling cdpkit v0.5.0 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling const_format v0.2.36 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling clap_complete v4.5.66 [INFO] [stderr] Compiling dashmap v5.5.3 [INFO] [stderr] Compiling fs2 v0.4.3 [INFO] [stderr] Compiling browserkit v0.2.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 4m 35s [INFO] running `Command { std: "docker" "inspect" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling linux-raw-sys v0.11.0 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling static_assertions v1.1.0 [INFO] [stderr] Compiling tempfile v3.25.0 [INFO] [stderr] Compiling browserkit v0.2.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 1m 45s [INFO] running `Command { std: "docker" "inspect" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.19s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/browserkit-a44512649af631fd) [INFO] [stdout] [INFO] [stdout] running 665 tests [INFO] [stdout] test browser::discover::tests::default_path_on_windows_contains_expected_segments ... ok [INFO] [stdout] test browser::discover::tests::discover_chrome_empty_file ... ok [INFO] [stdout] test browser::discover::tests::discover_chrome_nonexistent_path ... ok [INFO] [stdout] test browser::discover::tests::parse_invalid_port ... ok [INFO] [stdout] test browser::discover::tests::parse_empty_content ... ok [INFO] [stdout] test browser::discover::tests::discover_chrome_reads_valid_file ... ok [INFO] [stdout] test browser::discover::tests::parse_negative_port ... ok [INFO] [stdout] test browser::discover::tests::parse_port_only ... ok [INFO] [stdout] test browser::discover::tests::parse_port_with_leading_trailing_spaces ... ok [INFO] [stdout] test browser::discover::tests::parse_max_valid_port ... ok [INFO] [stdout] test browser::discover::tests::discover_chrome_invalid_port_in_file ... ok [INFO] [stdout] test browser::discover::tests::discover_chrome_missing_second_line ... ok [INFO] [stdout] test browser::discover::tests::parse_only_whitespace ... ok [INFO] [stdout] test browser::finder::discover_tests::known_edge_user_data_dirs_not_empty ... ok [INFO] [stdout] test browser::finder::discover_tests::known_chrome_user_data_dirs_not_empty ... ok [INFO] [stdout] test browser::discover::tests::parse_port_without_trailing_newline ... ok [INFO] [stdout] test browser::discover::tests::parse_port_overflow ... ok [INFO] [stdout] test browser::discover::tests::default_path_returns_some ... ok [INFO] [stdout] test browser::finder::discover_tests::parse_devtools_active_port_file ... ok [INFO] [stdout] test browser::finder::discover_tests::parse_devtools_active_port_port_only ... ok [INFO] [stdout] test browser::finder::setup_tests::chrome_install_paths_not_empty ... ok [INFO] [stdout] test browser::finder::setup_tests::setup_status_json_format ... ok [INFO] [stdout] test browser::discover::tests::parse_valid_devtools_port_content ... ok [INFO] [stdout] test browser::discover::tests::parse_zero_port ... ok [INFO] [stdout] test browser::tests::build_ws_url_dynamic_port ... ok [INFO] [stdout] test browser::finder::setup_tests::detect_installed_browser_returns_result ... ok [INFO] [stdout] test browser::tests::build_ws_url_empty_path_produces_bare_url ... ok [INFO] [stdout] test browser::finder::setup_tests::edge_install_paths_not_empty ... ok [INFO] [stdout] test browser::tests::build_ws_url_standard ... ok [INFO] [stdout] test browser::tests::build_ws_url_with_ip ... ok [INFO] [stdout] test browser::tests::normalize_bare_host_port ... ok [INFO] [stdout] test browser::tests::direct_websocket_targets_are_detected_for_cdpkit_0_5 ... ok [INFO] [stdout] test browser::finder::discover_tests::parse_devtools_active_port_invalid_content ... ok [INFO] [stdout] test browser::tests::managed_restore_upgrades_reused_browser_metadata_without_downgrade ... ok [INFO] [stdout] test browser::tests::normalize_empty_string_fallback ... ok [INFO] [stdout] test browser::finder::discover_tests::parse_devtools_active_port_missing_file ... ok [INFO] [stdout] test browser::tests::normalize_http_url ... ok [INFO] [stdout] test browser::tests::normalize_bare_ip_port ... ok [INFO] [stdout] test browser::tests::normalize_garbage_input_fallback ... ok [INFO] [stdout] test browser::tests::normalize_ws_dynamic_port ... ok [INFO] [stdout] test browser::tests::normalize_ws_ipv6_loopback ... ok [INFO] [stdout] test browser::tests::normalize_wss_url_with_guid ... ok [INFO] [stdout] test client::tests::build_request_creates_correct_request ... ok [INFO] [stdout] test client::tests::build_request_with_nested_params ... ok [INFO] [stdout] test browser::tests::normalize_https_url ... ok [INFO] [stdout] test client::tests::build_request_with_params ... ok [INFO] [stdout] test client::tests::daemon_start_timeout_allows_metadata_restore_window ... ok [INFO] [stdout] test client::tests::daemon_client_send_request_to_real_server ... ok [INFO] [stdout] test config::tests::default_config_has_sensible_values ... ok [INFO] [stdout] test config::tests::historical_runtime_config_keys_are_ignored ... ok [INFO] [stdout] test browser::tests::normalize_ws_url_no_path ... ok [INFO] [stdout] test browser::tests::normalize_ws_url_with_guid ... ok [INFO] [stdout] test browser::tests::normalize_ws_url_with_trailing_slash ... ok [INFO] [stdout] test client::tests::connect_only_returns_error_when_no_daemon ... ok [INFO] [stdout] test client::tests::connect_only_succeeds_when_daemon_is_running ... ok [INFO] [stdout] test config::tests::load_config_returns_default_when_file_missing ... ok [INFO] [stdout] test config::tests::parse_empty_config_uses_all_defaults ... ok [INFO] [stdout] test config::tests::parse_full_config ... ok [INFO] [stdout] test config::tests::parse_v2_limits_config ... ok [INFO] [stdout] test config::tests::parse_partial_config_uses_defaults ... ok [INFO] [stdout] test config::tests::parse_v2_limits_custom_values ... ok [INFO] [stdout] test daemon::dialog::tests::build_handle_params_accept_no_text ... ok [INFO] [stdout] test daemon::dialog::tests::build_handle_params_dismiss_ignores_text ... ok [INFO] [stdout] test daemon::dialog::tests::build_handle_params_accept_with_text ... ok [INFO] [stdout] test daemon::dialog::tests::dialog_state_cancel_all_for_session ... ok [INFO] [stdout] test daemon::dialog::tests::dialog_state_cancel_subscription_cleans_pending ... ok [INFO] [stdout] test daemon::dialog::tests::dialog_state_list_pending_for_session ... ok [INFO] [stdout] test daemon::dialog::tests::build_handle_params_dismiss ... ok [INFO] [stdout] test daemon::console::tests::session_console_routing_appends_to_session_tab_log ... ok [INFO] [stdout] test daemon::dialog::tests::dialog_state_take_pending_returns_none_when_empty ... ok [INFO] [stdout] test daemon::dialog::tests::dialog_type_as_ref_produces_lowercase_strings ... ok [INFO] [stdout] test daemon::dialog::tests::dialog_state_take_pending_removes ... ok [INFO] [stdout] test daemon::dialog::tests::dialog_state_set_and_get_pending ... ok [INFO] [stdout] test daemon::dialog::tests::policy_default_is_manual ... ok [INFO] [stdout] test daemon::dialog::tests::policy_from_str_invalid ... ok [INFO] [stdout] test daemon::dialog::tests::policy_from_str_valid ... ok [INFO] [stdout] test daemon::dialog::tests::dialog_state_policy_default_and_override ... ok [INFO] [stdout] test daemon::handler::act::tests::act_response_merges_action_specific_data ... ok [INFO] [stdout] test daemon::dialog::tests::policy_as_str_roundtrip ... ok [INFO] [stdout] test daemon::handler::act::tests::act_response_structure_click ... ok [INFO] [stdout] test daemon::handler::act::tests::act_response_structure_press_no_ref ... ok [INFO] [stdout] test daemon::handler::act::tests::act_response_with_state_diff ... ok [INFO] [stdout] test daemon::handler::act::tests::action_error_keeps_ref_not_found_classification ... ok [INFO] [stdout] test daemon::handler::act::tests::action_execution_timeout_passes_immediate_success ... ok [INFO] [stdout] test daemon::handler::act::tests::click_error_maps_missing_element_to_ref_not_found ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_act_no_active_tab ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_act_no_browser_connection ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_act_session_disconnected ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_act_session_not_found ... ok [INFO] [stdout] test daemon::dialog::tests::duplicate_subscription_insert_cancels_old_token ... ok [INFO] [stdout] test daemon::dialog::tests::pending_dialog_serializes_correctly ... ok [INFO] [stdout] test daemon::handler::act::tests::action_error_maps_selector_not_found_before_ref_not_found ... ok [INFO] [stdout] test daemon::handler::act::tests::click_new_tab_matches_session_and_opener ... ok [INFO] [stdout] test daemon::handler::act::tests::action_execution_timeout_returns_timeout_error ... ok [INFO] [stdout] test daemon::handler::act::tests::click_new_tab_timeout_returns_none_without_failing ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_fill_uses_session_resolution ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_act_target_not_in_session ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_new_simple_actions_use_session_resolution ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_upload_and_drag_use_session_resolution ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_click_no_ref_no_coords_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_click_partial_coords_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_click_requires_exactly_one_target_mode ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_defaults ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_drag_rejects_incompatible_fields ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_fill_accepts_refs_and_rejects_indexes ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_fill_distinguishes_fields_array_validation ... ok [INFO] [stdout] test daemon::handler::act::tests::handle_select_and_options_use_session_resolution ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_invalid_kind_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_fill_rejects_action_specific_fields ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_hover_and_focus_require_ref ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_kind_press_combo ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_kind_click ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_kind_type_append ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_missing_kind_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_options_rejects_incompatible_fields ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_kind_type ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_rejects_mixed_key_types ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_rejects_workspace_fields ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_press_no_keys_field_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_kind_press ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_kind_click_with_coords ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_rejects_wrong_field_types ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_press_empty_keys_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_scroll_defaults_to_down_without_target ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_scroll_non_positive_amount_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_scroll_hover_and_focus ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_scroll_stores_selector_and_ref_shapes ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_select_and_options_validate_fields ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_type_missing_ref_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_select_rejects_incompatible_fields ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_type_missing_text_is_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_upload_and_drag_require_complete_targets ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_upload_rejects_incompatible_fields ... ok [INFO] [stdout] test daemon::handler::act::tests::type_error_keeps_other_failures_as_js_error ... ok [INFO] [stdout] test daemon::handler::act::tests::upload_error_keeps_other_failures_as_js_error ... ok [INFO] [stdout] test daemon::handler::act::tests::upload_error_maps_ref_target_resolution_to_ref_not_found ... ok [INFO] [stdout] test daemon::handler::act::tests::upload_error_maps_file_validation_to_file_not_found ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_existing_kinds_reject_upload_and_drag_fields ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_default_session_accepts_explicit_default_context_id ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_scroll_invalid_direction_is_error ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_default_session_accepts_implicit_default_context_id ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_default_session_rejects_unknown_context_when_default_id_is_known ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_rejects_isolated_session_even_when_browser_context_matches ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_rejects_target_from_another_browser_context ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_handler_rejects_isolated_session_before_browser_lookup ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_rejects_duplicate_session_ownership ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_with_session_and_target ... ok [INFO] [stdout] test daemon::handler::browser::tests::browser_list_counts_sessions_by_host ... ok [INFO] [stdout] test daemon::handler::browser::tests::browser_disconnect_partial_cleanup_response_is_structured_daemon_error ... ok [INFO] [stdout] test daemon::handler::act::tests::parse_act_upload_validates_files_shape ... ok [INFO] [stdout] test daemon::handler::browser::tests::browser_session_cleanup_marks_matching_sessions_and_cancels_watcher ... ok [INFO] [stdout] test daemon::handler::act::tests::upload_error_maps_selector_target_resolution_to_selector_not_found ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_requires_existing_session ... ok [INFO] [stdout] test daemon::handler::attach::tests::attach_pattern_requires_one_match ... ok [INFO] [stdout] test daemon::handler::common::tests::explicit_missing_session_does_not_fall_back ... ok [INFO] [stdout] test daemon::handler::browser::tests::browser_session_cleanup_reports_failed_targets_without_counting_session_closed ... ok [INFO] [stdout] test daemon::handler::common::tests::non_string_session_is_invalid_argument ... ok [INFO] [stdout] test daemon::handler::common::tests::explicit_missing_target_does_not_use_active_target ... ok [INFO] [stdout] test daemon::handler::common::tests::non_string_target_is_invalid_argument ... ok [INFO] [stdout] test daemon::handler::connect::tests::bind_session_state_rejects_live_session_on_different_browser ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_already_connected_with_browser ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_new_default_session_uses_default_browser_context ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_new_named_session_requires_browser_context_id ... ok [INFO] [stdout] test daemon::handler::connect::tests::bind_session_state_restores_disconnected_explicit_session ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_new_named_session_uses_isolated_browser_context ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_not_connected_returns_browser_not_running ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_rejects_new_named_session_when_session_limit_reached ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_rejects_non_string_session ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_result_already_connected ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_result_formats_correctly ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_running_no_debug_returns_remote_debug_error ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_result_already_connected_format ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_does_not_apply_session_limit_to_default_session ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_running_with_port_but_refused ... ok [INFO] [stdout] test daemon::handler::connect::tests::connect_session_name_from_params ... ok [INFO] [stdout] test daemon::handler::connect::tests::reconnect_isolated_session_replaces_missing_context_and_stale_tabs ... ok [INFO] [stdout] test daemon::handler::connect::tests::reconnect_default_session_reattaches_persisted_tabs_before_connecting ... ok [INFO] [stdout] test daemon::handler::daemon::tests::daemon_status_reports_sessions_only ... ok [INFO] [stdout] test daemon::handler::daemon::tests::daemon_status_exposes_persistence_disabled_reason ... ok [INFO] [stdout] test daemon::handler::daemon::tests::daemon_status_exposes_migration_report ... ok [INFO] [stdout] test daemon::handler::daemon::tests::daemon_stop_handler_prepares_response_without_signaling_shutdown ... ok [INFO] [stdout] test daemon::handler::daemon::tests::daemon_stop_reports_cleanup_errors_without_claiming_failed_sessions_closed ... ok [INFO] [stdout] test daemon::handler::dialog::tests::dialog_accept_explicit_target_without_pending_dialog_is_structured_error ... ok [INFO] [stdout] test daemon::handler::daemon::tests::daemon_stop_reports_sessions_and_cancels_watchers ... ok [INFO] [stdout] test daemon::handler::dialog::tests::dialog_accept_omitted_target_rejects_ambiguous_pending_dialogs_with_structured_error ... ok [INFO] [stdout] test daemon::handler::dialog::tests::dialog_list_uses_session_and_target_fields ... ok [INFO] [stdout] test daemon::handler::dialog::tests::dialog_accept_keeps_pending_when_cdp_session_resolution_fails ... ok [INFO] [stdout] test daemon::handler::dialog::tests::dialog_policy_uses_session_field ... ok [INFO] [stdout] test daemon::handler::connect::tests::bind_session_state_creates_default_session_for_explicit_endpoint ... ok [INFO] [stdout] test daemon::handler::download::tests::download_click_explicitly_skips_new_tab_observation ... ok [INFO] [stdout] test daemon::handler::download::tests::download_events_are_correlated_by_frame_and_guid ... ok [INFO] [stdout] test daemon::handler::dialog::tests::dialog_actions_validate_non_string_target_before_session_lookup ... ok [INFO] [stdout] test daemon::handler::dialog::tests::dialog_accept_omitted_target_rejects_zero_pending_dialogs_with_structured_error ... ok [INFO] [stdout] test daemon::handler::download::tests::completed_download_without_chrome_path_does_not_guess_existing_file ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::handle_evaluate_browser_disconnected ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::handle_evaluate_no_active_tab ... ok [INFO] [stdout] test daemon::handler::download::tests::completed_download_path_must_stay_inside_output_directory ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::handle_evaluate_session_not_found ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::handle_evaluate_session_disconnected ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::handle_evaluate_target_not_found ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::validate_evaluate_params_supports_disabling_await_promise ... ok [INFO] [stdout] test daemon::handler::download::tests::download_requires_an_existing_absolute_directory ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::validate_evaluate_params_with_all_fields ... ok [INFO] [stdout] test daemon::handler::inspect::tests::canonical_inspect_payload_uses_session_target_not_wid_tid ... ok [INFO] [stdout] test daemon::handler::inspect::tests::inspect_commands_use_session_resolution ... ok [INFO] [stdout] test daemon::handler::inspect::tests::canonical_inspect_payload_rejects_non_object_fields ... ok [INFO] [stdout] test daemon::handler::inspect::tests::pdf_rejects_url_before_session_resolution ... ok [INFO] [stdout] test daemon::handler::navigate::tests::handle_navigate_browser_disconnected ... ok [INFO] [stdout] test daemon::handler::navigate::tests::handle_navigate_no_active_tab ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::validate_evaluate_params_missing_expression ... ok [INFO] [stdout] test daemon::handler::evaluate::tests::validate_evaluate_params_basic ... ok [INFO] [stdout] test daemon::handler::download::tests::download_rejects_invalid_ref_and_timeout_before_session_lookup ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_back ... ok [INFO] [stdout] test daemon::handler::navigate::tests::handle_navigate_target_not_in_session ... ok [INFO] [stdout] test daemon::handler::navigate::tests::handle_navigate_session_disconnected ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_default_timeout ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_false_booleans_ignored ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_no_action_is_error ... ok [INFO] [stdout] test daemon::handler::navigate::tests::handle_navigate_session_not_found ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_forward ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_url_scheme_allows_http ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_rejects_multiple_actions ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_reload ... ok [INFO] [stdout] test daemon::handler::navigate::tests::handle_navigate_rejects_javascript_url ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_url ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_url_scheme_blocks_javascript ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_url_scheme_blocks_data_text_html ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_event_overflow_is_structured ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_completed_response_is_metadata_only ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_matches_only_xhr_and_fetch_urls ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_pending_slots_never_exceed_requested_count ... ok [INFO] [stdout] test daemon::handler::navigate::tests::validate_navigate_params_with_session_and_target ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_rejects_out_of_range_count_and_timeout ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_reconciles_terminal_events_that_arrive_before_response ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_requires_non_empty_pattern ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_terminal_buffer_is_bounded_and_reports_overflow ... ok [INFO] [stdout] test daemon::handler::open::tests::handle_open_missing_url ... ok [INFO] [stdout] test daemon::handler::open::tests::handle_open_session_not_found ... ok [INFO] [stdout] test daemon::handler::network::tests::network_watch_selection_does_not_starve_finished_or_failed_events ... ok [INFO] [stdout] test daemon::handler::open::tests::handle_open_no_browser_connection ... ok [INFO] [stdout] test daemon::handler::open::tests::register_opened_target_adds_owned_tab_when_untracked ... ok [INFO] [stdout] test daemon::handler::open::tests::session_not_found_error ... ok [INFO] [stdout] test daemon::handler::open::tests::register_opened_target_keeps_watcher_registered_tab ... ok [INFO] [stdout] test daemon::handler::open::tests::tab_limit_under_max_is_ok ... ok [INFO] [stdout] test daemon::handler::open::tests::handle_open_rejects_javascript_url ... ok [INFO] [stdout] test daemon::handler::open::tests::validate_open_params_requires_url ... ok [INFO] [stdout] test daemon::handler::open::tests::handle_open_session_disconnected ... ok [INFO] [stdout] test daemon::handler::open::tests::validate_open_params_with_session ... ok [INFO] [stdout] test daemon::handler::open::tests::handle_open_tab_limit_exceeded ... ok [INFO] [stdout] test daemon::handler::open::tests::validate_url_scheme_allows_http ... ok [INFO] [stdout] test daemon::handler::open::tests::tab_limit_zero_means_unlimited ... ok [INFO] [stdout] test daemon::handler::open::tests::validate_open_params_accepts_url ... ok [INFO] [stdout] test daemon::handler::open::tests::validate_url_scheme_blocks_data_text_html ... ok [INFO] [stdout] test daemon::handler::open::tests::tab_limit_exceeded_check ... ok [INFO] [stdout] test daemon::handler::open::tests::validate_url_scheme_blocks_javascript ... ok [INFO] [stdout] test daemon::handler::open::tests::validate_url_scheme_blocks_javascript_case_insensitive ... ok [INFO] [stdout] test daemon::handler::screenshot::tests::handle_screenshot_no_active_tab ... ok [INFO] [stdout] test daemon::handler::screenshot::tests::handle_screenshot_session_disconnected ... ok [INFO] [stdout] test daemon::handler::screenshot::tests::handle_screenshot_session_not_found ... ok [INFO] [stdout] test daemon::handler::screenshot::tests::handle_screenshot_target_not_found ... ok [INFO] [stdout] test daemon::handler::screenshot::tests::validate_screenshot_params_defaults ... ok [INFO] [stdout] test daemon::handler::screenshot::tests::validate_screenshot_params_custom ... ok [INFO] [stdout] test daemon::handler::screenshot::tests::handle_screenshot_browser_disconnected ... ok [INFO] [stdout] test daemon::handler::session::tests::clear_default_tabs_when_no_default_session ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_cookies_clear_session_not_found ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_cookies_get_disconnected_session ... ok [INFO] [stdout] test daemon::handler::session::tests::exported_cookie_json_round_trips_through_import_validation ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_cookies_get_session_not_found ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_cookies_set_missing_cookies_returns_error ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_cookies_set_file_not_found ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_cookies_set_invalid_cookie_format ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_session_close_missing_session_returns_ok_for_default ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_session_close_nonexistent_isolated_returns_error ... ok [INFO] [stdout] test daemon::handler::session::tests::isolated_cookie_scope_never_falls_back_to_browser ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_session_close_removes_only_successful_mixed_tab_actions ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_session_list_returns_all_sessions ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_cookies_set_non_array_file ... ok [INFO] [stdout] test daemon::handler::session::tests::handle_cookies_set_invalid_json_file ... ok [INFO] [stdout] test daemon::handler::session::tests::isolated_cookie_scope_requires_context_id ... ok [INFO] [stdout] test daemon::handler::session::tests::local_storage_export_rejects_invalid_or_non_object_json ... ok [INFO] [stdout] test daemon::handler::session::tests::response_cookie_canonicalizes_to_cookie_param_json ... ok [INFO] [stdout] test daemon::handler::session::tests::session_close_nonexistent_noop ... ok [INFO] [stdout] test daemon::handler::session::tests::session_close_plan_preserves_mixed_tab_ownership ... ok [INFO] [stdout] test daemon::handler::session::tests::session_limit_check_at_limit ... ok [INFO] [stdout] test daemon::handler::session::tests::session_close_removes_session ... ok [INFO] [stdout] test daemon::handler::session::tests::session_close_default_only_removes_tabs ... ok [INFO] [stdout] test daemon::handler::session::tests::session_limit_check_unlimited ... ok [INFO] [stdout] test daemon::handler::session::tests::session_list_empty ... ok [INFO] [stdout] test daemon::handler::session::tests::session_limit_ignores_default_session ... ok [INFO] [stdout] test daemon::handler::session::tests::storage_get_cookies_command_uses_typed_context_id ... ok [INFO] [stdout] test daemon::handler::session::tests::storage_import_state_accepts_canonical_json_shape ... ok [INFO] [stdout] test daemon::handler::session::tests::session_list_response_format ... ok [INFO] [stdout] test daemon::handler::session::tests::session_limit_check_under_limit ... ok [INFO] [stdout] test daemon::handler::session::tests::session_list_includes_disconnected_flag ... ok [INFO] [stdout] test daemon::handler::session::tests::storage_import_state_rejects_non_string_local_storage_values ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::compact_mode_limits ... ok [INFO] [stdout] test daemon::handler::session::tests::storage_import_state_requires_complete_shape ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::element_to_json_basic ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::dom_stable_js_contains_mutation_observer ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::element_to_json_none_ref ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::element_to_json_with_all_optional_fields ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::handle_snapshot_no_active_tab ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::handle_snapshot_no_browser_connection ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::handle_snapshot_session_disconnected ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::handle_snapshot_target_not_in_session ... ok [INFO] [stdout] test daemon::handler::session::tests::storage_import_state_rejects_malformed_cookies_before_mutation ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::handle_snapshot_session_not_found ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_truncation_at_newline ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::handle_snapshot_with_explicit_session ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_truncation_cjk_boundary ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_truncation_mid_multibyte ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_truncation_within_limit ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_wrapping ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_wrapping_empty ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_truncation_at_sentence ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::snapshot_content_budget_is_bounded_and_deterministic ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::snapshot_content_without_budget_is_unchanged ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_truncation_emoji_boundary ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::page_text_truncation_exceeds_limit ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::snapshot_rejects_invalid_token_budget_before_session_lookup ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::snapshot_metadata_reports_independent_truncation_reasons ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::snapshot_response_structure ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::snapshot_response_with_elements ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::validate_snapshot_params_custom ... ok [INFO] [stdout] test daemon::handler::tabs::tests::close_last_tab_leaves_no_active ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::validate_snapshot_params_defaults ... ok [INFO] [stdout] test daemon::handler::snapshot::tests::wait_strategy_from_str ... ok [INFO] [stdout] test daemon::handler::tabs::tests::close_validates_non_string_target_before_session_lookup ... ok [INFO] [stdout] test daemon::handler::tabs::tests::close_rejects_non_string_target_without_touching_active_tab ... ok [INFO] [stdout] test daemon::handler::tabs::tests::close_nonexistent_session_is_noop ... ok [INFO] [stdout] test daemon::handler::tabs::tests::tabs_empty_session ... ok [INFO] [stdout] test daemon::handler::tabs::tests::tabs_response_format ... ok [INFO] [stdout] test daemon::handler::tabs::tests::tabs_active_flag_accuracy ... ok [INFO] [stdout] test daemon::handler::tabs::tests::tabs_session_not_found ... ok [INFO] [stdout] test daemon::handler::tabs::tests::tabs_disconnected_session ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_js_eval_and_await_are_removed_from_public_commands ... ok [INFO] [stdout] test daemon::handler::tests::canonical_routes_reject_non_string_session_and_target_selectors ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_legacy_navigation_actions_are_removed_from_public_commands ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_nav_wait_is_removed_from_public_commands ... ok [INFO] [stdout] test daemon::handler::tests::developer_routes_use_session_resolution ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_download_uses_session_native_handler ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_network_watch_uses_session_native_handler ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_page_screenshot_is_removed_from_public_commands ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_page_wait_is_removed_from_public_commands ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_page_state_and_info_are_removed_from_public_commands ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_removed_act_keys_route_is_unknown ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_removed_click_and_type_routes_are_unknown ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_removed_scroll_hover_focus_routes_are_unknown ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_removed_fill_route_is_unknown ... ok [INFO] [stdout] test daemon::handler::tabs::tests::close_removes_tab_and_updates_active ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_removed_select_and_options_routes_are_unknown ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_removed_upload_and_drag_routes_are_unknown ... ok [INFO] [stdout] test daemon::handler::tests::dispatch_wait_uses_v2_session_handler ... ok [INFO] [stdout] test daemon::handler::tests::removed_route_families_are_unknown ... ok [INFO] [stdout] test daemon::handler::tests::removed_streaming_developer_routes_are_unknown ... ok [INFO] [stdout] test daemon::handler::wait::tests::validate_wait_params_accepts_session_target_and_timeout ... ok [INFO] [stdout] test daemon::handler::wait::tests::handle_wait_session_not_found ... ok [INFO] [stdout] test daemon::handler::wait::tests::validate_wait_params_requires_condition ... ok [INFO] [stdout] test daemon::handler::wait::tests::validate_wait_params_defaults_to_default_session ... ok [INFO] [stdout] test daemon::persist::migrate_v2::tests::corrupt_state_is_preserved_and_disables_persistence ... ok [INFO] [stdout] test daemon::persist::migrate_v2::tests::mixed_v2_state_migrates_deterministically ... ok [INFO] [stdout] test daemon::persist::migrate_v2::tests::future_state_is_preserved_and_disables_persistence ... ok [INFO] [stdout] test daemon::handler::wait::tests::handle_wait_no_active_tab ... ok [INFO] [stdout] test daemon::handler::wait::tests::handle_wait_session_disconnected ... ok [INFO] [stdout] test daemon::persist::migrate_v2::tests::v3_direct_load_preserves_file_and_migration_metadata_without_backup ... ok [INFO] [stdout] test daemon::persist::migrate_v2::tests::v2_load_preserves_existing_backup_and_reports_numbered_path ... ok [INFO] [stdout] test daemon::persist::tests::persisted_session_tab_ownership_round_trips ... ok [INFO] [stdout] test daemon::persist::tests::persisted_state_includes_migration_metadata ... ok [INFO] [stdout] test daemon::persist::tests::persisted_v3_has_only_session_fields ... ok [INFO] [stdout] test daemon::persist::tests::prepare_restore_makes_sessions_visible_and_disconnected_before_network ... ok [INFO] [stdout] test daemon::protocol::tests::from_bkerror_produces_error_response ... ok [INFO] [stdout] test daemon::protocol::tests::read_request_parses_valid_json_line ... ok [INFO] [stdout] test daemon::protocol::tests::read_request_returns_error_on_invalid_json ... ok [INFO] [stdout] test daemon::persist::migrate_v2::tests::v2_load_creates_backup_before_v3_write ... ok [INFO] [stdout] test daemon::handler::tests::session_storage_routes_require_session_target ... ok [INFO] [stdout] test daemon::protocol::tests::read_request_returns_none_on_eof ... ok [INFO] [stdout] test daemon::protocol::tests::request_token_some_is_serialized ... ok [INFO] [stdout] test daemon::protocol::tests::request_roundtrip ... ok [INFO] [stdout] test daemon::protocol::tests::request_default_params_is_null ... ok [INFO] [stdout] test daemon::protocol::tests::request_token_none_is_not_serialized ... ok [INFO] [stdout] test daemon::protocol::tests::request_with_token_deserializes ... ok [INFO] [stdout] test daemon::protocol::tests::request_without_token_field_defaults_to_none ... ok [INFO] [stdout] test daemon::persist::migrate_v2::tests::v2_write_failure_preserves_original_and_created_backup ... ok [INFO] [stdout] test daemon::protocol::tests::response_err_skips_none_fields ... ok [INFO] [stdout] test daemon::protocol::tests::response_err_roundtrip ... ok [INFO] [stdout] test daemon::protocol::tests::response_error_detail_custom_suggestion ... ok [INFO] [stdout] test daemon::protocol::tests::response_error_detail_json_wire_format ... ok [INFO] [stdout] test daemon::protocol::tests::response_err_builds_error ... ok [INFO] [stdout] test daemon::protocol::tests::response_legacy_err_unchanged ... ok [INFO] [stdout] test daemon::protocol::tests::response_error_detail_has_correct_structure ... ok [INFO] [stdout] test daemon::protocol::tests::response_ok_builds_success ... ok [INFO] [stdout] test daemon::protocol::tests::response_ok_roundtrip ... ok [INFO] [stdout] test daemon::protocol::tests::response_ok_skips_none_fields ... ok [INFO] [stdout] test daemon::protocol::tests::write_response_produces_json_line ... ok [INFO] [stdout] test daemon::server::tests::daemon_status_returns_info ... ok [INFO] [stdout] test daemon::server::tests::cleanup_sessions_respects_zero_timeout ... ok [INFO] [stdout] test daemon::server::tests::cleanup_expired_session_plan_preserves_mixed_tab_ownership ... ok [INFO] [stdout] test daemon::server::tests::cleanup_expired_sessions_keeps_expired_isolated_when_browser_missing ... ok [INFO] [stdout] test daemon::server::tests::cleanup_removes_only_successfully_closed_default_tabs ... ok [INFO] [stdout] test daemon::server::tests::daemon_stop_response_flush_success_signals_shutdown_after_flush ... ok [INFO] [stdout] test daemon::handler::connect::tests::disconnect_waits_for_inflight_session_bind ... ok [INFO] [stdout] test daemon::protocol::tests::read_request_rejects_oversized_line ... ok [INFO] [stdout] test daemon::server::tests::daemon_stop_response_write_failure_does_not_signal_shutdown ... ok [INFO] [stdout] test daemon::server::tests::server_binds_and_returns_port ... ok [INFO] [stdout] test daemon::server::tests::server_accepts_request_with_valid_token ... ok [INFO] [stdout] test daemon::handler::connect::tests::concurrent_named_session_bind_creates_one_browser_context ... ok [INFO] [stdout] test daemon::server::tests::server_handles_concurrent_connections ... ok [INFO] [stdout] test daemon::server::tests::server_handles_invalid_json ... ok [INFO] [stdout] test daemon::server::tests::server_rejects_request_without_token ... ok [INFO] [stdout] test daemon::session::tests::session_check_connected_err_when_disconnected ... ok [INFO] [stdout] test daemon::session::tests::session_check_connected_ok_when_connected ... ok [INFO] [stdout] test daemon::server::tests::server_responds_to_ping ... ok [INFO] [stdout] test daemon::server::tests::server_handles_multiple_requests ... ok [INFO] [stdout] test daemon::session::tests::session_last_active_updates ... ok [INFO] [stdout] test daemon::session::tests::session_mode_default_and_isolated ... ok [INFO] [stdout] test daemon::server::tests::server_no_token_configured_allows_all ... ok [INFO] [stdout] test daemon::session::tests::session_remove_tab_when_not_active ... ok [INFO] [stdout] test daemon::server::tests::server_rejects_request_with_wrong_token ... ok [INFO] [stdout] test daemon::session::tests::session_serialization_roundtrip ... ok [INFO] [stdout] test daemon::session::tests::session_tab_limit_check ... ok [INFO] [stdout] test daemon::session::tests::session_mode_serializes_lowercase ... ok [INFO] [stdout] test daemon::session::tests::session_disconnected_flag ... ok [INFO] [stdout] test daemon::session::tests::session_tab_ownership_round_trips ... ok [INFO] [stdout] test daemon::session::tests::session_remove_all_tabs ... ok [INFO] [stdout] test daemon::session::tests::session_tracks_tabs ... ok [INFO] [stdout] test daemon::state::tests::cleanup_sessions_on_browser_disconnect ... ok [INFO] [stdout] test daemon::state::tests::cleanup_sessions_unrelated_session_not_affected ... ok [INFO] [stdout] test daemon::state::tests::connection_identity_rejects_stale_replacement_monitor ... ok [INFO] [stdout] test daemon::state::tests::daemon_state_new_is_empty ... ok [INFO] [stdout] test daemon::state::tests::disconnect_sessions_for_host_cancels_live_subscription_handles ... ok [INFO] [stdout] test daemon::target_close::tests::attached_empty_session_id_is_already_detached_without_browser ... ok [INFO] [stdout] test daemon::target_close::tests::close_action_follows_session_tab_ownership ... ok [INFO] [stdout] test daemon::target_close::tests::default_session_context_disposal_is_noop_without_browser ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::ambiguous_browser_context_does_not_choose_a_session ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::destroyed_target_is_removed_from_owning_session ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::destroyed_target_emits_lifecycle_event ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::open_wins_registration_emits_created_once_and_tracks_owned_tab ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::opener_target_maps_new_target_to_the_same_session ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::opener_target_on_another_host_is_ignored ... ok [INFO] [stdout] test daemon::target_close::tests::isolated_session_context_disposal_requires_browser_when_context_exists ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::target_info_update_mutates_owning_session_and_emits_event ... ok [INFO] [stdout] test daemon::target_close::tests::owned_target_requires_browser_cdp ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::browser_context_on_another_host_is_ignored ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::target_tracking_keeps_only_page_targets ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::target_watcher_token_replaces_cancelled_entry ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::unique_isolated_browser_context_maps_to_session ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::watcher_wins_registration_is_idempotent_without_ownership_overwrite ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::target_owner_is_unique_across_sessions ... ok [INFO] [stdout] test daemon::tests::lock_file_path_is_under_bk_home ... ok [INFO] [stdout] test daemon::tests::check_existing_daemon_returns_none_when_no_daemon ... ok [INFO] [stdout] test daemon::tests::failed_lock_path_does_not_touch_port_file ... ok [INFO] [stdout] test daemon::tests::bk_home_returns_dot_bk_under_home ... ok [INFO] [stdout] test daemon::tests::read_port_file_returns_none_when_missing ... ok [INFO] [stdout] test daemon::tests::remove_port_file_is_idempotent ... ok [INFO] [stdout] test daemon::tests::port_file_path_is_under_bk_home ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::target_watcher_token_is_idempotent_for_concurrent_same_host_calls ... ok [INFO] [stdout] test daemon::target_lifecycle::tests::concurrent_registration_allows_only_one_session_to_win ... ok [INFO] [stdout] test daemon::server::tests::server_shutdown_via_daemon_stop ... ok [INFO] [stdout] test daemon::tests::start_daemon_cleans_stale_port_file ... ok [INFO] [stdout] test daemon::tests::shutdown_signal_propagates_to_caller_rx ... ok [INFO] [stdout] test daemon::token::tests::generate_token_is_64_hex_chars ... ok [INFO] [stdout] test daemon::token::tests::generate_token_is_unique ... ok [INFO] [stdout] test daemon::tests::start_daemon_creates_server_and_writes_port_file ... ok [INFO] [stdout] test daemon::token::tests::token_file_path_is_under_bk_home ... ok [INFO] [stdout] test error::error_code_tests::download_failed_error_contract ... ok [INFO] [stdout] test error::error_code_tests::error_code_deserializes_from_screaming_snake ... ok [INFO] [stdout] test error::error_code_tests::error_code_recoverable_classification ... ok [INFO] [stdout] test error::error_code_tests::error_code_serializes_as_screaming_snake ... ok [INFO] [stdout] test daemon::tests::start_daemon_rejects_when_already_running ... ok [INFO] [stdout] test error::error_code_tests::error_code_suggestion_is_non_empty ... ok [INFO] [stdout] test daemon::tests::try_acquire_daemon_lock_fails_when_already_held ... ok [INFO] [stdout] test error::error_code_tests::file_write_failed_error_contract ... ok [INFO] [stdout] test daemon::tests::stop_daemon_cleanup_removes_port_file ... ok [INFO] [stdout] test error::error_code_tests::target_already_attached_error_contract ... ok [INFO] [stdout] test daemon::tests::try_acquire_daemon_lock_succeeds_when_free ... ok [INFO] [stdout] test page::capture::tests::capture_element_js_escapes_quotes_in_selector ... ok [INFO] [stdout] test page::capture::tests::capture_element_js_no_json_parse ... ok [INFO] [stdout] test page::capture::tests::get_html_js_no_json_parse ... ok [INFO] [stdout] test page::capture::tests::get_html_js_non_ascii_selector ... ok [INFO] [stdout] test daemon::tests::write_and_read_port_file_roundtrip ... ok [INFO] [stdout] test daemon::token::tests::read_token_file_returns_none_when_missing ... ok [INFO] [stdout] test daemon::token::tests::write_and_read_token_roundtrip ... ok [INFO] [stdout] test page::capture::tests::inject_labels_fullpage_js_adds_scroll_offset ... ok [INFO] [stdout] test page::capture::tests::inject_labels_fullpage_js_uses_absolute_positioning ... ok [INFO] [stdout] test page::capture::tests::inject_labels_js_penetrates_shadow_dom ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_creates_div_element ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_disables_pointer_events ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_has_high_z_index ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_positions_at_element_coordinates ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_returns_count ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_uses_bk_label_class ... ok [INFO] [stdout] test page::capture::tests::pdf_output_path_allows_relative_file ... ok [INFO] [stdout] test page::capture::tests::remove_labels_js_queries_bk_label_class ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_uses_fixed_positioning ... ok [INFO] [stdout] test page::capture::tests::pdf_output_path_rejects_absolute_path ... ok [INFO] [stdout] test page::capture::tests::pdf_output_path_rejects_parent_traversal ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_filters_invisible_elements ... ok [INFO] [stdout] test page::capture::tests::remove_labels_js_removes_each_label ... ok [INFO] [stdout] test page::capture::tests::remove_labels_js_returns_count ... ok [INFO] [stdout] test page::capture::tests::inject_labels_viewport_js_uses_same_selectors_as_discover ... ok [INFO] [stdout] test page::element_ref::tests::error_wrapping_node_not_found_produces_ref_gone ... ok [INFO] [stdout] test page::element_ref::tests::error_wrapping_non_node_errors_produce_cdp_variant ... ok [INFO] [stdout] test page::capture::tests::inject_and_remove_labels_use_matching_class_name ... ok [INFO] [stdout] test page::element_ref::tests::get_element_out_of_range ... ok [INFO] [stdout] test page::element_ref::tests::get_element_valid_index ... ok [INFO] [stdout] test page::element_ref::tests::is_node_not_found_detects_common_messages ... ok [INFO] [stdout] test page::element_ref::tests::parse_element_target_index ... ok [INFO] [stdout] test page::element_ref::tests::parse_element_target_neither ... ok [INFO] [stdout] test page::element_ref::tests::parse_element_target_ref ... ok [INFO] [stdout] test page::element_ref::tests::parse_element_target_ref_takes_priority ... ok [INFO] [stdout] test page::element_ref::tests::quad_center_computes_correctly ... ok [INFO] [stdout] test page::element_ref::tests::quad_center_empty_quad ... ok [INFO] [stdout] test page::element_ref::tests::quad_center_point_quad ... ok [INFO] [stdout] test page::find_elements::tests::build_js_attributes_with_special_chars ... ok [INFO] [stdout] test page::find_elements::tests::build_js_basic_selector ... ok [INFO] [stdout] test page::find_elements::tests::build_js_no_json_parse ... ok [INFO] [stdout] test page::find_elements::tests::build_js_contains_error_handling ... ok [INFO] [stdout] test page::find_elements::tests::build_js_selector_with_quotes_and_newlines ... ok [INFO] [stdout] test page::find_elements::tests::build_js_selector_with_special_chars ... ok [INFO] [stdout] test page::find_elements::tests::build_js_text_truncation_custom ... ok [INFO] [stdout] test page::find_elements::tests::build_js_with_attributes ... ok [INFO] [stdout] test page::find_elements::tests::build_js_with_text ... ok [INFO] [stdout] test page::find_elements::tests::build_js_with_custom_max ... ok [INFO] [stdout] test page::interaction::tests::build_fill_fields_json_escapes_special_chars ... ok [INFO] [stdout] test page::interaction::tests::build_fill_fields_json_multiple ... ok [INFO] [stdout] test page::find_elements::tests::found_element_empty_array ... ok [INFO] [stdout] test page::find_elements::tests::found_element_no_attributes_no_text ... ok [INFO] [stdout] test page::interaction::tests::clear_js_dispatches_input_and_change_events ... ok [INFO] [stdout] test page::find_elements::tests::found_element_deserializes ... ok [INFO] [stdout] test page::interaction::tests::build_fill_fields_json_no_json_parse ... ok [INFO] [stdout] test page::interaction::tests::build_fill_fields_json_single ... ok [INFO] [stdout] test page::interaction::tests::clear_js_focuses_before_clearing ... ok [INFO] [stdout] test page::interaction::tests::clear_js_handles_input_and_textarea ... ok [INFO] [stdout] test page::interaction::tests::clear_js_handles_contenteditable ... ok [INFO] [stdout] test page::interaction::tests::clear_js_returns_error_for_non_clearable ... ok [INFO] [stdout] test page::interaction::tests::clear_js_uses_native_value_setter_for_react_compat ... ok [INFO] [stdout] test page::interaction::tests::element_center_at_origin ... ok [INFO] [stdout] test page::interaction::tests::fill_js_handles_checkbox_true_values ... ok [INFO] [stdout] test page::interaction::tests::fill_result_deserialization ... ok [INFO] [stdout] test page::interaction::tests::element_center_computes_correctly ... ok [INFO] [stdout] test page::interaction::tests::fill_result_serialization ... ok [INFO] [stdout] test page::interaction::tests::get_element_out_of_range_returns_error ... ok [INFO] [stdout] test page::interaction::tests::fill_js_handles_select_match_by_value_then_text ... ok [INFO] [stdout] test page::interaction::tests::fill_js_text_input_uses_native_setter ... ok [INFO] [stdout] test page::interaction::tests::get_element_empty_list_returns_error ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_basic ... ok [INFO] [stdout] test page::interaction::tests::get_element_returns_correct_element ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_target_index_basic ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_no_equals_error ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_target_ref_basic ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_non_numeric_index_error ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_target_ref_empty_value ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_empty_value ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_target_ref_no_equals ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_target_ref_invalid_id ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_target_ref_value_with_equals ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_value_with_equals ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_value_with_spaces ... ok [INFO] [stdout] test page::interaction::tests::scroll_to_index_js_validates_element_existence ... ok [INFO] [stdout] test page::interaction::tests::scroll_direction_bottom_uses_scroll_height ... ok [INFO] [stdout] test page::interaction::tests::scroll_direction_top_uses_scroll_to_zero ... ok [INFO] [stdout] test page::interaction::tests::parse_fill_set_negative_index_error ... ok [INFO] [stdout] test page::interaction::tests::scroll_to_selector_js_escapes_special_chars ... ok [INFO] [stdout] test page::interaction::tests::scroll_to_index_js_uses_scroll_into_view_center ... ok [INFO] [stdout] test page::interaction::tests::scroll_to_selector_js_uses_scroll_into_view_center ... ok [INFO] [stdout] test page::interaction::tests::select_js_no_json_parse_for_value ... ok [INFO] [stdout] test page::interaction::tests::scroll_to_selector_js_no_json_parse ... ok [INFO] [stdout] test page::interaction::tests::select_js_value_with_quotes_and_backslashes ... ok [INFO] [stdout] test page::interaction::tests::select_js_value_with_newlines ... ok [INFO] [stdout] test page::interaction::tests::select_js_dispatches_both_events ... ok [INFO] [stdout] test page::interaction::tests::upload_by_index_js_returns_element_reference ... ok [INFO] [stdout] test page::interaction::tests::select_js_matches_by_value_then_text ... ok [INFO] [stdout] test page::interaction::tests::select_js_non_ascii_value ... ok [INFO] [stdout] test page::interaction::tests::upload_by_index_js_throws_on_wrong_element ... ok [INFO] [stdout] test page::interaction::tests::upload_by_index_js_validates_file_input ... ok [INFO] [stdout] test page::interaction::tests::select_js_returns_available_options_on_no_match ... ok [INFO] [stdout] test page::interaction::tests::upload_by_selector_js_escapes_special_chars ... ok [INFO] [stdout] test page::interaction::tests::upload_by_selector_js_validates_file_input ... ok [INFO] [stdout] test page::interaction::tests::validate_file_paths_accepts_existing_file ... ok [INFO] [stdout] test page::interaction::tests::validate_file_paths_checks_all_files ... ok [INFO] [stdout] test page::interaction::tests::upload_by_selector_js_returns_element_reference ... ok [INFO] [stdout] test page::interaction::tests::validate_file_paths_rejects_directory ... ok [INFO] [stdout] test page::state::tests::advanced_search_custom_max_results ... ok [INFO] [stdout] test page::state::tests::advanced_search_custom_scope ... ok [INFO] [stdout] test page::state::tests::advanced_search_plain_text_basic ... ok [INFO] [stdout] test page::state::tests::advanced_search_defaults_context_40_max_50 ... ok [INFO] [stdout] test page::interaction::tests::validate_file_paths_rejects_nonexistent ... ok [INFO] [stdout] test page::state::tests::advanced_search_regex_with_all_options ... ok [INFO] [stdout] test page::state::tests::advanced_search_regex_uses_regexp ... ok [INFO] [stdout] test page::state::tests::advanced_search_plain_text_escapes_special_chars ... ok [INFO] [stdout] test page::interaction::tests::validate_file_paths_rejects_relative ... ok [INFO] [stdout] test page::state::tests::advanced_search_custom_context_chars ... ok [INFO] [stdout] test page::element_ref::tests::ref_gone_msg_content ... ok [INFO] [stdout] test page::state::tests::advanced_search_regex_zero_length_match_guard ... ok [INFO] [stdout] test page::state::tests::advanced_search_scope_escapes_special_chars ... ok [INFO] [stdout] test page::state::tests::build_search_js_contains_query ... ok [INFO] [stdout] test page::state::tests::backend_ids_count_mismatch_produces_all_none ... ok [INFO] [stdout] test page::state::tests::build_search_js_escapes_backslashes ... ok [INFO] [stdout] test page::state::tests::backend_ids_individual_failure_produces_none_not_zero ... ok [INFO] [stdout] test page::state::tests::build_search_js_escapes_newlines ... ok [INFO] [stdout] test page::state::tests::build_search_js_non_ascii ... ok [INFO] [stdout] test page::state::tests::discover_js_enhanced_visibility_filter ... ok [INFO] [stdout] test page::state::tests::build_search_js_special_chars_produces_valid_js_literal ... ok [INFO] [stdout] test page::state::tests::discover_js_includes_aria_label_extraction ... ok [INFO] [stdout] test page::state::tests::discover_js_includes_contenteditable_type ... ok [INFO] [stdout] test page::state::tests::build_search_js_escapes_double_quotes ... ok [INFO] [stdout] test page::state::tests::discover_js_includes_id_extraction ... ok [INFO] [stdout] test page::state::tests::build_search_js_no_json_parse ... ok [INFO] [stdout] test page::state::tests::discover_js_includes_type_for_inputs ... ok [INFO] [stdout] test page::state::tests::discover_js_uses_shared_interactive_selector ... ok [INFO] [stdout] test page::state::tests::element_info_all_interactive_tags ... ok [INFO] [stdout] test page::state::tests::element_info_deserializes_empty_array ... ok [INFO] [stdout] test page::state::tests::element_info_deserializes_from_js_output ... ok [INFO] [stdout] test page::state::tests::element_info_serializes_new_fields_when_present ... ok [INFO] [stdout] test page::state::tests::element_info_serializes_ref_field ... ok [INFO] [stdout] test page::state::tests::element_info_serializes_without_ref_when_none ... ok [INFO] [stdout] test page::state::tests::element_info_with_ref_field_deserializes ... ok [INFO] [stdout] test page::state::tests::element_info_with_type_id_aria_label_deserializes ... ok [INFO] [stdout] test page::state::tests::element_info_without_ref_field_deserializes_as_none ... ok [INFO] [stdout] test page::state::tests::element_info_without_new_fields_still_deserializes ... ok [INFO] [stdout] test page::state::tests::element_info_skips_new_fields_when_none ... ok [INFO] [stdout] test page::state::tests::full_page_state_deserializes_complete_response ... ok [INFO] [stdout] test page::state::tests::full_page_state_js_includes_type_id_aria_label ... ok [INFO] [stdout] test page::state::tests::full_page_state_truncated_text ... ok [INFO] [stdout] test page::state::tests::full_page_state_pixels_below_calculation ... ok [INFO] [stdout] test page::state::tests::page_text_max_chars_constant ... ok [INFO] [stdout] test page::state::tests::search_match_deserializes_empty_array ... ok [INFO] [stdout] test page::state::tests::search_match_deserializes_from_js_output ... ok [INFO] [stdout] test page::state_diff::tests::compute_diff_elements_removed ... ok [INFO] [stdout] test page::state_diff::tests::compute_diff_only_title_changes ... ok [INFO] [stdout] test page::state_diff::tests::compute_diff_no_change ... ok [INFO] [stdout] test page::state_diff::tests::compute_diff_url_changed ... ok [INFO] [stdout] test page::state_diff::tests::compute_diff_only_url_changes ... ok [INFO] [stdout] test page::state_diff::tests::state_diff_to_json_no_changes ... ok [INFO] [stdout] test page::state_diff::tests::state_diff_to_json_with_changes ... ok [INFO] [stdout] test page::state_diff::tests::state_diff_to_json_both_changed ... ok [INFO] [stdout] test page::state_diff::tests::state_diff_zero_element_count ... ok [INFO] [stdout] test page::state_diff::tests::state_snapshot_captures_fields ... ok [INFO] [stdout] test page::tests::exception_message_prefers_description ... ok [INFO] [stdout] test page::tests::exception_message_with_empty_description_uses_text ... ok [INFO] [stdout] test page::tests::exception_message_falls_back_to_text ... ok [INFO] [stdout] test page::wait::tests::build_condition_check_js_fn_expression ... ok [INFO] [stdout] test page::wait::tests::build_condition_check_js_load_state_domcontentloaded ... ok [INFO] [stdout] test page::wait::tests::build_condition_check_js_multiple_conditions ... ok [INFO] [stdout] test page::wait::tests::build_condition_check_js_text_gone ... ok [INFO] [stdout] test page::wait::tests::build_condition_check_js_text_with_special_chars ... ok [INFO] [stdout] test page::wait::tests::default_timeout_is_30s ... ok [INFO] [stdout] test page::wait::tests::network_idle_counter_clamps_at_zero ... ok [INFO] [stdout] test page::wait::tests::network_idle_counter_duplicate_request_id ... ok [INFO] [stdout] test page::wait::tests::build_condition_check_js_url_glob ... ok [INFO] [stdout] test page::wait::tests::build_condition_check_js_selector_escaping ... ok [INFO] [stdout] test page::wait::tests::network_idle_counter_request_increments ... ok [INFO] [stdout] test page::wait::tests::network_idle_counter_request_end_decrements ... ok [INFO] [stdout] test page::wait::tests::network_idle_quiet_window_is_500ms ... ok [INFO] [stdout] test page::wait::tests::wait_conditions_accepts_networkidle ... ok [INFO] [stdout] test page::wait::tests::wait_conditions_from_params_all_fields ... ok [INFO] [stdout] test page::wait::tests::wait_conditions_from_params_requires_at_least_one ... ok [INFO] [stdout] test page::wait::tests::wait_conditions_from_params_time_only ... ok [INFO] [stdout] test page::wait::tests::wait_conditions_networkidle_with_other_conditions ... ok [INFO] [stdout] test page::wait::tests::wait_conditions_pending_descriptions_includes_networkidle ... ok [INFO] [stdout] test page::wait::tests::wait_conditions_rejects_invalid_load_state ... ok [INFO] [stdout] test page::wait::tests::network_idle_counter_starts_idle ... ok [INFO] [stdout] test page::wait::tests::network_idle_counter_quiet_window ... ok [INFO] [stdout] test page::wait::tests::network_idle_counter_interleaved_requests ... ok [INFO] [stdout] test page::wait::tests::network_idle_counter_quiet_window_resets_on_new_request ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 665 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.90s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/deps/bk-1097a3a0bc436055) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 70 tests [INFO] [stdout] test tests::attach_help_names_default_session_constraint ... ok [INFO] [stdout] test tests::back_is_removed ... ok [INFO] [stdout] test tests::browser_admin_connection_params_include_global_session ... ok [INFO] [stdout] test tests::cli_global_session_param ... ok [INFO] [stdout] test tests::cli_parses_act_press ... ok [INFO] [stdout] test tests::cli_global_no_state_diff_param ... ok [INFO] [stdout] test tests::cli_parses_act_click ... ok [INFO] [stdout] test tests::cli_global_timeout_param ... ok [INFO] [stdout] test tests::cli_parses_act_fill_sets ... ok [INFO] [stdout] test tests::cli_no_ws_flag ... ok [INFO] [stdout] test tests::cli_parses_act_scroll_selector ... ok [INFO] [stdout] test tests::cli_global_target_param ... ok [INFO] [stdout] test tests::cli_parses_act_select_and_options ... ok [INFO] [stdout] test tests::cli_parses_act_scroll_hover_and_focus ... ok [INFO] [stdout] test tests::cli_parses_act_type ... ok [INFO] [stdout] test tests::cli_parses_connect ... ok [INFO] [stdout] test tests::cli_parses_connect_with_session ... ok [INFO] [stdout] test tests::cli_no_format_flag ... ok [INFO] [stdout] test tests::cli_parses_attach_target_and_pattern ... ok [INFO] [stdout] test tests::cli_parses_bounded_network_watch ... ok [INFO] [stdout] test tests::cli_parses_act_upload_and_drag ... ok [INFO] [stdout] test tests::cli_parses_close ... ok [INFO] [stdout] test tests::cli_parses_download_lifecycle_command ... ok [INFO] [stdout] test tests::cli_parses_evaluate ... ok [INFO] [stdout] test tests::cli_parses_screenshot ... ok [INFO] [stdout] test tests::cli_parses_navigate_back ... ok [INFO] [stdout] test tests::cli_parses_screenshot_selector_and_labels ... ok [INFO] [stdout] test tests::cli_parses_session_close ... ok [INFO] [stdout] test tests::cli_parses_navigate_url ... ok [INFO] [stdout] test tests::cli_parses_open ... ok [INFO] [stdout] test tests::cli_parses_session_list ... ok [INFO] [stdout] test tests::cli_parses_snapshot_token_budget ... ok [INFO] [stdout] test tests::cli_parses_evaluate_append_to ... ok [INFO] [stdout] test tests::cli_parses_status ... ok [INFO] [stdout] test tests::cli_parses_session_storage_local_get ... ok [INFO] [stdout] test tests::cli_parses_tabs ... ok [INFO] [stdout] test tests::cli_rejects_removed_goto_alias ... ok [INFO] [stdout] test tests::cli_rejects_removed_fill_command ... ok [INFO] [stdout] test tests::cli_rejects_removed_info_alias ... ok [INFO] [stdout] test tests::cli_rejects_removed_scroll_hover_focus_commands ... ok [INFO] [stdout] test tests::cli_parses_snapshot ... ok [INFO] [stdout] test tests::cli_rejects_removed_keys_command ... ok [INFO] [stdout] test tests::cli_parses_snapshot_full ... ok [INFO] [stdout] test tests::cli_rejects_removed_navigation_aliases ... ok [INFO] [stdout] test tests::cli_rejects_removed_shot_alias ... ok [INFO] [stdout] test tests::cli_rejects_removed_select_and_options_commands ... ok [INFO] [stdout] test tests::cli_rejects_all_removed_workspace_surfaces ... ok [INFO] [stdout] test tests::cli_rejects_removed_streaming_debug_commands ... ok [INFO] [stdout] test tests::cli_rejects_removed_url_title_aliases ... ok [INFO] [stdout] test tests::download_request_shape_uses_canonical_output_directory ... ok [INFO] [stdout] test tests::cli_rejects_removed_click_and_type_commands ... ok [INFO] [stdout] test tests::download_directory_errors_are_structured_responses ... ok [INFO] [stdout] test tests::evaluate_append_partial_write_reports_non_retryable_progress ... ok [INFO] [stdout] test tests::cli_rejects_removed_workspace_aliases ... ok [INFO] [stdout] test tests::evaluate_append_rejects_non_string_and_directory ... ok [INFO] [stdout] test tests::cli_rejects_removed_upload_and_drag_commands ... ok [INFO] [stdout] test tests::evaluate_append_reports_write_failure_as_json ... ok [INFO] [stdout] test tests::cli_rejects_removed_eval_alias ... ok [INFO] [stdout] test tests::evaluate_append_path_is_not_sent_to_daemon ... ok [INFO] [stdout] test tests::evaluate_append_writes_exact_string_bytes ... ok [INFO] [stdout] test tests::find_with_selector_succeeds ... ok [INFO] [stdout] test tests::press_with_single_key_succeeds ... ok [INFO] [stdout] test tests::pdf_no_longer_accepts_a_url ... ok [INFO] [stdout] test tests::forward_is_removed ... ok [INFO] [stdout] test tests::wait_with_selector_succeeds ... ok [INFO] [stdout] test tests::setup_succeeds ... ok [INFO] [stdout] test tests::top_level_help_omits_removed_action_alias_guidance ... ok [INFO] [stdout] test tests::top_level_help_primary_includes_attach ... ok [INFO] [stdout] test tests::find_requires_selector ... ok [INFO] [stdout] test tests::wait_with_text_succeeds ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 70 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Doc-tests browserkit [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80", kill_on_drop: false }` [INFO] [stdout] 181a41107947e6cef47bbf3270b9052ac380535ee2d6690a4e928c2c515d8f80