qa
Use after code changes, before releases, or when testing features - runs the right level of QA based on what changed
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use after code changes, before releases, or when testing features - runs the right level of QA based on what changed
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use ONLY when explicitly invoked. Installs Fusionaly on a server you can reach over SSH with a key. Optionally provisions a new Hetzner server or sets up Cloudflare DNS.
Use when styling Fusionaly UI components, pages, or charts - applies the Fusionaly design system with black/white palette and brand accents
Use when writing or reviewing Go code in fusionaly-oss — adding routes, handlers, domain contexts, background jobs, the manager CLI, wiring the app, or writing tests. Covers the cartridge framework, matcha for the manager, Phoenix Contexts, lifecycle/shutdown, and the test conventions.
Use when user asks about website analytics, traffic, visitors, page views, referrers, or mentions "fusionaly". Queries Fusionaly analytics via SQL API.
| name | qa |
| description | Use after code changes, before releases, or when testing features - runs the right level of QA based on what changed |
| Change | Test level | Command |
|---|---|---|
| Bug fix, refactor, small feature | Unit | make test |
| Feature, UI, big change | Unit + E2E | make test then make test-e2e |
| Visual / UI verification | Agent-browser | make dev + agent-browser |
| Install script, matcha, infra | VM install | multipass VM |
| Release | All of the above | See release checklist |
make test
Run after every change. No excuses.
# CRITICAL: Kill any running dev server first — E2E uses its own database
lsof -ti :3000 | xargs kill -9 2>/dev/null
make test-e2e
Playwright tests that run onboarding, create websites, check dashboards, ingest events. Run after features or big changes.
For verifying UI rendering, checking that data displays correctly, or testing flows that E2E doesn't cover.
npm i -g agent-browser
agent-browser install
make dev # MUST use make dev (Go + Vite together)
admin@example.compasswordmake db-seedagent-browser open "http://localhost:3000/login"
agent-browser snapshot -i
agent-browser fill @e1 "admin@example.com"
agent-browser fill @e3 "password"
agent-browser click @e4
agent-browser snapshot -i # list interactive elements with refs
agent-browser click @e11 # click element by ref
agent-browser scroll down 1000 # scroll to find sections
agent-browser screenshot # capture page as PNG
agent-browser get url # check current URL
# The /_demo page includes the tracking script — fires real pageviews
agent-browser open "http://localhost:3000/_demo"
# Wait for event processing (~10s), then check dashboard
| Page | How to reach | What to check |
|---|---|---|
| Admin home | /admin | Website list loads |
| Dashboard | Click arrow (→) on a website | Charts, stats, time range |
| Browsers tab | Scroll to Device Analytics, click "Browsers" | Browser names (Brave, Edge, etc.) |
| Settings | Click "Settings" in nav | Forms save, flash messages |
| Events | Click "Events" tab on dashboard | Event list, sessions view |
make dev — make watch-go alone won't render Inertia pagesopen after login (breaks Inertia state)/_demo for real events — sends actual Sec-CH-UA headers from the browserstorage/fusionaly-development.dbOnly needed when changing: install script, matcha, Docker setup, or release infrastructure.
multipass delete fusionaly-test --purge 2>/dev/null || true
multipass launch 24.04 --name fusionaly-test --cpus 2 --memory 2G --disk 10G
multipass exec fusionaly-test -- bash -c '
sudo apt-get update -qq && sudo apt-get install -y -qq expect
cat > /tmp/run_install.exp << '\''EXPECTSCRIPT'\''
#!/usr/bin/expect -f
set timeout 300
spawn sudo bash -c "curl -fsSL https://fusionaly.com/install | bash"
expect "Enter your domain name"
send "test.local\r"
expect "Proceed with this configuration"
send "Y\r"
expect eof
EXPECTSCRIPT
expect /tmp/run_install.exp
'
multipass exec fusionaly-test -- bash -c '
echo "=== Containers ===" && sudo docker ps
echo "=== Version ===" && fusionaly version
echo "=== Health ===" && curl -s http://172.18.0.2:8080/_health
'
VM_IP=$(multipass info fusionaly-test | grep IPv4 | awk '{print $2}')
ssh -L 8080:172.18.0.2:8080 ubuntu@$VM_IP
# Open http://localhost:8080/setup
multipass delete fusionaly-test --purge
Before tagging a release:
make test passesmake test-e2e passes (kill dev server first!)| Issue | Cause | Fix |
|---|---|---|
| E2E fails "Setup already complete" | Dev server running (wrong DB) | lsof -ti :3000 | xargs kill -9 |
| agent-browser login doesn't work | Vite not running | Use make dev, not make watch-go |
| Dashboard shows JSON error | Navigated directly after forced POST | Start fresh browser, click through UI |
/_demo events not appearing | Processing job hasn't run yet | Wait ~10 seconds, check ingested_events table |
| VM can't reach app | Docker internal network | Use SSH tunnel to 172.18.0.2:8080 |