Skip to content

Commit 5c2a632

Browse files
committed
fix: align setup diagnostics status handling
Use the shaped diagnostics view for setup status messaging and relax JS asset content-type assertions so the setup tests pass on both text/javascript and application/javascript responders.
1 parent 111a013 commit 5c2a632

3 files changed

Lines changed: 14 additions & 4 deletions

File tree

tests/test_api_setup.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ def _build_runtime(config: Config) -> AppRuntime:
4141
)
4242

4343

44+
def _is_javascript_content_type(content_type: str) -> bool:
45+
return content_type.startswith(("text/javascript", "application/javascript"))
46+
47+
4448
def test_gui_and_setup_routes() -> None:
4549
config = Config()
4650
app = create_app(_build_runtime(config))
@@ -61,11 +65,11 @@ def test_gui_and_setup_routes() -> None:
6165

6266
js = client.get("/static/setup.js")
6367
assert js.status_code == 200
64-
assert js.headers["content-type"].startswith("text/javascript")
68+
assert _is_javascript_content_type(js.headers["content-type"])
6569

6670
setup_state = client.get("/static/setup_state.js")
6771
assert setup_state.status_code == 200
68-
assert setup_state.headers["content-type"].startswith("text/javascript")
72+
assert _is_javascript_content_type(setup_state.headers["content-type"])
6973

7074
setup = client.get("/setup/config")
7175
assert setup.status_code == 200

tests/test_setup_studio_contract.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ def _build_runtime(config: Config) -> AppRuntime:
4444
client = TestClient(create_app(_build_runtime(Config())))
4545

4646

47+
def _is_javascript_content_type(content_type: str) -> bool:
48+
return content_type.startswith(("text/javascript", "application/javascript"))
49+
50+
4751
def class_tokens_for_id(html: str, element_id: str) -> set[str]:
4852
tag_match = re.search(rf'<[^>]*\bid="{re.escape(element_id)}"[^>]*>', html)
4953
assert tag_match is not None
@@ -134,7 +138,7 @@ def test_setup_assets_expose_module_and_top_level_contracts() -> None:
134138

135139
for response in (entry_js, api_js, state_js, view_models_js, views_js):
136140
assert response.status_code == 200
137-
assert response.headers["content-type"].startswith("text/javascript")
141+
assert _is_javascript_content_type(response.headers["content-type"])
138142

139143
assert 'import { createSetupApi } from "./setup_api.js";' in entry_js.text
140144
assert 'import { createSetupState } from "./setup_state.js";' in entry_js.text
@@ -230,6 +234,8 @@ def test_setup_js_renders_shaped_setup_view_summaries_and_common_fixes() -> None
230234
assert "const diagnosticsView = toDiagnosticsView(report);" in entry_js.text
231235
assert "views.renderDiagnosticsSummary(diagnosticsView);" in entry_js.text
232236
assert "views.renderCommonFixes(diagnosticsView);" in entry_js.text
237+
assert 'if (diagnosticsView.state === "ready") {' in entry_js.text
238+
assert "if (report.ready) {" not in entry_js.text
233239
assert "const runtimeView = toRuntimeView(runtime);" in entry_js.text
234240
assert "renderRuntimeState(runtimeView, runtime);" in entry_js.text
235241
assert (

video_rss_aggregator/static/setup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ async function handleDiagnostics() {
129129
outputs.diagnostics.textContent = JSON.stringify(report, null, 2);
130130
views.renderDiagnosticsSummary(diagnosticsView);
131131
views.renderCommonFixes(diagnosticsView);
132-
if (report.ready) {
132+
if (diagnosticsView.state === "ready") {
133133
views.setStatus(status.diagnostics, "All required dependencies are available.");
134134
} else {
135135
views.setStatus(status.diagnostics, "Some dependencies are missing or unreachable.", true);

0 commit comments

Comments
 (0)