Claude-skill-registry e2e-test-plan
Create comprehensive E2E test plans with deep application analysis, navigation coverage audit, and browser-testable scenarios
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/e2e-test-plan" ~/.claude/skills/majiayu000-claude-skill-registry-e2e-test-plan && rm -rf "$T"
skills/data/e2e-test-plan/SKILL.mdE2E 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
directory if it doesn't existdocs/ - Use the Write tool to save the plan to the standard location
- In update mode: Merge new discoveries with existing plan content
- Use
flag to completely overwrite existing plan--force - Use
flag for basic plan without deep discovery--quick
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