with one click
opendevbrowser-form-testing
// This skill should be used when the user asks to "test a form", "verify validation", "check submission behavior", "test multi-step forms", or "debug form errors" with OpenDevBrowser.
// This skill should be used when the user asks to "test a form", "verify validation", "check submission behavior", "test multi-step forms", or "debug form errors" with OpenDevBrowser.
This skill should be used when the user asks to design or run OpenDevBrowser provider workflows, scraping pipelines, QA/debug automation, parity checks across modes, or resilient browser operations with codified scripts and artifacts.
This skill should be used when the user asks to design, redesign, audit, or implement frontend/UI work with OpenDevBrowser, screenshots, or the /canvas surface. It turns briefs and existing interfaces into contract-first, real-browser-validated design execution.
Deterministic motion and animation design guidance for OpenDevBrowser agents building web and mobile UI with real-browser temporal evidence.
Skill-guided, evidence-gated research workflow for provider-constrained public source gathering and auditable artifact review.
Collects product metadata, copy, and optional visual assets into a local folder pack for video workflows.
This skill should be used when the user asks to "extract data from a page", "scrape tables", "collect paginated results", "parse list/card content", or "export structured web data" with OpenDevBrowser.
| name | opendevbrowser-form-testing |
| description | This skill should be used when the user asks to "test a form", "verify validation", "check submission behavior", "test multi-step forms", or "debug form errors" with OpenDevBrowser. |
| version | 2.0.0 |
Use this skill for robust form automation across dynamic, multi-step, challenge-protected, and accessibility-critical flows.
artifacts/form-workflows.mdassets/templates/validation-matrix.jsonassets/templates/challenge-decision-tree.jsonassets/templates/a11y-assertions.mdassets/templates/multi-step-state.jsonscripts/run-form-workflow.shscripts/validate-skill-assets.sh../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md./skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh
./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh validation
./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh multi-step
./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh challenge-checkpoint
screencast-start / screencast-stop) when transient validation, step transitions, or challenge timing need temporal evidence.--challenge-automation-mode off|browser|browser_with_helper for bounded browser-scoped computer use on submit or challenge branches; it is not desktop automation.Retry-After when 429 pressure appears.extension reuses the attached live tab or profile state; it does not run system cookie bootstrap.managed attempts readable system Chrome-family cookie bootstrap before first navigation.cdpConnect attempts readable system Chrome-family cookie bootstrap before first navigation.cookie-import only when you intentionally need to add or override cookies after session creation.../opendevbrowser-best-practices/SKILL.md.../opendevbrowser-best-practices/SKILL.md ("Parallel Operations").managed, extension, and cdpConnect paths before parity sign-off.target-use inside one command stream.Matrix source: ../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md
ISSUE-01: stale refs after dynamic validation rerendersISSUE-02: iframe challenge or embedded payment/auth formsISSUE-05: anti-bot checkpoint loops on submitISSUE-06: rate-limit/backoff behaviorISSUE-08: restricted origin or unsupported test surfaceCover at least:
Use the matrix template in assets/templates/validation-matrix.json.
| Validation area | Minimal assertion | Evidence capture |
|---|---|---|
| Required vs optional | Empty required field blocks submit; optional field allows submit | snapshot, inline error text, submit request status |
| Format and pattern | Invalid format shows field error and keeps form invalid | dom_get_text, get_attr aria-invalid, request payload |
| Numeric and length bounds | Min/max boundaries are enforced consistently client+server | field value checks, server response body |
| Conditional sections | Dependent fields appear/disappear with correct state reset | before/after snapshots, visibility checks |
| Disabled/enabled transitions | Submit only enables when constraints are satisfied | is_enabled, transition snapshots |
| Server-side rejection | Backend validation errors map to correct field/global errors | network_poll, rendered error copy |
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
opendevbrowser_type sessionId="<session-id>" ref="<field-ref>" text=""
opendevbrowser_click sessionId="<session-id>" ref="<submit-ref>"
opendevbrowser_snapshot sessionId="<session-id>" format="outline"
opendevbrowser_dom_get_text sessionId="<session-id>" ref="<error-ref>"
Validate error handling semantics:
aria-invalid="true" when invalidopendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-invalid"
opendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-describedby"
For forms guarded by challenge providers:
Do not implement challenge bypass behavior.
Loop guardrail:
For wizard flows:
Use assets/templates/multi-step-state.json to track progression.
Always poll and inspect submit requests:
opendevbrowser_network_poll sessionId="<session-id>" max=50
Flag mismatch cases: