From 4739a22f7bd567be93ac9d273ef413e71154fee7 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Sat, 22 Aug 2026 20:35:33 +0300 Subject: [PATCH] test: cover operations status surfaces --- dev/ACTIVE_TASK.json | 4 +- ...000163-operations-ui-contract-refresh.json | 23 +++++++++++ .../cabinet_acceptance_contract_test.go | 38 +++++++++++++++++++ 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 dev/tasks/DEV-000163-operations-ui-contract-refresh.json diff --git a/dev/ACTIVE_TASK.json b/dev/ACTIVE_TASK.json index 5704bc3..511d7f3 100644 --- a/dev/ACTIVE_TASK.json +++ b/dev/ACTIVE_TASK.json @@ -1,5 +1,5 @@ { - "task_file": "dev/tasks/DEV-000162-status-after-completion-matrix.json", - "task_id": "DEV-000162", + "task_file": "dev/tasks/DEV-000163-operations-ui-contract-refresh.json", + "task_id": "DEV-000163", "task_revision": 1 } diff --git a/dev/tasks/DEV-000163-operations-ui-contract-refresh.json b/dev/tasks/DEV-000163-operations-ui-contract-refresh.json new file mode 100644 index 0000000..9f2d8df --- /dev/null +++ b/dev/tasks/DEV-000163-operations-ui-contract-refresh.json @@ -0,0 +1,23 @@ +{ + "task_id": "DEV-000163", + "task_revision": 1, + "architecture_revision": "ADR-0018", + "base_repo_revision": "c25a6346d0615f66ddb411450fcc7a36c62d2b48", + "risk_tier": "E", + "intent": "Extend authenticated cabinet contract tests to cover truthful model-fleet and Agent Execution status surfaces already implemented in Creator Web.", + "requirement_ids": ["WP-801", "WP-802", "WP-805", "Authenticated cabinet acceptance"], + "allowed_change_scope": {"modules": ["creator-web"], "paths": ["tests/creator_web/cabinet_acceptance_contract_test.go", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000163-operations-ui-contract-refresh.json"]}, + "forbidden_change_scope": {"paths": ["architecture/**", "security/**", "deploy/**", "database/**", "cmd/**", "contracts/**", ".gitea/**"]}, + "allowed_architecture_delta": {"new_cross_module_dependencies": 0, "new_canonical_owners": 0, "new_privileges": 0, "new_third_party_dependencies": 0, "new_database_owner_roles": 0}, + "contracts": {"consume": ["existing authenticated Creator Web status routes and static cabinet"], "may_change": ["acceptance tests only"]}, + "semantic_owner": "creator-web", + "canonical_state": ["none; tests inspect existing UI contract"], + "state_transitions": ["authenticated session gates truthful status requests"], + "side_effects_and_privileges": ["no external mutation; no credentials embedded"], + "persistence_and_migrations": ["none"], + "failure_retry_restart": ["missing status surface fails CI"], + "assumptions": ["live authenticated browser visual acceptance remains a separate production verification"], + "acceptance_scenarios": ["fleet and executor status controls exist", "server exposes authenticated routes", "console renders actual selected tier and worker mode", "responsive/reduced-motion tests remain active"], + "required_tests": ["go test ./...", "go vet ./...", "preflight", "check-diff", "check-architecture", "independent", "git diff --check", "CI"], + "terminal_gap_states": ["BLOCKED_BY_AUTHENTICATED_BROWSER_SESSION", "BLOCKED_BY_CONFLICT"] +} diff --git a/tests/creator_web/cabinet_acceptance_contract_test.go b/tests/creator_web/cabinet_acceptance_contract_test.go index b0d5965..c5f8cf4 100644 --- a/tests/creator_web/cabinet_acceptance_contract_test.go +++ b/tests/creator_web/cabinet_acceptance_contract_test.go @@ -52,3 +52,41 @@ func TestCreatorCabinetResponsiveAndReducedMotionRulesExist(t *testing.T) { } } } + +func TestCreatorCabinetExposesFleetAndExecutorTruthfulStatusSurfaces(t *testing.T) { + markupBytes, err := os.ReadFile("../../cmd/creator-web/static/index.html") + if err != nil { + t.Fatal(err) + } + markup := string(markupBytes) + for _, marker := range []string{ + `id="fleet-summary"`, `id="fleet-selected"`, `id="fleet-list"`, + `id="agent-worker-state"`, `id="agent-worker-message"`, + } { + if !strings.Contains(markup, marker) { + t.Fatalf("operations cabinet missing truthful status surface %q", marker) + } + } + + serverBytes, err := os.ReadFile("../../cmd/creator-web/server.go") + if err != nil { + t.Fatal(err) + } + server := string(serverBytes) + for _, marker := range []string{`r.URL.Path == "/api/fleet/readiness"`, `r.URL.Path == "/api/agent-worker/status"`} { + if !strings.Contains(server, marker) { + t.Fatalf("creator server missing authenticated status route %q", marker) + } + } + + consoleBytes, err := os.ReadFile("../../cmd/creator-web/static/assets/console.js") + if err != nil { + t.Fatal(err) + } + console := string(consoleBytes) + for _, marker := range []string{`request("/api/fleet/readiness")`, `request("/api/agent-worker/status")`, `result.selected_tier || "не выбран"`, `status.mode || "UNKNOWN"`} { + if !strings.Contains(console, marker) { + t.Fatalf("console missing truthful status rendering %q", marker) + } + } +} -- 2.54.0