Browser Form Fill
Fill a form using a structured field map ({"first_name": "Ada", "company": "..."}). When a browser-templates entry exists for the host, use it to resolve field names → CSS selectors automatically; otherwise resolve via the page accessibility snapshot.
When to use
- Submitting a known form (signup, contact, checkout) where field names are stable.
- Re-using a stored template for a recurring submission.
- Authoring a new template for a site by recording the resolved selectors.
Steps
- Open a recorded session via
browser-record. - Resolve selectors:
- Template path (
--template <name>): pull{field_name → selector}frombrowser-templates. - Snapshot path: call
browser_snapshot, walk the accessibility tree, match each input's accessible name / label to the field map keys.
- Template path (
- AIDefence PII gate: every value in the field map passes
aidefence_has_piibefore any keystroke; recordpii_in_form: truein the session manifest. Do not record the values themselves in the trajectory; record only the field names + a redacted placeholder. - Fill with
browser_fill/browser_type/browser_select/browser_checkper input type. - Submit if
--submit: locate the submit button via the snapshot,browser_click, thenbrowser_waitfor navigation. - Persist the template if a new mapping was discovered:
npx -y @claude-flow/cli@latest memory store --namespace browser-templates \ --key "<host>:<form-name>" \ --value "{field_map:{...}, submit_selector:..., post_submit_url_pattern:...}" - Verify post-submit state if a verification snippet was provided in the field map's
_assertkey.
Caveats
- Trajectory steps for fills MUST redact values. The PII gate is the contract.
- For inputs that require typing simulation (e.g., autocomplete reactions), use
browser_type(simulates keystrokes) rather thanbrowser_fill(sets value programmatically). Record which one was used in the trajectory step. - Multi-step forms are a sequence of
browser-form-fillinvocations; chain them via the same session id. - If the form has a CAPTCHA, surface the request to the user — do not attempt to bypass.