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.
SKILL.md
| 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. |
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