e2e-testing
Execute comprehensive end-to-end tests for the Meal Planner application using Claude in Chrome browser automation. Supports regression testing (checklist-based) and exploratory testing (discovery-focused). Use this skill when the user asks to run E2E tests, verify user journeys, check accessibility, or test professional polish criteria.
When & Why to Use This Skill
This Claude skill enables automated end-to-end (E2E) testing for web applications through Chrome browser automation. It facilitates both systematic regression testing using predefined checklists and dynamic exploratory testing to uncover hidden bugs, verify complex user journeys, and ensure high-quality accessibility and UI standards.
Use Cases
- Automated Regression Testing: Execute checklist-based verification for core application flows such as multi-step signup, authentication, and admin management to ensure stability after updates.
- Exploratory Bug Discovery: Conduct time-boxed, mission-oriented testing sessions to find edge cases and unexpected behaviors in new features like meal planning or shopping lists.
- Accessibility & Quality Audit: Verify WCAG compliance and 'professional polish' criteria, including visual stability and interaction quality across mobile, tablet, and desktop viewports.
- Visual Test Documentation: Automatically record test executions as GIFs and capture screenshots to provide clear, reproducible evidence for bug reports and QA reviews.
| name | e2e-testing |
|---|---|
| description | Execute comprehensive end-to-end tests for the Meal Planner application using Claude in Chrome browser automation. Supports regression testing (checklist-based) and exploratory testing (discovery-focused). Use this skill when the user asks to run E2E tests, verify user journeys, check accessibility, or test professional polish criteria. |
| license | MIT |
This skill guides execution of end-to-end tests for the Meal Planner application using Claude in Chrome MCP browser automation tools instead of traditional Playwright tests.
Testing Modes
This plugin supports two testing approaches:
| Mode | Purpose | When to Use |
|---|---|---|
| Regression | Verify known functionality against checklists | CI/CD, release validation, specific feature verification |
| Exploratory | Discover unknown bugs through creative testing | New features, pre-release, investigating user-reported issues |
Invoking Different Modes
/e2e-test regression auth-signup # Run regression tests for signup
/e2e-test regression meal-planning # Run regression tests for meal planning
/e2e-test exploratory # Run exploratory testing session
/e2e-test exploratory dashboard # Focus exploratory testing on dashboard
When to Use This Skill
Use this skill when:
- User requests E2E testing or verification of user journeys
- User wants to check accessibility compliance
- User wants to verify "professional polish" quality standards
- User wants to test authentication flows, meal planning, shopping lists, or admin features
- User asks to run
/e2e-testor similar commands - User wants to explore the app for undiscovered bugs
Application Context
- URL: http://localhost:3000 (development) or deployed URL
- Framework: Next.js 15.5 with App Router
- Auth: NextAuth v5 (Credentials + Discord OAuth)
- User Roles: Basic (free), Premium ($4.99/mo), Admin
Key Routes
/- Landing page/auth/signup- Multi-step signup (tier selection, details, payment for premium)/auth/signin- Sign in/auth/forgot-password- Password reset request/dashboard- User dashboard (protected)/planner- Meal plan wizard (protected)/plan/[id]- View generated plan (protected)/dashboard/admin/recipes- Admin recipe management/dashboard/admin/images- Admin AI image generation
Testing Approach
Step 1: Initialize Browser Context
1. Call tabs_context_mcp to get current browser state
2. Create a new tab with tabs_create_mcp for testing
3. Navigate to the application URL
4. Take initial screenshot for baseline
Step 2: Execute Test Checklist (Regression Mode)
For regression testing, load the appropriate checklist from checklists/ directory:
| Checklist | Tests | Description |
|---|---|---|
auth-signup.md |
SU-01 to SU-07 | Signup flow tests |
auth-signin.md |
SI-01 to SI-07 | Signin flow tests |
meal-planning.md |
MP-01 to MP-10 | Plan generation and viewing |
shopping-list.md |
SL-01 to SL-07 | Shopping list functionality |
accessibility.md |
A11Y-01 to A11Y-20 | WCAG 2.1 AA compliance |
admin-features.md |
AD-01 to AD-10 | Admin dashboard tests |
professional-polish.md |
PP-01 to PP-28 | Quality standards verification |
For exploratory testing, skip checklists and follow the Exploratory Testing Guide below.
Step 3: Test Execution Pattern
For each test case:
- Setup: Navigate to the starting URL
- Action: Perform the test steps using browser tools
- Assert: Verify expected outcomes using read_page, screenshots
- Record: Log pass/fail status with evidence
Claude in Chrome Tools Reference
Navigation & Context
tabs_context_mcp- Get browser context, must call firsttabs_create_mcp- Create new tab for testingnavigate- Go to URL or back/forwardresize_window- Test responsive breakpoints
Reading Page State
read_page- Get accessibility tree (use for assertions)find- Find elements by natural language ("login button", "email input")get_page_text- Extract text contentread_console_messages- Check for JS errors (use pattern filter)read_network_requests- Verify API calls
Interactions
computer- Click, type, scroll, screenshotaction: "screenshot"- Capture current stateaction: "left_click"withcoordinate: [x, y]orref: "ref_1"action: "type"withtext: "..."- Type textaction: "key"withtext: "Tab Enter"- Press keysaction: "scroll"withscroll_direction: "down",coordinate: [x, y]action: "wait"withduration: 2- Wait for async operations
form_input- Set form values by element refjavascript_tool- Execute JS for complex assertions
Recording
gif_creator- Record test execution as GIFaction: "start_recording"before testaction: "stop_recording"after testaction: "export"withdownload: trueto save
Test Execution Workflow
Before Starting
// 1. Get browser context
tabs_context_mcp({ createIfEmpty: true });
// 2. Create test tab
tabs_create_mcp();
// 3. Navigate to app
navigate({ url: "http://localhost:3000", tabId: TAB_ID });
// 4. Optional: Start GIF recording
gif_creator({ action: "start_recording", tabId: TAB_ID });
computer({ action: "screenshot", tabId: TAB_ID }); // First frame
During Testing
// Find and interact with elements
find({ query: "email input", tabId: TAB_ID });
// Returns: { elements: [{ ref: "ref_1", ... }] }
form_input({ ref: "ref_1", value: "test@example.com", tabId: TAB_ID });
// Or use computer tool for clicks
computer({ action: "left_click", ref: "ref_2", tabId: TAB_ID });
// Wait for navigation/loading
computer({ action: "wait", duration: 2, tabId: TAB_ID });
// Verify state
read_page({ tabId: TAB_ID, filter: "interactive" });
// Check for errors
read_console_messages({ tabId: TAB_ID, onlyErrors: true });
After Testing
// Stop recording
computer({ action: "screenshot", tabId: TAB_ID }); // Final frame
gif_creator({ action: "stop_recording", tabId: TAB_ID });
// Export GIF with meaningful name
gif_creator({
action: "export",
tabId: TAB_ID,
download: true,
filename: "signup-flow-test.gif",
});
Quality Standards ("Professional Polish")
Each test should verify:
Visual Stability
- No layout shifts during page load
- Images have dimensions or aspect-ratio set
- Loading skeletons match final content size
Perceived Performance
- Loading indicators appear within 100ms of action
- Buttons disabled during submission
- Progress indication for long operations
Interaction Quality
- All clickable elements have hover states
- Focus states visible (2px outline)
- Error messages appear near relevant fields
Accessibility
Use read_page to verify:
- All form inputs have labels
- Images have alt text
- Focus order matches visual order
- ARIA landmarks present
Error Handling
- Inline validation before submit
- Toast notifications for async errors
- Retry buttons where applicable
Reporting Results
After completing tests, generate a report with:
- Summary: Total tests, pass/fail counts
- Details per test:
- Test ID and description
- Steps executed
- Expected vs actual outcome
- Screenshot evidence (attach GIF if recorded)
- Console errors (if any)
- Issues found: Bugs, accessibility violations, polish issues
- Recommendations: Prioritized fixes
Example Test Execution
User: Run E2E tests for the signup flow
Claude:
1. Load checklist from checklists/auth-signup.md
2. Initialize browser context
3. For each test case (SU-01 through SU-07):
- Navigate to /auth/signup
- Execute test steps
- Capture screenshots
- Verify assertions
- Log results
4. Generate test report with findings
Test Data
Use these test credentials:
- Basic user: basic@test.com / TestPass123
- Premium user: premium@test.com / TestPass123
- Admin user: admin@test.com / TestPass123
For new signups, use unique emails like:
test-{timestamp}@example.com
Important Notes
- Always take screenshots before and after key actions
- Check console for errors after each page navigation
- Verify network requests complete successfully
- Test at multiple viewport sizes (mobile: 375x667, tablet: 768x1024, desktop: 1280x800)
- Record GIFs for complex multi-step flows to show test execution
Exploratory Testing Guide
Exploratory testing is a creative, discovery-focused approach where the tester simultaneously learns, designs tests, and executes them. Unlike regression testing which follows predefined checklists, exploratory testing adapts in real-time based on findings.
Exploratory Testing Principles
- Charter-Based Sessions: Define a time-boxed mission (e.g., "Explore the meal planning wizard for edge cases")
- Note Everything: Document unexpected behaviors, even if not bugs
- Follow Hunches: If something seems suspicious, investigate deeper
- Think Like Users: Consider different user personas and their workflows
- Break Things: Try unexpected inputs, rapid actions, edge cases
Session Charter Template
Before starting, define:
Charter: [What area to explore]
Duration: [Time limit, e.g., 30 minutes]
Focus: [Specific concerns - performance, edge cases, mobile, etc.]
Personas: [Which user types to test as]
Exploration Techniques
1. Boundary Testing
- Empty inputs, very long strings, special characters
- Maximum/minimum values for numbers
- Future/past dates at extremes
2. State Manipulation
- Refresh during operations
- Back button during multi-step flows
- Multiple tabs with same session
- Network interruption simulation
3. Rapid Interactions
- Double-click instead of single click
- Submit forms multiple times quickly
- Rapid navigation between pages
4. Cross-Feature Interactions
- Create content in one area, verify in another
- Test feature combinations (e.g., vegetarian + time constraints)
- Switch between user roles mid-session
5. Environment Variations
- Different viewport sizes
- Slow network simulation
- Browser zoom levels (67%, 150%, 200%)
Exploratory Session Workflow
Phase 1: Reconnaissance (5 min)
1. Navigate through the target area
2. Note the main user flows
3. Identify inputs, buttons, states
4. Check console for existing errors
Phase 2: Structured Exploration (20 min)
1. Pick a user persona
2. Attempt realistic tasks
3. Try variations and edge cases
4. Document findings in real-time
5. Take screenshots of anomalies
Phase 3: Chaos Testing (5 min)
1. Try to break things intentionally
2. Unexpected sequences of actions
3. Invalid data combinations
4. Stress test with rapid actions
Phase 4: Documentation (5 min)
1. Summarize bugs found
2. Note areas of concern
3. Suggest regression test additions
4. Rate areas by risk level
Bug Classification
When discovering issues, classify by:
| Severity | Description | Example |
|---|---|---|
| Critical | Data loss, security issue, complete failure | Payment processed twice |
| High | Feature broken, no workaround | Cannot generate meal plan |
| Medium | Feature impaired, workaround exists | Filter doesn't persist |
| Low | Minor issue, cosmetic | Slight misalignment |
Exploratory Testing Report Template
## Exploratory Testing Session Report
**Date**: [Date]
**Tester**: Claude via Browser Automation
**Duration**: [X minutes]
**Charter**: [Mission statement]
### Areas Explored
- [Area 1]
- [Area 2]
### Bugs Discovered
| ID | Severity | Description | Steps to Reproduce | Screenshot |
| ------ | -------- | ----------- | ------------------ | ---------- |
| EX-001 | High | ... | 1. ... 2. ... | [link] |
### Observations (Not Bugs)
- [Observation 1 - potential UX improvement]
- [Observation 2 - performance concern]
### Risk Assessment
- **High Risk Areas**: [Areas that need more testing]
- **Stable Areas**: [Areas that performed well]
### Recommended Regression Tests
- [New test case to add to checklist]
### Session Notes
[Free-form notes about the testing session]
Example Exploratory Session
User: Run exploratory testing on the shopping list feature
Claude:
1. Define charter: "Explore shopping list for data integrity and UX issues"
2. Initialize browser, sign in as premium user
3. Generate a meal plan to create shopping list
4. Exploration:
- Check all items, then uncheck rapidly
- Add very long custom item names
- Try adding same item twice
- Check items then regenerate plan
- Test on mobile viewport
- Open shopping list in two tabs, modify both
5. Document findings with screenshots
6. Generate exploratory testing report
Transitioning Findings to Regression Tests
When exploratory testing reveals bugs:
Fix the bug
Create regression test - Add to appropriate checklist:
### EX-001: [Bug Title] → [NEW-ID] - **Priority**: P1 - **Precondition**: [Setup needed] - **Steps**: 1. [Step that caused the bug] 2. [Verification step] - **Expected**: [Correct behavior]Link to issue - Reference GitHub issue if created