Agent skill
playwright-form-validation
Automates form validation testing by submitting invalid data and capturing error states using Playwright browser automation. Use when you need to "test form validation", "check validation errors", "test invalid inputs", "verify error messages", or perform comprehensive form testing. Triggers on validation testing requests, QA workflows, or form compliance checks. Works with web forms, input fields, and validation frameworks across any web application.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/playwright-form-validation
SKILL.md
Playwright Form Validation Tester
Automates comprehensive form validation testing by systematically submitting invalid data, capturing validation messages, and generating detailed test reports.
Quick Start
Test a login form's validation:
# User asks: "Test the validation on the login form at example.com/login"
# Skill will:
# 1. Navigate to form
# 2. Test empty email field
# 3. Test invalid email format
# 4. Test empty password field
# 5. Test valid submission
# 6. Generate report with screenshots
Output: Validation report showing all error messages, missing validations, and screenshots of each error state.
Table of Contents
- When to Use This Skill
- What This Skill Does
- Instructions
- Supporting Files
- Expected Outcomes
- Integration Points
- Expected Benefits
- Success Metrics
- Requirements
- Red Flags to Avoid
- Notes
When to Use This Skill
Explicit Triggers
- "Test form validation on [URL]"
- "Check validation errors for this form"
- "Test invalid inputs on the signup form"
- "Verify error messages are displayed"
- "Run validation tests on [form]"
Implicit Triggers
- QA testing workflows requiring form validation checks
- Accessibility audits checking error message clarity
- Security testing for input sanitization
- Regression testing after form changes
- Documentation of validation behavior
Debugging Triggers
- "Why isn't this form showing validation errors?"
- "Are all required fields validated?"
- "What validation messages does this form show?"
- "Check if email validation is working"
What This Skill Does
This skill performs systematic form validation testing:
- Field Discovery - Identifies all form fields and their types
- Empty Value Testing - Submits form with each field empty
- Invalid Format Testing - Tests common invalid patterns (email, phone, etc.)
- Boundary Testing - Tests min/max lengths and values
- Valid Submission - Verifies successful submission with valid data
- Error Capture - Screenshots and catalogs all validation messages
- Report Generation - Creates comprehensive validation report
Instructions
Overview
The validation testing workflow has 7 main steps:
- Navigate to form and capture initial state
- Identify all form fields and their constraints
- Test empty field validation for required fields
- Test invalid format validation (email, phone, etc.)
- Test boundary values (min/max lengths and values)
- Test valid submission to verify success path
- Generate comprehensive validation report
Quick Workflow Example
// 1. Navigate and snapshot
await browser_navigate({ url: "https://example.com/login" });
await browser_snapshot({ filename: "initial.md" });
// 2. Test empty email
await browser_fill_form({
fields: [{ name: "Email", type: "textbox", ref: "ref_1", value: "" }]
});
await browser_click({ element: "Submit", ref: "ref_submit" });
await browser_take_screenshot({ filename: "empty-email.png" });
// 3. Test invalid email format
await browser_navigate({ url: "https://example.com/login" }); // Reset
await browser_fill_form({
fields: [{ name: "Email", type: "textbox", ref: "ref_1", value: "invalid" }]
});
await browser_click({ element: "Submit", ref: "ref_submit" });
await browser_take_screenshot({ filename: "invalid-email.png" });
// 4. Test valid submission
await browser_navigate({ url: "https://example.com/login" });
await browser_fill_form({
fields: [
{ name: "Email", type: "textbox", ref: "ref_1", value: "test@example.com" },
{ name: "Password", type: "textbox", ref: "ref_2", value: "ValidPass123!" }
]
});
await browser_click({ element: "Submit", ref: "ref_submit" });
await browser_take_screenshot({ filename: "success.png" });
// 5. Generate report using template
Key Testing Patterns
Empty Fields - Test each required field with empty value
Invalid Formats - Test email (invalid), phone (abc), URL (not-url)
Boundaries - Test min/max length ("short", "a".repeat(101))
Cross-Field - Test password mismatch, invalid date ranges
Valid Data - Verify success path works
Detailed Workflow
For complete step-by-step instructions with all code examples, see:
references/detailed-workflow.md- Full workflow with code samplesreferences/validation-patterns.md- Field type testing patternsexamples/examples.md- Complete form testing examples
Supporting Files
- references/validation-patterns.md - Common validation patterns and test cases for different field types
- examples/examples.md - Complete validation test examples for common forms (login, signup, checkout)
- templates/validation-report-template.md - Markdown template for validation reports
- scripts/parse_validation_errors.py - Helper to extract validation messages from snapshots
Expected Outcomes
Successful Validation Test
✅ Form Validation Test Complete
Form: Login Form (https://example.com/login)
Fields tested: 2 (email, password)
Validations found: 4
Missing validations: 0
Results by field:
Email Field:
✅ Empty value - "Email is required"
✅ Invalid format - "Please enter a valid email address"
Password Field:
✅ Empty value - "Password is required"
✅ Too short - "Password must be at least 8 characters"
Valid submission: ✅ Success (redirected to dashboard)
Screenshots saved: 5
Report: .claude/artifacts/2025-12-20/validation-report-login-form.md
Validation Issues Found
⚠️ Form Validation Issues Detected
Form: Signup Form (https://example.com/signup)
Fields tested: 5
Validations found: 3
Missing validations: 2
Issues:
❌ Phone field - No validation for invalid format
Tested: "abc123", "12-34" → No error message shown
❌ Age field - No validation for negative values
Tested: "-5" → Submission accepted
Recommendations:
1. Add phone number format validation
2. Add min value constraint to age field
3. Consider adding password strength indicator
Report: .claude/artifacts/2025-12-20/validation-report-signup-form.md
Integration Points
With Quality Gates
- Run validation tests as part of QA workflow
- Include in pre-release testing checklist
- Automate regression testing for form changes
With Accessibility Testing
- Verify error messages are clear and descriptive
- Check that errors are associated with fields (aria-describedby)
- Validate screen reader compatibility
With Security Testing
- Verify input sanitization on client side
- Check for XSS vulnerabilities in error messages
- Test SQL injection patterns in text fields
With Documentation
- Auto-generate validation documentation from reports
- Create field reference guides with validation rules
- Document error message copy for style guides
Expected Benefits
| Metric | Before | After | Improvement |
|---|---|---|---|
| Time to test form | 30 min (manual) | 2 min (automated) | 93% reduction |
| Test coverage | 40% (spot checks) | 100% (systematic) | 2.5x increase |
| Bugs found | 2-3 (missed edge cases) | 8-10 (comprehensive) | 3x increase |
| Documentation | None → Screenshots + report | Manual notes → Auto-generated | Consistent |
| Regression testing | Rarely done | Automated | Reliable |
Success Metrics
A validation test is successful when:
✅ All form fields identified and cataloged ✅ Empty value validation tested for required fields ✅ Invalid format validation tested for typed fields (email, phone, etc.) ✅ Boundary values tested for constrained fields (min/max) ✅ Valid submission verified with success confirmation ✅ All validation messages captured and documented ✅ Screenshots saved for each error state ✅ Validation report generated with findings ✅ Missing validations identified and reported ✅ Recommendations provided for improvements
Requirements
Browser Automation:
- Playwright MCP server configured
- Browser installed via
mcp__playwright__browser_install - Active browser session
Tools:
mcp__playwright__browser_navigate- Navigate to form URLmcp__playwright__browser_snapshot- Capture form structure and errorsmcp__playwright__browser_fill_form- Fill field valuesmcp__playwright__browser_click- Submit formmcp__playwright__browser_wait_for- Wait for validation to appearmcp__playwright__browser_take_screenshot- Capture error statesWrite- Generate validation reportRead- Parse snapshots for validation messages
Knowledge:
- Common validation patterns (email, phone, URL, etc.)
- HTML form field types and attributes
- Validation message extraction from snapshots
- Markdown report formatting
Environment:
.claude/artifacts/{YYYY-MM-DD}/directory for reports- Write permissions for screenshots
Red Flags to Avoid
Common mistakes when testing form validation:
- Not waiting for validation - Click submit and immediately capture without waiting for messages
- Testing only one field - Missing comprehensive coverage of all fields
- Ignoring field types - Using same invalid pattern for all fields
- Not testing boundaries - Missing min/max length and value constraints
- Skipping valid submission - Not verifying success path works
- Missing screenshots - Not capturing visual proof of error states
- Incomplete report - Not documenting all findings systematically
- Not clearing previous values - Leaving field values from previous tests
- Ignoring client-side vs server-side - Not distinguishing validation types
- Not checking accessibility - Missing aria-invalid, aria-describedby attributes
Notes
Best Practices:
- Test systematically - One field at a time, one validation at a time
- Clear between tests - Reset form to clean state before each test
- Wait appropriately - Give validation time to appear (1-2 seconds)
- Capture everything - Screenshot + snapshot for each error state
- Document clearly - Use descriptive filenames and report sections
Validation Types to Test:
- Required field - Empty value submission
- Format validation - Email, phone, URL, date patterns
- Length constraints - Min/max character limits
- Value constraints - Min/max numeric values
- Pattern matching - Regex validation (password strength, username format)
- Cross-field validation - Password confirmation, date ranges
- Custom business rules - Age restrictions, allowed domains
Common Validation Messages:
- "This field is required"
- "Please enter a valid email address"
- "Password must be at least 8 characters"
- "Please enter a valid phone number"
- "Value must be between X and Y"
Report Organization:
- Save all artifacts to dated directory:
.claude/artifacts/{YYYY-MM-DD}/ - Use consistent naming:
validation-{testname}-{fieldname}.png - Include all screenshots in report with relative paths
- Provide actionable recommendations, not just findings
Progressive Disclosure:
- For simple forms (2-3 fields), include full results inline
- For complex forms (10+ fields), reference detailed results in report file
- Always provide summary statistics up front
- Link to screenshots rather than embedding them in conversation
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?