| name | site-smoke-test |
| description | Runs a structured autonomous smoke test of synthex.social (or localhost:3000) covering all critical paths: landing page, auth, dashboard, API health, and key features. Produces a pass/fail matrix across 8 critical paths. Use before merging a PR, after a production deploy, when checking if the site is healthy, or when asked "is the site working?", "run a health check", "smoke test the app", "check synthex.social". Also use as part of Phase 6 E2E verification in the autonomous deployment pipeline. |
| metadata | {"author":"synthex","version":"1.0","type":"action-skill","triggers":["smoke test","health check","site working","is synthex.social up","run a health check","check the app","e2e check","post-deploy verification","phase 6"]} |
| context | fork |
Site Smoke Test Skill
Purpose
Run a structured 8-path smoke test of the Synthex application to confirm
the site is healthy and all critical user journeys are accessible.
Used as the autonomous substitute for manual E2E verification.
Environment Selection
| Trigger | Base URL |
|---|
| "production" or no context | https://synthex.social |
| "dev" or "localhost" | http://localhost:3000 |
| PR verification | Vercel preview URL (from gh pr view) |
8 Critical Paths
Execute each path in order. For each: navigate, screenshot, check console, record result.
Path 1 โ Landing Page
Navigate: {BASE_URL}/
Check:
Expected status: 200
Path 2 โ API Health Endpoint
Navigate: {BASE_URL}/api/health
OR: fetch('https://synthex.social/api/health')
Check:
Note: 503 with { status: 'unhealthy' } is acceptable โ means external services
not connected but the function itself is running.
Path 3 โ Login Page
Navigate: {BASE_URL}/login
Check:
Path 4 โ Demo API Endpoint (CEO directive)
fetch('https://synthex.social/api/demo/analyze', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url: 'https://google.com.au' })
}).then(r => r.json()).then(d => console.log('DEMO_RESULT:', JSON.stringify(d)))
Check:
CEO Directive: This is the mandatory curl check. If error key present โ FAIL.
Path 5 โ Dashboard (Authenticated)
Requires auth session. Use browser-auth skill first if not authenticated.
Navigate: {BASE_URL}/dashboard
Check:
If redirected to /login: Record as conditional PASS (unauthenticated state expected).
Run browser-auth skill then re-test to confirm authenticated state works.
Path 6 โ Advisor Page (New Feature โ SYN-595)
Navigate: {BASE_URL}/dashboard/advisor
Check:
Path 7 โ Authority Hub / Client Page (New Feature โ SYN-593)
Navigate: {BASE_URL}/clients
OR: {BASE_URL}/clients/{any-test-slug}
Check:
Check JSON-LD:
document.querySelectorAll('script[type="application/ld+json"]').length
Expected: โฅ 1 script tag on a real client page.
Path 8 โ Sidebar Navigation (SYN-595 Integration Gap Fix)
Requires auth. Navigate to dashboard and confirm:
document.querySelector('[href="/dashboard/advisor"]')?.textContent
Check:
!!document.querySelector('[data-testid="team-invite-banner"], [class*="TeamInviteBanner"], [class*="team-invite"]')
Output Format
## Smoke Test Report โ synthex.social
**Run timestamp:** [HH:MM DD/MM/YYYY AEST]
**Environment:** production (synthex.social) | development | preview
**Auth state:** Authenticated | Unauthenticated
| Path | Check | Result | Notes |
|------|-------|--------|-------|
| 1. Landing page | Page loads, CTA visible | โ
PASS / โ FAIL | |
| 2. API health | /api/health returns JSON | โ
PASS / โ FAIL | |
| 3. Login page | Form renders | โ
PASS / โ FAIL | |
| 4. Demo API | businessName + caption in response | โ
PASS / โ FAIL | |
| 5. Dashboard | Loads, sidebar visible | โ
PASS / โ FAIL | |
| 6. Advisor page | Loads, cold-start state OK | โ
PASS / โ FAIL | |
| 7. Authority Hub | Route exists, no 500 | โ
PASS / โ FAIL | |
| 8. Sidebar nav | Advisor link present | โ
PASS / โ FAIL | |
### Overall: [X/8 PASS]
### Failures (if any)
- Path [N]: [exact error, element missing, or unexpected response]
- Suggested fix: [specific action]
### Console errors observed
- [list or "None"]
### Recommendation
- SHIP: All 8 paths pass (or 7/8 with known pre-existing issue)
- HOLD: 1+ critical path failing (paths 2, 4, 5 are critical)
- INVESTIGATE: Unexpected failures requiring further `browser-debug` skill run
Criticality Tiers
| Tier | Paths | On failure |
|---|
| CRITICAL | 1, 2, 4, 5 | Block deploy/merge |
| HIGH | 3, 6, 7 | Investigate before merge |
| MEDIUM | 8 | Note but don't block |
A smoke test with all CRITICAL paths passing is considered sufficient for
production deploy. HIGH and MEDIUM failures should be tracked as Linear issues.