test: cover operations status surfaces #136
@@ -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
|
||||
}
|
||||
|
||||
@@ -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"]
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user