Your first run
What to expect the first time you run Nitpick against a real app.
This page walks through a cold start no knowledge base, no prior runs, just a fresh install and a URL.
Starting state
After ./scripts/install.sh (one-shot bootstrap) you have nitpick on your PATH. Create a per-app project directory and work from there:
~/my-app-qa/
├── nitpick.yaml # ← you'll create this with `nitpick init`
├── .env # ← also written by init, auto-loaded on every run
├── knowledge-base/ # empty until first crawl
└── runs/ # empty until first run
One dir per app you test — configs, credentials, and the knowledge base stay isolated.
Step 1: nitpick init (~60 seconds)
Walks through ~10 quick questions. Key inputs:
- Base URL of the app under test
- LLM provider + API key, then a model picker with rough per-run cost estimates
- Role credentials. Leave Login URL path blank for SPAs that auto-redirect to login or show a login modal on the base URL
- Persistent instructions (optional, free-form) the scope router obeys on every run — e.g. “only test
/tasks/new”, “skip billing”
Writes nitpick.yaml + .env. See Install for the full flow.
Step 2: nitpick crawl (2–5 minutes)
Builds the page graph from scratch. You’ll see:
[14:32:01] Starting crawl { base_url:"...", spa_mode: true }
[14:32:03] Crawling as role { role:"admin" }
[14:33:41] Crawl complete { pages: 15, edges: 42 }
Discovered 15 pages in 100s
Now on disk:
knowledge-base/
├── auth/admin.json
└── page-graph.json
Step 3: Smoke check (optional, ~90 seconds)
nitpick run --scope smoke
Fast sanity check. If this passes, your pipeline is healthy.
Step 4: First deep test
Either one page:
nitpick run --scope targeted --url /tasks/new
Or the whole thing (15–45 min):
nitpick run --scope full
The Phase 3.5 checkpoint
After exploration + synthesis, Junior QA presents what it found and asks you to approve. Your context gets merged into the model. Junior QA then generates Playwright tests, runs them, and reports.
Step 5: Open the report
open runs/<timestamp>/reports/unified-report.html
A GitHub-styled dashboard with:
- Header stats (pages passed/failed, total tests, bugs)
- Per-page sections (collapsible, with failure details inline)
- Flow results
- App bugs (with severity)
- Flaky test registry
- Changes since last run (empty on first run)
Common first-run issues
Auth failure. If your app has OAuth, MFA, or a non-standard login form, the default crawler auth will fail. See Troubleshooting.
Crawler finds 0 pages. Some SPAs render everything client-side with no <a> tags. Nitpick’s SPA mode handles most, but not all. Fall back to --scope targeted --url /a --url /b.
A page test hits max iterations. Default is 100. If the app is confusing the agent, lower llm.max_iterations in your config or improve the terminal guard list.