hermes-hub/tests
Hermes Team a9c04b75a2 fix(ui): repair startup crash in TeamView and tighten the headless guard
Launching the app died with "'dict' object has no attribute 'readiness'".
TeamView.__init__ forwarded its legacy app_state dict into update_data(snapshot),
whose guard only handled None, so {} reached snapshot.readiness. TeamView is the
default view, so the window never appeared.

Fixes the call site and hardens every snapshot guard to fall back on anything
that is not a HubSnapshot. Adds tests/test_view_startup_contract.py, which
checks both conditions statically and therefore runs headless; verified to fail
on the pre-fix sources.

The GUI-import invariant previously matched the literal string "customtkinter",
which missed modules pulling it transitively. Rewritten over the AST, it
immediately found test_codex_opencode_wizard.py importing router.ui.components
without pytest.importorskip — the same defect that took the release gate down
once before, hidden until now behind conftest's name-based skip.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 23:22:19 +07:00
..
conftest.py feat(hub): Plan A stabilization, refresh architecture, delta UI, and capability routing 2026-08-20 21:20:51 +07:00
test_accounts_tariffs_quotas.py feat: multi-provider accounts, tariffs, quota buckets, Claude & Grok integration 2026-08-20 21:02:13 +07:00
test_antigravity_concurrency.py refactor(plan-a): close residual blockers, concurrency race, and feed verification 2026-08-20 22:55:43 +07:00
test_codex_opencode_wizard.py fix(ui): repair startup crash in TeamView and tighten the headless guard 2026-08-20 23:22:19 +07:00
test_data_truthfulness_and_oauth_security.py fix(quota, oauth): enforce data truthfulness, honest quota sources, and fail-closed OAuth 2026-08-20 22:11:57 +07:00
test_import_invariants.py fix(ui): repair startup crash in TeamView and tighten the headless guard 2026-08-20 23:22:19 +07:00
test_installer.py refactor(plan-a): close residual blockers, concurrency race, and feed verification 2026-08-20 22:55:43 +07:00
test_multi_provider_router.py feat: initialize standalone Hermes Hub 2026-08-20 00:17:11 +07:00
test_oauth_lifecycle.py feat(oauth): adopt Cockpit Tools model with immediate URL readiness, manual callback fallback, and race protection 2026-08-20 20:17:37 +07:00
test_p0_release_gate.py fix: update canonical installer with dependency resolution and close release blockers 2026-08-20 18:17:08 +07:00
test_plan_a_stabilization_and_smart_routing.py feat(hub): Plan A stabilization, refresh architecture, delta UI, and capability routing 2026-08-20 21:20:51 +07:00
test_roadmap_features.py feat(release): recovery stabilization, built-in updater, release gate, and v0.1.1 release pipeline 2026-08-20 16:29:35 +07:00
test_ui_refinement.py fix(router): address review findings B1-B4 and S1-S9 with full regression suite 2026-08-20 17:04:49 +07:00
test_unified_health.py feat(release): recovery stabilization, built-in updater, release gate, and v0.1.1 release pipeline 2026-08-20 16:29:35 +07:00
test_updater.py fix: update canonical installer with dependency resolution and close release blockers 2026-08-20 18:17:08 +07:00
test_view_startup_contract.py fix(ui): repair startup crash in TeamView and tighten the headless guard 2026-08-20 23:22:19 +07:00