Our review
Runs the appropriate level of QA (unit, e2e, visual, or install tests) depending on what code changed.
Strengths
- Automated test level selection based on change type
- Agent-browser integration for visual UI verification
- Clear release and infrastructure testing workflow
Limitations
- Relies on make targets and external tools (Playwright, agent-browser, multipass)
- Requires agent-browser to be installed for visual testing
- E2E tests take several minutes to complete
After any code change, before a release, or when verifying a feature.
For minor documentation edits or purely non-functional changes.
Security analysis
SafeThe skill provides a structured QA testing guide using local commands, agent-browser, and a VM test. The install script download uses curl-pipe-bash, but it is executed inside a disposable multipass VM and references the project's own domain, so it's not a generic risky instruction. No exfiltration, destruction, or safety bypass.
No concerns found
Examples
I just fixed a bug in the login flow. Run the appropriate QA level for this change.We are about to release version 2.3. Run the full QA suite including unit, E2E, visual, and VM install tests.I added a new chart to the dashboard. Use agent-browser to visually verify it renders correctly.name: qa description: Use after code changes, before releases, or when testing features - runs the right level of QA based on what changed
QA Testing
What did you change? Start here.
| 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 |
Level 1: Unit Tests (~3 seconds)
make test
Run after every change. No excuses.
Level 2: E2E Tests (~5 minutes)
# 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.
Level 3: Visual QA with agent-browser
For verifying UI rendering, checking that data displays correctly, or testing flows that E2E doesn't cover.
Setup (one-time)
npm i -g agent-browser
agent-browser install
Start dev server
make dev # MUST use make dev (Go + Vite together)
Dev credentials
- Email:
admin@example.com - Password:
password - Created by
make db-seed
Login
agent-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
Navigate and verify
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
Generate real browser events
# 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
Key pages to verify
| 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 |
Important
- Always
make dev—make watch-goalone won't render Inertia pages - Click through the UI — don't force navigation with
openafter login (breaks Inertia state) /_demofor real events — sends actualSec-CH-UAheaders from the browser- Dev database:
storage/fusionaly-development.db
Level 4: VM Install Test
Only needed when changing: install script, matcha, Docker setup, or release infrastructure.
Create fresh VM
multipass delete fusionaly-test --purge 2>/dev/null || true
multipass launch 24.04 --name fusionaly-test --cpus 2 --memory 2G --disk 10G
Run install
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
'
Verify
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
'
Browser test via tunnel
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
Cleanup
multipass delete fusionaly-test --purge
Release Checklist
Before tagging a release:
- [ ]
make testpasses - [ ]
make test-e2epasses (kill dev server first!) - [ ] Visual QA: dashboard loads, browser stats correct, events ingesting
- [ ] VM install test (if install/infra changed)
- [ ] Pro: update OSS submodule, build, test
Common Issues
| 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 |
TDD Red-Green-Refactor
Testing
Skill that guides Claude through the complete TDD cycle.
Web Accessibility Audit
Testing
Performs a comprehensive web accessibility audit following WCAG standards.
UAT Test Case Generator
Testing
Generates structured and comprehensive user acceptance test cases.