e2e-test-plan
npx skills add https://github.com/mwguerra/claude-code-plugins --skill e2e-test-plan
Agent 安装分布
Skill 文档
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