Create comprehensive E2E test plans with deep application analysis, navigation coverage audit, and browser-testable scenarios
Generates comprehensive E2E test plans by analyzing Laravel Filament apps. Creates browser-testable scenarios with 100% navigation coverage for QA testers. Automatically saves to docs/detailed-test-list.md and updates existing plans with new discoveries.
/plugin marketplace add mwguerra/claude-code-plugins/plugin install e2e-test-specialist@mwguerra-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
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.
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:
docs/ directory if it doesn't exist--force flag to completely overwrite existing plan--quick flag for basic plan without deep discoveryGenerate structured test plans that ensure:
When docs/detailed-test-list.md exists (and no --force flag), operate in review and update mode:
docs/detailed-test-list.mdValidate Pages For each page in the existing plan:
Validate Roles
Validate Flows
Compare current codebase against documented content:
You MUST execute these discovery commands to understand the complete application:
ls -la database/migrations/
cat database/migrations/*.php
For each table, document:
ls -la app/Models/
cat app/Models/*.php
For each model, extract:
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:
cat app/Providers/Filament/*.php 2>/dev/null
ls -la app/Filament/
find app -name "*PanelProvider*" -exec cat {} \; 2>/dev/null
Document:
find app/Filament -name "*Resource.php" | head -50
find app/Filament -name "*Resource.php" -exec cat {} \;
For each resource, extract:
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
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
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
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/
cat composer.json | grep -i "tenancy\|team\|organization"
grep -r "Tenant\|Team\|Organization\|Workspace" app/Models/
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
Based on Phase 1 analysis, create:
Write 2-3 sentences on what this app does and its core value.
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 |
Identify the 5-10 most important user flows.
Document key models and their relationships.
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
| Test ID | Issue | Skip Condition |
|---|---|---|
| 4.1.2 | Stripe test mode only | Production |
| 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
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.