
e2e-test-plan
by mwguerra
MWGuerra Claude Code Marketplace
SKILL.md
name: e2e-test-plan description: Create comprehensive E2E test plans with deep application analysis, navigation coverage audit, and browser-testable scenarios
E2E Test Plan Skill
Overview
This skill creates exhaustive, browser-testable E2E test plans by deeply analyzing Laravel Filament applications. It documents all pages, user roles, critical flows, navigation coverage, and detailed test scenarios that can be executed step-by-step by a QA tester who has never seen the codebase.
Standard Plan Location
Default output: docs/detailed-test-list.md
This skill ALWAYS saves the test plan to docs/detailed-test-list.md unless a custom path is specified via the --output flag.
Important:
- Create the
docs/directory if it doesn't exist - Use the Write tool to save the plan to the standard location
- In update mode: Merge new discoveries with existing plan content
- Use
--forceflag to completely overwrite existing plan - Use
--quickflag for basic plan without deep discovery
Purpose
Generate structured test plans that ensure:
- All pages are identified and will be tested
- All user roles are mapped with their permissions
- Critical user flows are documented
- Test scenarios cover positive and negative cases
- 100% NAVIGATION COVERAGE: Every menu item and internal link is tested
- Cross-user interactions are documented
- Every test can be executed by someone who never saw the codebase
- Priority levels guide test execution order
Review and Update Mode
When docs/detailed-test-list.md exists (and no --force flag), operate in review and update mode:
Step 0a: Read Existing Plan
- Parse Existing Plan Content
- Read
docs/detailed-test-list.md - Extract existing pages from navigation registry
- Extract existing roles from test user accounts
- Extract existing flows from test sections
- Extract test credentials
- Note the previous "Generated" date
- Read
Step 0b: Validate Existing Content
-
Validate Pages For each page in the existing plan:
- Check if the route still exists in the codebase
- For Laravel: Check routes/web.php, Filament resources
- Mark pages as "deprecated" if route no longer exists
-
Validate Roles
- Check if role definitions still exist
- Check permission assignments
- Mark roles that no longer exist
-
Validate Flows
- Check if flow entry points still exist
- Verify flow steps are still valid
Step 0c: Discover New Content
Compare current codebase against documented content:
- Find new routes not in existing plan
- Find new Filament resources
- Find new roles/permissions
- Find new navigation items
Step 0d: Merge and Update
- Keep valid existing content
- Add newly discovered content
- Mark deprecated items
- Generate update report showing changes
Workflow
Phase 1: Deep Discovery (Execute All Commands)
You MUST execute these discovery commands to understand the complete application:
1.1 Database Architecture Analysis
ls -la database/migrations/
cat database/migrations/*.php
For each table, document:
- Table name and purpose
- Key columns and types
- Foreign key relationships
- Pivot tables
1.2 Model & Relationship Mapping
ls -la app/Models/
cat app/Models/*.php
For each model, extract:
- Relationships (hasMany, belongsTo, belongsToMany, morphTo)
- Scopes (local and global)
- Casts and attributes
- Traits used (HasRoles, SoftDeletes)
1.3 Authentication & Authorization System
cat config/auth.php
cat config/permission.php 2>/dev/null
ls -la app/Policies/ 2>/dev/null
cat app/Policies/*.php 2>/dev/null
cat app/Providers/AuthServiceProvider.php 2>/dev/null
ls -la app/Http/Middleware/
cat database/seeders/*.php
grep -A 50 "Role\|Permission" database/seeders/*.php 2>/dev/null
Document:
- All roles in the system
- All permissions per role
- Policy rules per resource
- Guard configurations
1.4 Filament Panel Configuration
cat app/Providers/Filament/*.php 2>/dev/null
ls -la app/Filament/
find app -name "*PanelProvider*" -exec cat {} \; 2>/dev/null
Document:
- Number of panels
- Panel URLs and access rules
- Navigation structure
- Multi-tenant configuration
1.5 Filament Resources Deep Dive
find app/Filament -name "*Resource.php" | head -50
find app/Filament -name "*Resource.php" -exec cat {} \;
For each resource, extract:
- Associated model
- Form fields and validation rules
- Table columns and filters
- Actions (table, bulk, header)
- Relation managers
- Authorization methods
1.6 Filament Pages & Widgets
find app/Filament -name "*Page*.php" -exec cat {} \; 2>/dev/null
find app/Filament -name "*Widget*.php" -exec cat {} \; 2>/dev/null
ls -la app/Livewire/ 2>/dev/null
1.7 Business Logic Layer
ls -la app/Actions/ 2>/dev/null
cat app/Actions/**/*.php 2>/dev/null
ls -la app/Services/ 2>/dev/null
ls -la app/Jobs/ 2>/dev/null
cat app/Jobs/*.php 2>/dev/null
ls -la app/Notifications/ 2>/dev/null
cat app/Notifications/*.php 2>/dev/null
ls -la app/Mail/ 2>/dev/null
1.8 Routes & API
cat routes/web.php
cat routes/api.php 2>/dev/null
php artisan route:list --path=admin 2>/dev/null
php artisan route:list 2>/dev/null | head -100
1.9 Subscription/Billing System
cat composer.json | grep -i "cashier\|stripe\|paddle"
cat config/cashier.php 2>/dev/null
grep -r "subscription\|plan\|billing" database/migrations/
grep -r "Billable\|subscription" app/Models/
1.10 Multi-tenancy
cat composer.json | grep -i "tenancy\|team\|organization"
grep -r "Tenant\|Team\|Organization\|Workspace" app/Models/
1.11 Navigation Audit (CRITICAL)
grep -r "NavigationItem\|navigationItems\|getNavigation\|menu" app/Filament/ --include="*.php"
grep -r "::make\|NavigationGroup\|navigationLabel\|navigationIcon" app/Filament/ --include="*.php" | head -100
grep -r "Action::make\|Tables\\\\Actions\|->url(\|->link(" app/Filament/ --include="*.php" | head -50
Phase 2: Synthesis
Based on Phase 1 analysis, create:
2.1 Application Purpose Statement
Write 2-3 sentences on what this app does and its core value.
2.2 User/Role Matrix
Create detailed table of all user types with permissions:
| User Type/Role | Access Level | Primary Use Cases | Key Permissions |
|---|---|---|---|
| Super Admin | Full | System config | Everything |
| Admin | High | Manage users | CRUD users |
| Member | Standard | Core features | Own resources |
| Guest | Limited | View only | Read public |
2.3 Core User Journeys
Identify the 5-10 most important user flows.
2.4 Entity Relationship Map
Document key models and their relationships.
Phase 3: Generate Test Plan Document
Create docs/detailed-test-list.md with ALL required sections:
# [Application Name] - Detailed Test List
> Generated: [Date]
> Application Version: [Version if available]
> Based on analysis of: [Key files analyzed]
## Test Environment Setup
### Prerequisites
- [ ] Application deployed and accessible at: `[URL]`
- [ ] Database seeded with test data
- [ ] Email testing service configured (e.g., Mailtrap)
- [ ] Payment gateway in test mode (if applicable)
### Test User Accounts
| User ID | Email | Password | Role(s) | Plan | Notes |
|---------|-------|----------|---------|------|-------|
| U1 | admin@test.com | TestPass123! | Super Admin | - | Full access |
| U2 | owner@test.com | TestPass123! | Team Owner | Pro | Team owner |
| U3 | member@test.com | TestPass123! | Member | Free | Standard user |
| U4 | viewer@test.com | TestPass123! | Viewer | - | Read-only |
| U5 | (to be created) | TestPass123! | User | - | Created via invitation |
### Initial Data State
| Entity | Count | Key Records |
|--------|-------|-------------|
| Users | 4 | See above |
| Teams | 2 | "Acme Corp" (U2 owner), "Beta Inc" (U3 member) |
| [Resource] | X | [Description] |
---
## Section 0: Navigation & Link Coverage Audit
This section ensures 100% coverage of all navigable elements.
### 0.1 Complete Navigation Registry
#### 0.1.1 Sidebar Menu Items
| Menu Item | URL Path | Visible To | Tested In | Test Actor |
|-----------|----------|------------|-----------|------------|
| Dashboard | /admin | All roles | 1.1.1, 2.1.1 | U1, U2 |
| Users | /admin/users | Admin only | 5.1.1 | U1 |
| Users > Create | /admin/users/create | Admin only | 5.1.2 | U1 |
| Teams | /admin/teams | Owner+ | 3.1.1 | U2 |
| Projects | /admin/projects | All roles | 2.2.1 | U2 |
| [Continue for ALL menu items...] | | | | |
#### 0.1.2 Resource Action Buttons
| Resource | Action | URL/Behavior | Tested In | Test Actor |
|----------|--------|--------------|-----------|------------|
| Projects | View | /admin/projects/{id} | 2.2.3 | U2 |
| Projects | Edit | /admin/projects/{id}/edit | 2.2.3 | U2 |
| Projects | Delete | Modal confirmation | 2.2.4 | U2 |
| [Continue for ALL actions...] | | | | |
#### 0.1.3 Internal Cross-Reference Links
| Source Page | Link Text/Location | Destination | Tested In |
|-------------|-------------------|-------------|-----------|
| Task Detail | "Project: [Name]" | Project detail | 2.3.2 |
| Project Detail | "Owner: [Name]" | User profile | 2.2.3 |
| [Continue for ALL links...] | | | |
#### 0.1.4 Header/Toolbar Elements
| Element | Location | Action | Tested In |
|---------|----------|--------|-----------|
| User dropdown | Top-right | Opens profile menu | 1.1.1 |
| Logout | User dropdown | Logs out, redirects | 1.4.1 |
| Notifications bell | Top-right | Opens notifications | 3.1.2 |
| Global search | Header | Opens search modal | 2.4.1 |
### 0.2 Full Menu Traversal Tests
#### Test 0.2.1: Super Admin - Complete Menu Access
**Actor:** U1 (Super Admin)
**Purpose:** Access every single menu item to verify all pages load without error
**Preconditions:** U1 logged in
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Verify sidebar shows all items | All menu items visible |
| 2 | Click "Dashboard" | Page loads, URL = /admin |
| 3 | Click "Users" | Page loads, URL = /admin/users |
| 4 | Click "Create" on Users | Form loads, URL = /admin/users/create |
| 5 | Click "Users" breadcrumb | Returns to /admin/users |
| [CONTINUE FOR EVERY MENU ITEM] | | |
| N | Click user dropdown > "Logout" | Logged out, redirected to login |
**Postconditions:** All menu items verified accessible
---
#### Test 0.2.2: Team Owner - Menu Access & Restrictions
**Actor:** U2 (Team Owner)
**Purpose:** Verify correct menu visibility and restricted pages return 403
**Preconditions:** U2 logged in
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Verify sidebar items | Shows permitted items only |
| 2 | Verify hidden items | Does NOT show admin-only items |
| 3 | Click each visible menu item | All load successfully |
| 4 | Manually navigate to /admin/users | 403 Forbidden OR redirect |
| [TEST ALL BOUNDARIES] | | |
---
#### Test 0.2.3: Standard Member - Menu Access & Restrictions
**Actor:** U3 (Team Member)
**Purpose:** Verify most restrictive common role
**Preconditions:** U3 logged in
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Verify sidebar items | Shows minimal items |
| 2 | Navigate to restricted URL | 403 Forbidden |
| [TEST ALL BOUNDARIES] | | |
### 0.3 Breadcrumb Navigation Tests
#### Test 0.3.1: Deep Navigation Breadcrumb Trail
**Actor:** U2
**Preconditions:** Project with tasks exists
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to deep nested page | URL loads correctly |
| 2 | Verify breadcrumb trail | Shows full path |
| 3 | Click each breadcrumb level | Navigates correctly |
### 0.4 Relation Manager Navigation
#### Test 0.4.1: Navigate Through Relation Managers
**Actor:** U2
**Preconditions:** Resource with relations exists
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to resource detail | Page loads |
| 2 | Click relation manager tabs | Each tab loads data |
| 3 | Click related item | Navigates or opens modal |
### 0.5 Coverage Verification Checklist
At the end of test execution, verify:
- [ ] Every row in table 0.1.1 (Sidebar Menu) has been executed
- [ ] Every row in table 0.1.2 (Resource Actions) has been executed
- [ ] Every row in table 0.1.3 (Cross-Reference Links) has been executed
- [ ] Every row in table 0.1.4 (Header Elements) has been executed
- [ ] All restricted URLs tested for each role (403 verification)
- [ ] Breadcrumb navigation tested at least 3 levels deep
- [ ] All relation manager tabs accessed
---
## Section 1: Authentication & Access Control
### 1.1 Login Flow
#### Test 1.1.1: Standard Login - Valid Credentials
**Actor:** U1 (Super Admin)
**Preconditions:** User U1 exists and is active
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to `[login-url]` | Login page loads |
| 2 | Enter email: `admin@test.com` | Email field populated |
| 3 | Enter password: `TestPass123!` | Password field masked |
| 4 | Click "Sign In" button | - Redirect to dashboard<br>- User name visible |
**Postconditions:** User session active
---
#### Test 1.1.2: Login - Invalid Credentials
**Actor:** Anonymous
**Preconditions:** None
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to login | Login page loads |
| 2 | Enter wrong credentials | Fields populated |
| 3 | Click "Sign In" | - Error message shown<br>- Remain on login |
---
### 1.2 Registration Flow (if applicable)
[Tests...]
### 1.3 Password Reset Flow
[Tests...]
### 1.4 Logout Flow
[Tests...]
---
## Section 2: [Primary User Role] - Core Functionality
### 2.1 Dashboard Verification
#### Test 2.1.1: Dashboard Loads with Correct Data
**Actor:** U2 (Team Owner)
**Preconditions:** U2 logged in, has existing data
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to dashboard | Dashboard page loads |
| 2 | Verify statistics widget | Shows accurate counts |
| 3 | Verify recent activity | Lists recent actions |
| 4 | Verify navigation menu | Permitted items visible |
---
### 2.2 [Primary Resource] Management
#### Test 2.2.1: Create [Resource] - Happy Path
**Actor:** U2 (Team Owner)
**Preconditions:** U2 logged in
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Click "[Resources]" in nav | List page loads |
| 2 | Click "New [Resource]" | Create form opens |
| 3 | Fill required fields | Fields accept input |
| 4 | Click "Create" | - Success notification<br>- Resource in list |
**Postconditions:** New resource exists, owned by U2
---
#### Test 2.2.2: Create [Resource] - Validation Errors
**Actor:** U2 (Team Owner)
**Preconditions:** U2 logged in
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to create form | Form loads |
| 2 | Leave required fields empty | - |
| 3 | Click "Create" | - Validation errors shown<br>- Form does NOT submit |
---
#### Test 2.2.3: View [Resource]
**Actor:** U2
[Tests...]
#### Test 2.2.4: Edit [Resource] - Owner Can Edit
**Actor:** U2
[Tests...]
#### Test 2.2.5: Edit [Resource] - Non-Owner Cannot Edit
**Actor:** U3
**Preconditions:** Resource owned by U2
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Login as U3 | Dashboard loads |
| 2 | Navigate to U2's resource edit URL | 403 Forbidden OR redirect |
---
#### Test 2.2.6: Delete [Resource]
**Actor:** U2
[Tests...]
---
### 2.3 Search & Filtering
[Tests...]
---
## Section 3: Multi-User Interaction Flows
### 3.1 Invitation & Onboarding
#### Test 3.1.1: User Invites Team Member
**Actor:** U2 (Team Owner)
**Preconditions:** U2 owns team
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to Team Settings | Settings page loads |
| 2 | Click "Invite Member" | Modal opens |
| 3 | Enter email: `newuser@test.com` | Email populated |
| 4 | Select role: "Member" | Role selected |
| 5 | Click "Send Invitation" | - Success message<br>- Invitation in list |
**Postconditions:** Invitation record created
---
#### Test 3.1.2: Invitee Accepts Invitation (U5)
**Actor:** U5 (new user)
**Preconditions:** Test 3.1.1 completed
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Check email | Invitation received |
| 2 | Click invitation link | Registration page loads |
| 3 | Complete registration | Account created |
| 4 | Verify team membership | Listed as team member |
**Postconditions:** U5 is team member
---
### 3.2 Resource Sharing & Collaboration
#### Test 3.2.1: Owner Shares Resource with Team
**Actor:** U2 (Owner)
**Preconditions:** U2 owns resource, U5 is team member
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to resource | Detail view loads |
| 2 | Click "Share" | Sharing modal opens |
| 3 | Enable team sharing | Toggle activated |
| 4 | Save | Success, sharing indicator shown |
**Postconditions:** Resource visible to team
---
#### Test 3.2.2: Team Member Views Shared Resource
**Actor:** U5 (Team Member)
**Preconditions:** Test 3.2.1 completed
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Login as U5 | Dashboard loads |
| 2 | Navigate to resources | Shared resource visible |
| 3 | View shared resource | Content accessible |
---
#### Test 3.2.3: Team Member Edits Shared Resource
**Actor:** U5 (Team Member with edit permission)
**Preconditions:** U5 has edit permission
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Open shared resource | View loads |
| 2 | Click Edit | Form loads |
| 3 | Make changes | Changes accepted |
| 4 | Save | Success, changes visible |
**Postconditions:** Resource modified by U5
---
#### Test 3.2.4: Owner Sees Changes Made by Team Member
**Actor:** U2 (Owner)
**Preconditions:** Test 3.2.3 completed
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Login as U2 | Dashboard loads |
| 2 | View resource | Changes by U5 visible |
| 3 | Check activity log | Edit by U5 recorded |
---
## Section 4: Subscription & Billing (if applicable)
### 4.1 Plan Restrictions
#### Test 4.1.1: Free User Hits Feature Limit
**Actor:** U3 (Free Plan)
**Preconditions:** U3 at plan limit
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Attempt to exceed limit | Upgrade prompt shown |
---
#### Test 4.1.2: User Upgrades Plan
**Actor:** U3
[Tests...]
---
## Section 5: Admin Panel Functions
### 5.1 User Management
#### Test 5.1.1: Admin Creates User
**Actor:** U1 (Super Admin)
[Tests...]
#### Test 5.1.2: Admin Impersonates User
**Actor:** U1 (Super Admin)
**Preconditions:** U1 logged in, U3 exists
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Navigate to Users | User list loads |
| 2 | Click "Impersonate" on U3 | Impersonation banner appears |
| 3 | Verify viewing as U3 | U3's data visible |
| 4 | Click "Stop Impersonating" | Return to admin view |
---
### 5.2 System Settings
[Tests...]
---
## Section 6: Edge Cases & Error Handling
### 6.1 Session Expiry
#### Test 6.1.1: Session Timeout Handling
**Actor:** U2
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | Login as U2 | Dashboard loads |
| 2 | Wait for session timeout | - |
| 3 | Attempt action | Prompt to re-login |
---
### 6.2 Concurrent Editing
#### Test 6.2.1: Two Users Edit Same Resource
**Actors:** U2 and U5
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | U2 opens edit form | Form loads |
| 2 | U5 opens same form | Form loads |
| 3 | U2 saves changes | Success |
| 4 | U5 saves changes | Conflict warning OR last write wins |
---
### 6.3 Permission Changes Mid-Session
#### Test 6.3.1: Role Downgrade While Logged In
**Actors:** U1 (Admin) and U2 (target)
| Step | Action | Expected Result |
|------|--------|-----------------|
| 1 | U1 changes U2's role | Change saved |
| 2 | U2 navigates to now-restricted page | Access denied |
---
## Section 7: Notifications & Emails
### 7.1 Email Triggers
#### Test 7.1.1: Notification Sent on Resource Share
[Tests...]
---
## Appendix A: Test Data Reset Procedure
```bash
php artisan migrate:fresh --seed
# Or specific seeders:
php artisan db:seed --class=TestDataSeeder
Appendix B: Known Issues / Skip Conditions
| Test ID | Issue | Skip Condition |
|---|---|---|
| 4.1.2 | Stripe test mode only | Production |
Appendix C: Test Execution Log Template
| Date | Tester | Test ID | Result | Notes |
|---|---|---|---|---|
| Pass / Fail / Skip |
## Output
The skill produces:
1. A comprehensive test plan at `docs/detailed-test-list.md`
2. 100% navigation coverage through Section 0
3. Structured tests executable by any QA tester
4. Cross-user interaction scenarios
5. Edge cases and error handling tests
**Final Step**: After generating the plan content, you MUST:
1. Ensure the `docs/` directory exists (create if needed)
2. Write the plan to `docs/detailed-test-list.md` using the Write tool
3. Confirm the file was saved successfully
## Best Practices
1. **Be Exhaustive** - Don't skip pages or flows
2. **100% Navigation Coverage** - Every menu item, every link, every action
3. **Document Assumptions** - Note any assumptions made
4. **Include Credentials** - Provide test user info
5. **Prioritize** - Mark critical tests as high priority
6. **Consider Edge Cases** - Include error scenarios
7. **Cross-User Flows** - Test multi-user interactions
8. **Actor Specification** - Every test must specify the actor
9. **Preconditions** - Document what must exist before each test
10. **Postconditions** - Document expected state after each test
11. **One Action Per Step** - Each step = one browser action
12. **Expected Results** - Every action has explicit expected outcome
13. **Dependencies** - Mark test dependencies clearly
14. **Negative Tests** - Include what should NOT happen
15. **Review Mode** - When updating, preserve working content and merge carefully
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon