from pathlib import Path ROOT = Path(__file__).resolve().parents[1] PAGE = ROOT / "frontend" / "src" / "app" / "page.tsx" AGENT = ROOT / "frontend" / "src" / "mastra" / "index.ts" ONBOARDING_ROUTE = ROOT / "frontend" / "src" / "app" / "api" / "onboarding" / "route.ts" CONSULT_ROUTE = ROOT / "frontend" / "src" / "app" / "api" / "consult" / "route.ts" ONBOARDING_MIGRATION = ( ROOT / "frontend" / "supabase" / "migrations" / "20260715040000_agent_onboarding_cache.sql" ) def test_onboarding_and_agent_suggestion_contract() -> None: page = PAGE.read_text(encoding="utf-8") agent = AGENT.read_text(encoding="utf-8") route = ONBOARDING_ROUTE.read_text(encoding="utf-8") consult_route = CONSULT_ROUTE.read_text(encoding="utf-8") migration = ONBOARDING_MIGRATION.read_text(encoding="utf-8") assert "onboarding-card" in page assert 'type OnboardingStep = "name" | "birth" | "place"' in page assert "text.slice(0, length)" in page assert "window.setInterval" in page assert "prefers-reduced-motion: reduce" in page assert "用于计算星盘,并安全保存到你的账号" not in page assert "saveOnboardingName" in page assert "saveOnboardingBirth" in page assert "saveOnboardingPlace" in page assert "