A Chrome (Manifest V3) browser extension that instantly fills form fields on any page with realistic, locally-generated fake data — built for testing forms quickly.
- Smart label-based field detection — fields are matched by their normalized label/name (handling camelCase, snake_case, and kebab-case) to choose an appropriate value.
- Barbados / GovBB-localized values — phone numbers (
1-246-xxx-xxxx), postcodes (BBxxxxx), national ID (xxxxxx-xxxx), National Insurance / NIS, and TAMIS reference numbers. - Split day/month/year date detection — recognizes date triplets rendered as separate inputs and fills all three parts from the same generated date.
- Constraint-aware values — respects HTML
pattern,maxlength, andminlength(plus minimums stated only in hint/validation text), generating values that fit. - Confirm-email reuse — a "confirm/re-enter email" field reuses the email already generated for the matching field instead of a fresh, mismatched one.
- Auto-correction on validation error — after a fill, a
MutationObserverwatches for validation errors and repairs the offending values (e.g. stripping characters a "letters only" rule forbids, or regenerating from the error hint). - Test Validation Mode — deliberately fills fields with data that should fail validation, cycling through one broken rule per fill (invalid format → below minimum → above maximum → out of range → empty) so you can exercise a form's error states.
- Fully local — all data is generated on-device with faker. No network requests, no AI service, no API keys.
The project uses pnpm (a pnpm-lock.yaml and pnpm-workspace.yaml are committed). npm also works if you prefer it (there is a package-lock.json).
pnpm install
pnpm buildThe build (Vite + @crxjs/vite-plugin) emits the unpacked extension to the Vite build output directory, dist/.
Then load it into Chrome:
- Open
chrome://extensions. - Enable Developer mode (top-right toggle).
- Click Load unpacked and select the
dist/directory.
For active development, use watch-mode rebuilds:
pnpm dev(npm install, npm run build, and npm run dev are equivalent.)
- Click the Form Filler toolbar icon, then Fill All Fields — or press Ctrl+Shift+F (Cmd+Shift+F on macOS).
- Toggle Test Validation Mode from the popup's Settings view, or with Ctrl+Shift+X (Cmd+Shift+X on macOS).
The popup shows the result of the last fill (fields filled and how long ago).
pnpm testUnit tests run with Vitest (vitest run). Use pnpm test:watch for watch mode.
src/
shared/ Field extraction + value generation (framework-agnostic, unit-tested):
rules.ts, valueGenerator.ts, types.ts
content/ DOM read/write (extract fields, apply values) + on-page toast
background/ Service-worker orchestration: fill flow, keyboard commands,
test-validation mode, validation-error auto-correction
popup/ Popup UI (Fill button, settings, test-mode toggle)
tests/ Vitest unit tests
docs/
plans/ Implementation plans
specs/ Design specs (under docs/superpowers/)
decisions/ Architecture decision records (e.g. local-only fake data)
summaries/ Per-session change summaries
All fake data is generated locally with faker; the extension makes no network requests and uses no AI service. See docs/decisions/0001-local-only-fake-data-generation.md for the rationale.