[INFO] fetching crate testty 0.8.0...
[INFO] testing testty-0.8.0 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate testty 0.8.0 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate testty 0.8.0
[INFO] removed 0 missing examples
[INFO] finished tweaking crates.io crate testty 0.8.0
[INFO] tweaked toml for crates.io crate testty 0.8.0 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate testty 0.8.0 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate testty 0.8.0 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 68e46c0b1b99a8590e424b7d66b5866d7de6a805c87b9763c7c8472d148c4a9e
[INFO] running `Command { std: "docker" "start" "-a" "68e46c0b1b99a8590e424b7d66b5866d7de6a805c87b9763c7c8472d148c4a9e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "68e46c0b1b99a8590e424b7d66b5866d7de6a805c87b9763c7c8472d148c4a9e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "68e46c0b1b99a8590e424b7d66b5866d7de6a805c87b9763c7c8472d148c4a9e", kill_on_drop: false }`
[INFO] [stdout] 68e46c0b1b99a8590e424b7d66b5866d7de6a805c87b9763c7c8472d148c4a9e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fac6b6b72c174f8cfaa4661d59754510edb3bf359e3fbd90d4ec40f03863e918
[INFO] running `Command { std: "docker" "start" "-a" "fac6b6b72c174f8cfaa4661d59754510edb3bf359e3fbd90d4ec40f03863e918", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling pxfm v0.1.28
[INFO] [stderr]    Compiling serial2 v0.2.34
[INFO] [stderr]    Compiling vte v0.15.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]    Compiling vt100 v0.16.2
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling filedescriptor v0.8.3
[INFO] [stderr]    Compiling portable-pty v0.9.0
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling testty v0.8.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.43s
[INFO] running `Command { std: "docker" "inspect" "fac6b6b72c174f8cfaa4661d59754510edb3bf359e3fbd90d4ec40f03863e918", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fac6b6b72c174f8cfaa4661d59754510edb3bf359e3fbd90d4ec40f03863e918", kill_on_drop: false }`
[INFO] [stdout] fac6b6b72c174f8cfaa4661d59754510edb3bf359e3fbd90d4ec40f03863e918
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] eb7f0de3bb9053965667d7b47a96d5b5caa8a25d9bb3477345555d72bbf139be
[INFO] running `Command { std: "docker" "start" "-a" "eb7f0de3bb9053965667d7b47a96d5b5caa8a25d9bb3477345555d72bbf139be", kill_on_drop: false }`
[INFO] [stderr]    Compiling testty v0.8.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.46s
[INFO] running `Command { std: "docker" "inspect" "eb7f0de3bb9053965667d7b47a96d5b5caa8a25d9bb3477345555d72bbf139be", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "eb7f0de3bb9053965667d7b47a96d5b5caa8a25d9bb3477345555d72bbf139be", kill_on_drop: false }`
[INFO] [stdout] eb7f0de3bb9053965667d7b47a96d5b5caa8a25d9bb3477345555d72bbf139be
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 430c56edd9018cd5aa11bcb035797c8414c7c2fdf82bd089334cdb6d7dac200b
[INFO] running `Command { std: "docker" "start" "-a" "430c56edd9018cd5aa11bcb035797c8414c7c2fdf82bd089334cdb6d7dac200b", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/testty-1310eada3f3a0d8b)
[INFO] [stdout] 
[INFO] [stdout] running 190 tests
[INFO] [stdout] test artifact::tests::artifact_dir_creates_directory ... ok
[INFO] [stdout] test artifact::tests::capture_artifact_from_frame_captures_text ... ok
[INFO] [stdout] test artifact::tests::save_frame_dump_writes_text ... ok
[INFO] [stdout] test assertion::tests::assert_match_count_passes_with_correct_count ... ok
[INFO] [stdout] test artifact::tests::screenshot_path_uses_name ... ok
[INFO] [stdout] test assertion::tests::assert_not_visible_passes_when_absent ... ok
[INFO] [stdout] test calibration::tests::region_to_pixels_maps_correctly ... ok
[INFO] [stdout] test diff::tests::different_size_frames_mark_extra_cells ... ok
[INFO] [stdout] test calibration::tests::region_to_pixels_with_origin_offset ... ok
[INFO] [stdout] test diff::tests::shrunk_frame_marks_removed_rows_as_changed ... ok
[INFO] [stdout] test assertion::tests::assert_text_has_fg_color_passes ... ok
[INFO] [stdout] test diff::tests::adjacent_changes_merge_into_region ... ok
[INFO] [stdout] test diff::tests::shrunk_frame_marks_removed_cols_as_changed ... ok
[INFO] [stdout] test assertion::tests::assert_span_is_not_highlighted_for_plain_text ... ok
[INFO] [stdout] test calibration::tests::from_image_size_computes_cell_dimensions ... ok
[INFO] [stdout] test calibration::tests::pixel_rect_to_integer_bounds ... ok
[INFO] [stdout] test feature::tests::compute_frame_hash_empty_report ... ok
[INFO] [stdout] test feature::tests::compute_frame_hash_differs_for_different_content ... ok
[INFO] [stdout] test feature::tests::feature_demo_builder_sets_metadata ... ok
[INFO] [stdout] test diff::tests::summary_single_col_format ... ok
[INFO] [stdout] test diff::tests::identical_frames_produce_no_changes ... ok
[INFO] [stdout] test feature::tests::feature_demo_gif_output_dir_configurable ... ok
[INFO] [stdout] test feature::tests::feature_demo_no_gif_dir_means_none ... ok
[INFO] [stdout] test feature::tests::gif_status_cache_hit_returns_path ... ok
[INFO] [stdout] test feature::tests::gif_status_dir_create_failed_is_failure ... ok
[INFO] [stdout] test feature::tests::gif_status_generated_returns_path ... ok
[INFO] [stdout] test feature::tests::gif_status_no_output_dir_is_not_failure ... ok
[INFO] [stdout] test feature::tests::gif_status_tape_execution_failed_is_failure ... ok
[INFO] [stdout] test frame::tests::all_text_joins_rows ... ok
[INFO] [stdout] test frame::tests::ansi_color_codes_are_parsed ... ok
[INFO] [stdout] test frame::tests::ansi_index_to_rgb_grayscale_ramp ... ok
[INFO] [stdout] test frame::tests::ansi_index_to_rgb_standard_colors ... ok
[INFO] [stdout] test frame::tests::bold_style_is_detected ... ok
[INFO] [stdout] test frame::tests::cell_text_returns_character ... ok
[INFO] [stdout] test frame::tests::cell_text_returns_space_for_empty_cell ... ok
[INFO] [stdout] test diff::tests::single_cell_text_change_detected ... ok
[INFO] [stdout] test feature::tests::gif_status_vhs_not_installed_is_not_failure ... ok
[INFO] [stdout] test frame::tests::contents_formatted_roundtrips_colors ... ok
[INFO] [stdout] test diff::tests::style_change_detected ... ok
[INFO] [stdout] test frame::tests::dim_style_is_detected ... ok
[INFO] [stdout] test diff::tests::summary_formats_human_readable_text ... ok
[INFO] [stdout] test frame::tests::find_text_returns_all_matches ... ok
[INFO] [stdout] test frame::tests::new_frame_captures_plain_text ... ok
[INFO] [stdout] test frame::tests::row_text_trims_trailing_spaces ... ok
[INFO] [stdout] test frame::tests::text_in_region_extracts_substring ... ok
[INFO] [stdout] test frame::tests::find_text_in_region_filters_by_region ... ok
[INFO] [stdout] test journey::tests::capture_labeled_produces_capture_step ... ok
[INFO] [stdout] test journey::tests::journey_new_creates_empty ... ok
[INFO] [stdout] test journey::tests::journey_step_appends ... ok
[INFO] [stdout] test journey::tests::journey_with_description_sets_description ... ok
[INFO] [stdout] test journey::tests::navigate_with_key_produces_press_then_wait ... ok
[INFO] [stdout] test journey::tests::press_and_wait_produces_key_then_sleep ... ok
[INFO] [stdout] test feature::tests::compute_frame_hash_deterministic ... ok
[INFO] [stdout] test journey::tests::wait_for_startup_produces_stable_frame_step ... ok
[INFO] [stdout] test locator::tests::has_bg_matches_exact_color ... ok
[INFO] [stdout] test locator::tests::has_fg_matches_exact_color ... ok
[INFO] [stdout] test frame::tests::find_text_locates_multibyte_utf8_at_correct_column ... ok
[INFO] [stdout] test locator::tests::is_highlighted_detects_background_color ... ok
[INFO] [stdout] test frame::tests::find_text_with_empty_needle_returns_empty ... ok
[INFO] [stdout] test locator::tests::is_highlighted_detects_bold ... ok
[INFO] [stdout] test locator::tests::not_highlighted_when_plain ... ok
[INFO] [stdout] test overlay::tests::draw_label_indicator_above_region ... ok
[INFO] [stdout] test proof::backend::tests::stub_backend_returns_error ... ok
[INFO] [stdout] test proof::backend::tests::stub_backend_succeeds ... ok
[INFO] [stdout] test overlay::tests::draw_region_box_modifies_pixels ... ok
[INFO] [stdout] test overlay::tests::fill_rect_fills_area ... ok
[INFO] [stdout] test assertion::tests::assert_span_is_highlighted_detects_bold ... ok
[INFO] [stdout] test assertion::tests::assert_text_in_region_passes_when_found ... ok
[INFO] [stdout] test diff::tests::out_of_bounds_cell_returns_none ... ok
[INFO] [stdout] test proof::gif::tests::gif_backend_default_delay ... ok
[INFO] [stdout] test proof::gif::tests::gif_backend_custom_delay_clamped ... ok
[INFO] [stdout] test journey::tests::type_and_confirm_produces_write_then_enter ... ok
[INFO] [stdout] test proof::gif::tests::gif_backend_errors_on_empty_report ... ok
[INFO] [stdout] test proof::html::tests::escape_html_handles_special_chars ... ok
[INFO] [stdout] test proof::frame_text::tests::save_dispatches_through_backend_trait ... ok
[INFO] [stdout] test proof::frame_text::tests::frame_text_backend_writes_valid_file ... ok
[INFO] [stdout] test proof::html::tests::html_backend_writes_file ... ok
[INFO] [stdout] test proof::frame_text::tests::frame_text_backend_produces_same_output_as_to_annotated_text ... ok
[INFO] [stdout] test proof::gif::tests::gif_backend_single_frame_succeeds ... ok
[INFO] [stdout] test proof::html::tests::html_contains_embedded_images ... ok
[INFO] [stdout] test proof::html::tests::html_contains_assertion_results ... ok
[INFO] [stdout] test calibration::tests::pixel_to_cell_round_trips ... ok
[INFO] [stdout] test proof::report::tests::add_assertion_returns_false_for_unknown_label ... ok
[INFO] [stdout] test proof::report::tests::annotated_text_contains_assertion_markers ... ok
[INFO] [stdout] test feature::tests::feature_demo_defaults_title_to_name ... ok
[INFO] [stdout] test proof::html::tests::html_is_self_contained ... ok
[INFO] [stdout] test proof::report::tests::annotated_text_contains_scenario_name ... ok
[INFO] [stdout] test proof::report::tests::annotated_text_contains_step_labels_and_descriptions ... ok
[INFO] [stdout] test proof::report::tests::add_assertion_attaches_to_labeled_capture ... ok
[INFO] [stdout] test proof::html::tests::html_escapes_scenario_name_in_header ... ok
[INFO] [stdout] test feature::tests::feature_demo_defaults_to_feature_demo_gif_settings ... ok
[INFO] [stdout] test proof::html::tests::html_contains_diff_summaries ... ok
[INFO] [stdout] test proof::report::tests::add_assertion_targets_specific_capture ... ok
[INFO] [stdout] test proof::html::tests::html_contains_step_cards ... ok
[INFO] [stdout] test proof::gif::tests::gif_backend_writes_valid_gif ... ok
[INFO] [stdout] test proof::report::tests::auto_diff_computed_between_consecutive_captures ... ok
[INFO] [stdout] test proof::report::tests::frame_bytes_preserves_style_for_diff ... ok
[INFO] [stdout] test proof::report::tests::annotated_text_contains_frame_content ... ok
[INFO] [stdout] test proof::report::tests::no_diff_for_single_capture ... ok
[INFO] [stdout] test proof::report::tests::proof_capture_stores_dimensions ... ok
[INFO] [stdout] test proof::report::tests::frame_bytes_stores_formatted_output ... ok
[INFO] [stdout] test recipe::tests::expect_selected_tab_passes_for_bold_tab ... ok
[INFO] [stdout] test recipe::tests::expect_status_message_finds_anywhere ... ok
[INFO] [stdout] test proof::report::tests::identical_captures_produce_identical_diff ... ok
[INFO] [stdout] test recipe::tests::expect_unselected_tab_passes_for_plain_tab ... ok
[INFO] [stdout] test region::tests::contains_checks_bounds ... ok
[INFO] [stdout] test recipe::tests::expect_instruction_visible_finds_text ... ok
[INFO] [stdout] test region::tests::encloses_checks_full_containment ... ok
[INFO] [stdout] test region::tests::footer_is_last_row ... ok
[INFO] [stdout] test region::tests::full_region_covers_entire_grid ... ok
[INFO] [stdout] test region::tests::percent_region_computes_correctly ... ok
[INFO] [stdout] test region::tests::top_row_spans_full_width_one_row ... ok
[INFO] [stdout] test renderer::tests::brighten_component_clamps_at_255 ... ok
[INFO] [stdout] test renderer::tests::color_to_rgba_converts_correctly ... ok
[INFO] [stdout] test renderer::tests::dim_component_handles_zero ... ok
[INFO] [stdout] test renderer::tests::dim_component_reduces_brightness ... ok
[INFO] [stdout] test renderer::tests::lookup_glyph_returns_box_drawing ... ok
[INFO] [stdout] test renderer::tests::lookup_glyph_returns_empty_for_unsupported ... ok
[INFO] [stdout] test renderer::tests::lookup_glyph_returns_known_ascii ... ok
[INFO] [stdout] test renderer::tests::render_colored_cell_uses_ansi_color ... ok
[INFO] [stdout] test renderer::tests::render_dim_darkens_foreground ... ok
[INFO] [stdout] test renderer::tests::render_inverse_swaps_colors ... ok
[INFO] [stdout] test renderer::tests::render_bold_brightens_foreground ... ok
[INFO] [stdout] test recipe::tests::expect_not_visible_passes_when_absent ... ok
[INFO] [stdout] test scenario::tests::scenario_builder_chains_steps ... ok
[INFO] [stdout] test region::tests::top_right_covers_right_half ... ok
[INFO] [stdout] test renderer::tests::render_plain_cell_has_correct_background ... ok
[INFO] [stdout] test scenario::tests::scenario_compiles_to_vhs_tape ... ok
[INFO] [stdout] test session::tests::key_to_bytes_backtab_sends_csi_z ... ok
[INFO] [stdout] test scenario::tests::scenario_compose_appends_journey_steps ... ok
[INFO] [stdout] test session::tests::key_to_bytes_ctrl_multi_char_falls_through ... ok
[INFO] [stdout] test session::tests::key_to_bytes_ctrl_non_alpha_falls_through ... ok
[INFO] [stdout] test renderer::tests::render_to_image_small_terminal ... ok
[INFO] [stdout] test scenario::tests::scenario_capture_labeled_adds_step ... ok
[INFO] [stdout] test scenario::tests::scenario_compose_preserves_existing_steps ... ok
[INFO] [stdout] test session::tests::key_to_bytes_returns_ctrl_z ... ok
[INFO] [stdout] test session::tests::key_to_bytes_unknown_key_returns_raw_bytes ... ok
[INFO] [stdout] test session::tests::key_to_bytes_known_keys ... ok
[INFO] [stdout] test proof::report::tests::proof_report_collects_captures ... ok
[INFO] [stdout] test snapshot::tests::frame_snapshot_detects_mismatch ... ok
[INFO] [stdout] test snapshot::tests::pixel_distance_identical_is_zero ... ok
[INFO] [stdout] test snapshot::tests::frame_snapshot_matches_identical_content ... ok
[INFO] [stdout] test session::tests::key_to_bytes_returns_ctrl_a ... ok
[INFO] [stdout] test snapshot::tests::pixel_distance_opposite_colors ... ok
[INFO] [stdout] test snapshot::tests::pixel_distance_ignores_alpha ... ok
[INFO] [stdout] test snapshot::tests::snapshot_config_with_custom_thresholds ... ok
[INFO] [stdout] test step::tests::capture_labeled_stores_label_and_description ... ok
[INFO] [stdout] test step::tests::viewing_pause_ms_converts_to_duration ... ok
[INFO] [stdout] test step::tests::viewing_pause_stores_duration ... ok
[INFO] [stdout] test step::tests::wait_for_text_stores_needle_and_timeout ... ok
[INFO] [stdout] test snapshot::tests::frame_snapshot_returns_missing_baseline_error_outside_update_mode ... ok
[INFO] [stdout] test step::tests::sleep_ms_converts_to_duration ... ok
[INFO] [stdout] test proof::strip::tests::strip_width_matches_widest_frame ... ok
[INFO] [stdout] test proof::strip::tests::empty_report_produces_minimal_strip ... ok
[INFO] [stdout] test vhs::tests::compile_step_sleep_uses_seconds_when_even ... ok
[INFO] [stdout] test vhs::tests::compile_step_viewing_pause_emits_sleep_milliseconds ... ok
[INFO] [stdout] test vhs::tests::compile_step_viewing_pause_emits_sleep_seconds ... ok
[INFO] [stdout] test vhs::tests::compile_step_wait_for_text_emits_wait_screen_with_regex ... ok
[INFO] [stdout] test vhs::tests::compile_tape_clears_terminal_and_launches_binary_before_show ... ok
[INFO] [stdout] test vhs::tests::compile_tape_escapes_env_value_with_single_quote ... ok
[INFO] [stdout] test vhs::tests::compile_step_wait_for_text_formats_fractional_timeout_as_milliseconds ... ok
[INFO] [stdout] test vhs::tests::compile_step_sleep_uses_milliseconds_when_fractional ... ok
[INFO] [stdout] test vhs::tests::compile_tape_includes_env_vars ... ok
[INFO] [stdout] test vhs::tests::compile_tape_includes_header_settings ... ok
[INFO] [stdout] test vhs::tests::default_settings_match_legacy_constants ... ok
[INFO] [stdout] test vhs::tests::compile_tape_shell_quotes_binary_path_with_spaces ... ok
[INFO] [stdout] test vhs::tests::escape_vhs_double_quote_escapes_quotes_and_backslashes ... ok
[INFO] [stdout] test vhs::tests::compile_tape_shell_quotes_binary_path ... ok
[INFO] [stdout] test vhs::tests::escape_vhs_regex_escapes_metacharacters ... ok
[INFO] [stdout] test vhs::tests::feature_demo_settings_have_expected_values ... ok
[INFO] [stdout] test vhs::tests::format_vhs_duration_uses_milliseconds_for_fractional ... ok
[INFO] [stdout] test vhs::tests::format_vhs_duration_uses_seconds_for_even_multiples ... ok
[INFO] [stdout] test vhs::tests::from_scenario_with_settings_applies_feature_demo ... ok
[INFO] [stdout] test vhs::tests::from_scenario_with_settings_omits_empty_theme ... ok
[INFO] [stdout] test vhs::tests::from_scenario_with_settings_omits_zero_framerate ... ok
[INFO] [stdout] test vhs::tests::key_to_vhs_command_maps_common_keys ... ok
[INFO] [stdout] test step::tests::write_text_stores_content ... ok
[INFO] [stdout] test vhs::tests::compile_tape_includes_screenshot ... ok
[INFO] [stdout] test vhs::tests::escape_shell_single_quote_wraps_internal_quotes ... ok
[INFO] [stdout] test proof::strip::tests::strip_of_two_captures_is_taller_than_single_frame ... ok
[INFO] [stdout] test vhs::tests::compile_step_wait_for_text_escapes_regex_metacharacters ... ok
[INFO] [stdout] test assertion::tests::assert_match_count_panics_with_wrong_count - should panic ... ok
[INFO] [stdout] test assertion::tests::assert_text_has_fg_color_panics_on_mismatch - should panic ... ok
[INFO] [stdout] test assertion::tests::assert_text_in_region_panics_when_not_found - should panic ... ok
[INFO] [stdout] test assertion::tests::assert_not_visible_panics_when_present - should panic ... ok
[INFO] [stdout] test recipe::tests::expect_selected_tab_panics_when_not_highlighted - should panic ... ok
[INFO] [stdout] test proof::strip::tests::strip_backend_writes_valid_png ... ok
[INFO] [stdout] test renderer::tests::render_to_image_produces_correct_dimensions ... ok
[INFO] [stdout] test session::tests::wait_for_stable_frame_returns_after_content_stabilizes ... ok
[INFO] [stdout] test session::tests::wait_for_stable_frame_times_out_when_no_output ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 190 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.11s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests testty
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/feature.rs - feature::FeatureDemo (line 100) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.59s; merged doctests compilation took 0.58s
[INFO] running `Command { std: "docker" "inspect" "430c56edd9018cd5aa11bcb035797c8414c7c2fdf82bd089334cdb6d7dac200b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "430c56edd9018cd5aa11bcb035797c8414c7c2fdf82bd089334cdb6d7dac200b", kill_on_drop: false }`
[INFO] [stdout] 430c56edd9018cd5aa11bcb035797c8414c7c2fdf82bd089334cdb6d7dac200b
