from pathlib import Path def read(path): return Path(path).read_text(encoding="utf-8") def test_select_run_uses_single_cached_path_and_shared_hydrator(): js = read("web/static/runs.js") assert "function hydrateRunDetailInBackground" in js assert "function renderCachedBuildRun" in js select = js.split("async function selectRun", 1)[1].split("async function deleteRunById", 1)[0] assert "if(cached){" in select assert "return;" in select assert "hydrateRunDetailInBackground(runId,{heavy:true" in select assert select.count("startPolling(runId)") <= 2 def test_live_progress_updates_run_detail_cache(): app = read("web/static/app.js") assert "rememberRunDetail(state.runId" in app assert "rememberRunDetail(state.validationRunId" in app assert "include_heavy=true" in app def test_recovery_and_documents_skip_identical_rerenders(): js = read("web/static/runs.js") assert "root.dataset.signature===signature" in js assert "body.dataset.signature===signature" in js app = read("web/static/app.js") assert "spaceTestEndpoints" in app and "dataset.signature" in app