Files
hockey_new/tests/test_build198_presentation.py

64 lines
2.4 KiB
Python

"""Executable production-browser regressions with deterministic API/Agent I/O."""
from pathlib import Path
import os
import shutil
import subprocess
import pytest
ROOT = Path(__file__).resolve().parents[1]
CASES = [
"explicit_text_ack_before_in",
"failed_text_never_shows_title",
"unconfirmed_text_never_shows_title",
"text_timeout_has_no_automatic_replay",
"partial_mapping_blocks_preview",
"unconfirmed_mapping_blocks_data_title",
"zero_text_coverage_blocks_data_title",
"legacy_preview_refreshes_mapping",
"urgent_out_bypasses_held_mapping",
"quick_button_out_bypasses_outer_title_queue",
"same_busy_button_repeat_cancels_pending_in",
"repeat_shortcut_out_cancels_pending_in_and_preserves_new_busy",
"late_out_ack_preserves_new_foreign_owner",
"late_out_snapshot_preserves_other_layer",
"failed_setter_step_blocks_same_input_only",
"urgent_countdown_order",
"urgent_native_bypasses_held_mapping",
"stale_context_during_text_ack",
"stale_text_ack_device",
"stale_text_ack_session",
"stale_text_ack_account",
"stale_text_ack_rights",
"trace_correlates_mapping_and_command",
"shared_team_plate_waits_for_mapping",
"team_title_requires_actual_text_coverage",
"shared_team_flag_change_during_mapping",
"linked_out_before_main",
"out_only_scoreboard_skips_in_lifecycle",
"linked_out_keeps_foreign_owner",
"linked_out_cancels_delayed_in",
"penalty_two_paths_use_same_delay",
"penalty_conditional_delay_applies_to_native",
"penalty_delay_does_not_leak_to_other_input",
"disabled_penalty_delay_is_ignored",
"false_penalty_condition_delay_is_ignored",
"penalty_after_old_scoreboard_does_not_wait_again",
"selected_penalty_context_then_mapping_then_preview",
"selected_penalty_context_fifo_preserves_each_title",
"selected_penalty_missing_sql_never_previews",
]
@pytest.mark.parametrize("case", CASES)
def test_presentation(case):
node = shutil.which("node")
assert node, "Node is required for executable browser regressions"
runtime_root = Path(os.environ.get("BUILD198_RUNTIME_ROOT", ROOT))
result = subprocess.run(
[node, str(ROOT / "tests/build198_presentation.cjs"), case, str(runtime_root)],
cwd=ROOT, text=True, capture_output=True, timeout=20,
)
assert result.returncode == 0, result.stdout + result.stderr
assert f"PASS BUILD198 presentation: {case}" in result.stdout, result.stdout + result.stderr