| 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 | |