tribunal-kit 4.5.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/.shared/ui-ux-pro-max/README.md +4 -4
- package/.agent/ARCHITECTURE.md +279 -277
- package/.agent/GEMINI.md +127 -121
- package/.agent/agents/accessibility-reviewer.md +187 -187
- package/.agent/agents/ai-code-reviewer.md +199 -199
- package/.agent/agents/api-architect.md +71 -66
- package/.agent/agents/backend-specialist.md +219 -215
- package/.agent/agents/cloud-engineer.md +98 -0
- package/.agent/agents/code-archaeologist.md +168 -161
- package/.agent/agents/database-architect.md +184 -184
- package/.agent/agents/db-latency-auditor.md +213 -216
- package/.agent/agents/debugger.md +198 -191
- package/.agent/agents/dependency-reviewer.md +106 -103
- package/.agent/agents/devops-engineer.md +218 -218
- package/.agent/agents/documentation-writer.md +209 -201
- package/.agent/agents/explorer-agent.md +167 -160
- package/.agent/agents/frontend-reviewer.md +162 -160
- package/.agent/agents/frontend-specialist.md +257 -248
- package/.agent/agents/game-developer.md +48 -48
- package/.agent/agents/logic-reviewer.md +118 -116
- package/.agent/agents/mobile-developer.md +197 -200
- package/.agent/agents/mobile-reviewer.md +159 -162
- package/.agent/agents/orchestrator.md +187 -181
- package/.agent/agents/penetration-tester.md +160 -157
- package/.agent/agents/performance-optimizer.md +183 -183
- package/.agent/agents/performance-reviewer.md +178 -178
- package/.agent/agents/precedence-reviewer.md +251 -250
- package/.agent/agents/product-manager.md +149 -142
- package/.agent/agents/product-owner.md +81 -80
- package/.agent/agents/project-planner.md +152 -142
- package/.agent/agents/qa-automation-engineer.md +216 -225
- package/.agent/agents/resilience-reviewer.md +88 -88
- package/.agent/agents/schema-reviewer.md +67 -67
- package/.agent/agents/security-auditor.md +180 -174
- package/.agent/agents/seo-specialist.md +188 -193
- package/.agent/agents/sql-reviewer.md +159 -161
- package/.agent/agents/supervisor-agent.md +173 -184
- package/.agent/agents/swarm-worker-contracts.md +170 -166
- package/.agent/agents/swarm-worker-registry.md +92 -92
- package/.agent/agents/system-architect.md +85 -0
- package/.agent/agents/test-coverage-reviewer.md +158 -160
- package/.agent/agents/test-engineer.md +118 -118
- package/.agent/agents/throughput-optimizer.md +291 -299
- package/.agent/agents/type-safety-reviewer.md +182 -175
- package/.agent/agents/ui-ux-auditor.md +300 -292
- package/.agent/agents/vitals-reviewer.md +223 -223
- package/.agent/mcp_config.json +37 -40
- package/.agent/patterns/generator.md +11 -9
- package/.agent/patterns/inversion.md +14 -12
- package/.agent/patterns/pipeline.md +11 -9
- package/.agent/patterns/reviewer.md +15 -13
- package/.agent/patterns/tool-wrapper.md +11 -9
- package/.agent/routing_index.json +654 -0
- package/.agent/rules/GEMINI.md +358 -352
- package/.agent/scripts/compile_router.py +112 -0
- package/.agent/scripts/migrate_skills_frontmatter.py +64 -0
- package/.agent/scripts/strengthen_skills.js +1 -1
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +56 -0
- package/.agent/skills/agent-organizer/SKILL.md +156 -150
- package/.agent/skills/agentic-patterns/SKILL.md +313 -315
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +190 -184
- package/.agent/skills/api-patterns/SKILL.md +253 -247
- package/.agent/skills/api-security-auditor/SKILL.md +195 -193
- package/.agent/skills/app-builder/SKILL.md +573 -572
- package/.agent/skills/app-builder/templates/SKILL.md +108 -115
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -122
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -122
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -169
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -134
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -119
- package/.agent/skills/appflow-wireframe/SKILL.md +146 -145
- package/.agent/skills/architecture/SKILL.md +226 -219
- package/.agent/skills/authentication-best-practices/SKILL.md +197 -189
- package/.agent/skills/backend-security-expert/SKILL.md +16 -2
- package/.agent/skills/bash-linux/SKILL.md +179 -179
- package/.agent/skills/behavioral-modes/SKILL.md +239 -223
- package/.agent/skills/brainstorming/SKILL.md +498 -486
- package/.agent/skills/browser-native-ai/SKILL.md +57 -4
- package/.agent/skills/building-native-ui/SKILL.md +202 -202
- package/.agent/skills/cicd-pro/SKILL.md +442 -0
- package/.agent/skills/clean-code/SKILL.md +400 -381
- package/.agent/skills/cloud-architect/SKILL.md +439 -0
- package/.agent/skills/code-review-checklist/SKILL.md +203 -194
- package/.agent/skills/config-validator/SKILL.md +165 -165
- package/.agent/skills/containerization-pro/SKILL.md +452 -0
- package/.agent/skills/csharp-developer/SKILL.md +518 -518
- package/.agent/skills/data-validation-schemas/SKILL.md +333 -328
- package/.agent/skills/database-design/SKILL.md +247 -240
- package/.agent/skills/deployment-procedures/SKILL.md +172 -169
- package/.agent/skills/devops-engineer/SKILL.md +345 -345
- package/.agent/skills/devops-incident-responder/SKILL.md +143 -137
- package/.agent/skills/doc.md +209 -177
- package/.agent/skills/documentation-templates/SKILL.md +291 -279
- package/.agent/skills/edge-computing/SKILL.md +183 -181
- package/.agent/skills/error-resilience/SKILL.md +411 -428
- package/.agent/skills/extract-design-system/SKILL.md +160 -158
- package/.agent/skills/framer-motion-expert/SKILL.md +253 -244
- package/.agent/skills/frontend-design/SKILL.md +208 -201
- package/.agent/skills/frontend-security-expert/SKILL.md +16 -3
- package/.agent/skills/game-design-expert/SKILL.md +132 -129
- package/.agent/skills/game-engineering-expert/SKILL.md +148 -146
- package/.agent/skills/generative-ui-expert/SKILL.md +57 -1
- package/.agent/skills/geo-fundamentals/SKILL.md +148 -147
- package/.agent/skills/git-pro/SKILL.md +435 -0
- package/.agent/skills/github-operations/SKILL.md +335 -329
- package/.agent/skills/gsap-core/SKILL.md +319 -308
- package/.agent/skills/gsap-frameworks/SKILL.md +213 -207
- package/.agent/skills/gsap-performance/SKILL.md +139 -133
- package/.agent/skills/gsap-plugins/SKILL.md +486 -480
- package/.agent/skills/gsap-react/SKILL.md +202 -189
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +357 -350
- package/.agent/skills/gsap-timeline/SKILL.md +165 -161
- package/.agent/skills/gsap-utils/SKILL.md +344 -338
- package/.agent/skills/harness-protocol/SKILL.md +48 -0
- package/.agent/skills/i18n-localization/SKILL.md +174 -163
- package/.agent/skills/intelligent-routing/SKILL.md +202 -246
- package/.agent/skills/knowledge-graph/SKILL.md +60 -52
- package/.agent/skills/lint-and-validate/SKILL.md +261 -261
- package/.agent/skills/llm-engineering/SKILL.md +400 -394
- package/.agent/skills/local-first/SKILL.md +178 -178
- package/.agent/skills/mcp-builder/SKILL.md +143 -142
- package/.agent/skills/mobile-design/SKILL.md +272 -263
- package/.agent/skills/monorepo-management/SKILL.md +335 -334
- package/.agent/skills/motion-engineering/SKILL.md +266 -234
- package/.agent/skills/nextjs-react-expert/SKILL.md +236 -234
- package/.agent/skills/nodejs-best-practices/SKILL.md +547 -548
- package/.agent/skills/observability/SKILL.md +343 -343
- package/.agent/skills/parallel-agents/SKILL.md +143 -146
- package/.agent/skills/performance-profiling/SKILL.md +259 -267
- package/.agent/skills/plan-writing/SKILL.md +150 -142
- package/.agent/skills/platform-engineer/SKILL.md +148 -147
- package/.agent/skills/playwright-best-practices/SKILL.md +188 -187
- package/.agent/skills/powershell-windows/SKILL.md +162 -162
- package/.agent/skills/project-idioms/SKILL.md +137 -137
- package/.agent/skills/python-patterns/SKILL.md +260 -259
- package/.agent/skills/python-pro/SKILL.md +324 -323
- package/.agent/skills/react-specialist/SKILL.md +305 -277
- package/.agent/skills/readme-builder/SKILL.md +310 -300
- package/.agent/skills/realtime-patterns/SKILL.md +323 -319
- package/.agent/skills/red-team-tactics/SKILL.md +231 -218
- package/.agent/skills/rust-pro/SKILL.md +671 -673
- package/.agent/skills/seo-fundamentals/SKILL.md +179 -179
- package/.agent/skills/server-management/SKILL.md +218 -214
- package/.agent/skills/shadcn-ui-expert/SKILL.md +231 -231
- package/.agent/skills/skill-creator/SKILL.md +87 -86
- package/.agent/skills/sql-pro/SKILL.md +629 -629
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +97 -97
- package/.agent/skills/swiftui-expert/SKILL.md +204 -201
- package/.agent/skills/system-design-pro/SKILL.md +345 -0
- package/.agent/skills/systematic-debugging/SKILL.md +153 -142
- package/.agent/skills/tailwind-patterns/SKILL.md +610 -566
- package/.agent/skills/tdd-workflow/SKILL.md +169 -161
- package/.agent/skills/test-result-analyzer/SKILL.md +313 -309
- package/.agent/skills/testing-patterns/SKILL.md +566 -579
- package/.agent/skills/trend-researcher/SKILL.md +243 -237
- package/.agent/skills/typescript-advanced/SKILL.md +336 -335
- package/.agent/skills/ui-ux-pro-max/SKILL.md +590 -562
- package/.agent/skills/ui-ux-researcher/SKILL.md +244 -244
- package/.agent/skills/vue-expert/SKILL.md +294 -275
- package/.agent/skills/vulnerability-scanner/SKILL.md +416 -404
- package/.agent/skills/web-accessibility-auditor/SKILL.md +219 -218
- package/.agent/skills/web-design-guidelines/SKILL.md +192 -186
- package/.agent/skills/webapp-testing/SKILL.md +167 -169
- package/.agent/skills/webgpu-performance/SKILL.md +56 -2
- package/.agent/skills/whimsy-injector/SKILL.md +346 -325
- package/.agent/skills/workflow-optimizer/SKILL.md +231 -229
- package/.agent/workflows/acf.md +141 -0
- package/.agent/workflows/api-tester.md +176 -151
- package/.agent/workflows/audit.md +150 -127
- package/.agent/workflows/brainstorm.md +134 -110
- package/.agent/workflows/changelog.md +140 -112
- package/.agent/workflows/create.md +168 -124
- package/.agent/workflows/debug.md +190 -165
- package/.agent/workflows/deploy.md +201 -180
- package/.agent/workflows/enhance.md +154 -128
- package/.agent/workflows/fix.md +136 -114
- package/.agent/workflows/generate.md +198 -183
- package/.agent/workflows/marathon.md +37 -11
- package/.agent/workflows/migrate.md +184 -160
- package/.agent/workflows/orchestrate.md +192 -168
- package/.agent/workflows/performance-benchmarker.md +135 -114
- package/.agent/workflows/plan.md +196 -173
- package/.agent/workflows/preview.md +103 -80
- package/.agent/workflows/refactor.md +192 -161
- package/.agent/workflows/review-ai.md +125 -101
- package/.agent/workflows/review.md +141 -116
- package/.agent/workflows/session.md +122 -94
- package/.agent/workflows/status.md +101 -79
- package/.agent/workflows/strengthen-skills.md +164 -138
- package/.agent/workflows/super-prompt.md +24 -0
- package/.agent/workflows/swarm.md +193 -179
- package/.agent/workflows/test.md +211 -189
- package/.agent/workflows/tribunal-backend.md +136 -105
- package/.agent/workflows/tribunal-database.md +122 -95
- package/.agent/workflows/tribunal-frontend.md +221 -96
- package/.agent/workflows/tribunal-full.md +129 -100
- package/.agent/workflows/tribunal-mobile.md +122 -95
- package/.agent/workflows/tribunal-performance.md +136 -110
- package/.agent/workflows/tribunal-speed.md +209 -183
- package/.agent/workflows/ui-ux-pro-max.md +145 -122
- package/README.md +107 -55
- package/bin/mcp-server.js +159 -0
- package/bin/tribunal-kit.js +105 -29
- package/bin/wrapper.js +16 -7
- package/mcp_config.json +9 -0
- package/package.json +94 -86
- package/scripts/changelog.js +4 -3
- package/scripts/validate-payload.js +6 -1
- package/scripts/postinstall.js +0 -127
|
@@ -1,191 +1,190 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: playwright-best-practices
|
|
3
|
-
description: Playwright End-to-End (E2E) testing mastery. Resilient selectors, auto-waiting mechanisms, parallel test execution, mocking network requests, fixture management, and cross-browser CI configurations. Use when configuring, deploying, or writing E2E web tests.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
-
version: 2.0.0
|
|
6
|
-
last-updated: 2026-04-02
|
|
7
|
-
applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// ❌ FLAKY:
|
|
32
|
-
await page.
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
await page.
|
|
36
|
-
|
|
37
|
-
// ✅ ROBUST:
|
|
38
|
-
await
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// ❌ BAD: Cascading state
|
|
57
|
-
test.describe('Dashboard', () => {
|
|
58
|
-
test('Login', async ({ page }) => {
|
|
59
|
-
await login(page); // Next test assumes this succeeded
|
|
60
|
-
});
|
|
61
|
-
test('Action', async ({ page }) => {
|
|
62
|
-
await page.getByRole('button', { name: 'Save' }).click();
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
// ✅ GOOD: Isolated tests via beforeEach or Custom Fixtures
|
|
67
|
-
test.beforeEach(async ({ page }) => {
|
|
68
|
-
// Login directly via API to bypass slow UI login, seeding cookies
|
|
69
|
-
await performFastApiLogin(page);
|
|
70
|
-
await page.goto('/dashboard');
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
test('Should save settings', async ({ page }) => {
|
|
74
|
-
await page.getByRole('button', { name: 'Save' }).click();
|
|
75
|
-
await expect(page.getByRole('alert')).toHaveText('Saved successfully');
|
|
76
|
-
});
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## 3. Network Mocking
|
|
82
|
-
|
|
83
|
-
E2E tests that rely on external 3rd party APIs (Stripe, SendGrid) will fail randomly due to network latency outside your control.
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
test('Should block invalid credit cards', async ({ page }) => {
|
|
87
|
-
// Intercept the outgoing request to the payment processor
|
|
88
|
-
await page.route('**/api/v1/charge*', async route => {
|
|
89
|
-
// Return a mocked failure response immediately
|
|
90
|
-
const json = { status: 'declined', message: 'Insufficient funds' };
|
|
91
|
-
await route.fulfill({ status: 400, json });
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
await page.getByRole('button', { name: 'Purchase' }).click();
|
|
95
|
-
await expect(page.getByText('Insufficient funds')).toBeVisible();
|
|
96
|
-
});
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## 4. Configuration for CI/CD
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
// playwright.config.ts
|
|
105
|
-
import { defineConfig, devices } from '@playwright/test';
|
|
106
|
-
|
|
107
|
-
export default defineConfig({
|
|
108
|
-
testDir: './tests/e2e',
|
|
109
|
-
fullyParallel: true, // Run tests concurrently
|
|
110
|
-
forbidOnly: !!process.env.CI, // Fail build if `.only` was left in code
|
|
111
|
-
retries: process.env.CI ? 2 : 0, // Retry flakes on CI only
|
|
112
|
-
workers: process.env.CI ? 1 : undefined, // Reduce CI overload
|
|
113
|
-
reporter: 'html',
|
|
114
|
-
|
|
115
|
-
use: {
|
|
116
|
-
trace: 'on-first-retry', // Record trace viewer ONLY on failure to save space
|
|
117
|
-
video: 'retain-on-failure',
|
|
118
|
-
baseURL: 'http://localhost:3000',
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
projects: [
|
|
122
|
-
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
|
|
123
|
-
{ name: 'webkit', use: { ...devices['Desktop Safari'] } },
|
|
124
|
-
// Mobile Viewport Example
|
|
125
|
-
{ name: 'Mobile Safari', use: { ...devices['iPhone 13'] } },
|
|
126
|
-
],
|
|
127
|
-
|
|
128
|
-
// Spin up local server before running tests
|
|
129
|
-
webServer: {
|
|
130
|
-
command: 'npm run build && npm run start',
|
|
131
|
-
url: 'http://localhost:3000',
|
|
132
|
-
reuseExistingServer: !process.env.CI,
|
|
133
|
-
},
|
|
134
|
-
});
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
145
|
-
|
|
146
|
-
1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
|
|
147
|
-
2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
|
|
148
|
-
3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
|
|
149
|
-
4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
150
|
-
5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
**Slash command: `/review` or `/tribunal-full`**
|
|
157
|
-
**Active reviewers: `logic-reviewer` · `security-auditor`**
|
|
158
|
-
|
|
159
|
-
### ❌ Forbidden AI Tropes
|
|
160
|
-
|
|
161
|
-
1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
|
|
162
|
-
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
163
|
-
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
Review these questions before confirming output:
|
|
168
|
-
```
|
|
169
|
-
✅ Did I rely ONLY on real, verified tools and methods?
|
|
170
|
-
✅ Is this solution appropriately scoped to the user's constraints?
|
|
171
|
-
✅ Did I handle potential failure modes and edge cases?
|
|
172
|
-
✅ Have I avoided generic boilerplate that doesn't add value?
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
176
|
-
|
|
177
|
-
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
178
|
-
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
179
|
-
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
## Pre-Flight Checklist
|
|
183
|
-
- [ ] Have I reviewed the user's specific constraints and requests?
|
|
184
|
-
- [ ] Have I checked the environment for relevant existing implementations?
|
|
185
|
-
|
|
186
|
-
## VBC Protocol (Verification-Before-Completion)
|
|
187
|
-
You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
|
|
1
|
+
---
|
|
2
|
+
name: playwright-best-practices
|
|
3
|
+
description: Playwright End-to-End (E2E) testing mastery. Resilient selectors, auto-waiting mechanisms, parallel test execution, mocking network requests, fixture management, and cross-browser CI configurations. Use when configuring, deploying, or writing E2E web tests.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
+
version: 2.0.0
|
|
6
|
+
last-updated: 2026-04-02
|
|
7
|
+
applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
|
|
8
|
+
routing:
|
|
9
|
+
domain: general
|
|
10
|
+
tier: basic
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Hallucination Traps (Read First)
|
|
14
|
+
|
|
15
|
+
- ❌ Using `page.waitForTimeout(3000)` for synchronization -> ✅ Use `page.waitForSelector()`, `expect(locator).toBeVisible()`, or auto-waiting locators
|
|
16
|
+
- ❌ Using CSS selectors or XPath for test locators -> ✅ Use `getByRole()`, `getByLabel()`, `getByTestId()` for resilient selectors
|
|
17
|
+
- ❌ Running tests without `--workers=1` in CI debug mode -> ✅ Parallel tests with shared state cause flaky failures; isolate tests properly
|
|
18
|
+
- ❌ Not using `test.describe.configure({ mode: 'serial' })` when tests have ordering dependencies -> ✅ Explicitly mark serial when needed
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Playwright E2E — Bulletproof Testing Mastery
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 1. Resilience & Auto-Waiting
|
|
27
|
+
|
|
28
|
+
Playwright automatically waits for elements to be actionable (visible, stable, not obscured).
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
// ❌ FLAKY: Hardcoded sleeps. Fails on slow CI, wastes time on fast local rings.
|
|
32
|
+
await page.waitForTimeout(3000);
|
|
33
|
+
|
|
34
|
+
// ❌ FLAKY: CSS selectors tied to layout/styling changes
|
|
35
|
+
await page.locator(".btn-primary > span").click();
|
|
36
|
+
|
|
37
|
+
// ✅ ROBUST: Playwright auto-waits for actionability based on user-centric selectors
|
|
38
|
+
await page.getByRole("button", { name: "Submit Checkout" }).click();
|
|
39
|
+
|
|
40
|
+
// ✅ ROBUST: Testing for expected states
|
|
41
|
+
await expect(page.getByText("Order confirmed")).toBeVisible();
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### The Selector Hierarchy (Best to Worst)
|
|
45
|
+
|
|
46
|
+
1. `page.getByRole()` — Checks accessibility simultaneously.
|
|
47
|
+
2. `page.getByText()` — Finds elements by raw text values.
|
|
48
|
+
3. `page.getByTestId()` — Resilient to text/translation updates (`data-testid`).
|
|
49
|
+
4. `page.locator('css')` — Brittle, bound to DOM structures. Use only as last resort.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 2. Test Isolation & Fixtures
|
|
54
|
+
|
|
55
|
+
Do not cascade tests (where Test B requires Test A to pass first). Playwright gives every test a blank browser context isolated from the rest.
|
|
188
56
|
|
|
57
|
+
```typescript
|
|
58
|
+
import { test, expect } from "@playwright/test";
|
|
59
|
+
|
|
60
|
+
// ❌ BAD: Cascading state
|
|
61
|
+
test.describe("Dashboard", () => {
|
|
62
|
+
test("Login", async ({ page }) => {
|
|
63
|
+
await login(page); // Next test assumes this succeeded
|
|
64
|
+
});
|
|
65
|
+
test("Action", async ({ page }) => {
|
|
66
|
+
await page.getByRole("button", { name: "Save" }).click();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// ✅ GOOD: Isolated tests via beforeEach or Custom Fixtures
|
|
71
|
+
test.beforeEach(async ({ page }) => {
|
|
72
|
+
// Login directly via API to bypass slow UI login, seeding cookies
|
|
73
|
+
await performFastApiLogin(page);
|
|
74
|
+
await page.goto("/dashboard");
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
test("Should save settings", async ({ page }) => {
|
|
78
|
+
await page.getByRole("button", { name: "Save" }).click();
|
|
79
|
+
await expect(page.getByRole("alert")).toHaveText("Saved successfully");
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 3. Network Mocking
|
|
86
|
+
|
|
87
|
+
E2E tests that rely on external 3rd party APIs (Stripe, SendGrid) will fail randomly due to network latency outside your control.
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
test("Should block invalid credit cards", async ({ page }) => {
|
|
91
|
+
// Intercept the outgoing request to the payment processor
|
|
92
|
+
await page.route("**/api/v1/charge*", async (route) => {
|
|
93
|
+
// Return a mocked failure response immediately
|
|
94
|
+
const json = { status: "declined", message: "Insufficient funds" };
|
|
95
|
+
await route.fulfill({ status: 400, json });
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
await page.getByRole("button", { name: "Purchase" }).click();
|
|
99
|
+
await expect(page.getByText("Insufficient funds")).toBeVisible();
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 4. Configuration for CI/CD
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
// playwright.config.ts
|
|
109
|
+
import { defineConfig, devices } from "@playwright/test";
|
|
110
|
+
|
|
111
|
+
export default defineConfig({
|
|
112
|
+
testDir: "./tests/e2e",
|
|
113
|
+
fullyParallel: true, // Run tests concurrently
|
|
114
|
+
forbidOnly: !!process.env.CI, // Fail build if `.only` was left in code
|
|
115
|
+
retries: process.env.CI ? 2 : 0, // Retry flakes on CI only
|
|
116
|
+
workers: process.env.CI ? 1 : undefined, // Reduce CI overload
|
|
117
|
+
reporter: "html",
|
|
118
|
+
|
|
119
|
+
use: {
|
|
120
|
+
trace: "on-first-retry", // Record trace viewer ONLY on failure to save space
|
|
121
|
+
video: "retain-on-failure",
|
|
122
|
+
baseURL: "http://localhost:3000",
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
projects: [
|
|
126
|
+
{ name: "chromium", use: { ...devices["Desktop Chrome"] } },
|
|
127
|
+
{ name: "webkit", use: { ...devices["Desktop Safari"] } },
|
|
128
|
+
// Mobile Viewport Example
|
|
129
|
+
{ name: "Mobile Safari", use: { ...devices["iPhone 13"] } },
|
|
130
|
+
],
|
|
131
|
+
|
|
132
|
+
// Spin up local server before running tests
|
|
133
|
+
webServer: {
|
|
134
|
+
command: "npm run build && npm run start",
|
|
135
|
+
url: "http://localhost:3000",
|
|
136
|
+
reuseExistingServer: !process.env.CI,
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
146
|
+
|
|
147
|
+
1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
|
|
148
|
+
2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
|
|
149
|
+
3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
|
|
150
|
+
4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
151
|
+
5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
**Slash command: `/review` or `/tribunal-full`**
|
|
156
|
+
**Active reviewers: `logic-reviewer` · `security-auditor`**
|
|
157
|
+
|
|
158
|
+
### ❌ Forbidden AI Tropes
|
|
159
|
+
|
|
160
|
+
1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
|
|
161
|
+
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
162
|
+
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
163
|
+
|
|
164
|
+
Review these questions before confirming output:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
✅ Did I rely ONLY on real, verified tools and methods?
|
|
168
|
+
✅ Is this solution appropriately scoped to the user's constraints?
|
|
169
|
+
✅ Did I handle potential failure modes and edge cases?
|
|
170
|
+
✅ Have I avoided generic boilerplate that doesn't add value?
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
174
|
+
|
|
175
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
176
|
+
|
|
177
|
+
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
178
|
+
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
179
|
+
|
|
180
|
+
## Pre-Flight Checklist
|
|
181
|
+
|
|
182
|
+
- [ ] Have I reviewed the user's specific constraints and requests?
|
|
183
|
+
- [ ] Have I checked the environment for relevant existing implementations?
|
|
184
|
+
|
|
185
|
+
## VBC Protocol (Verification-Before-Completion)
|
|
186
|
+
|
|
187
|
+
You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
|
|
189
188
|
|
|
190
189
|
---
|
|
191
190
|
|
|
@@ -215,6 +214,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
215
214
|
### ✅ Pre-Flight Self-Audit
|
|
216
215
|
|
|
217
216
|
Review these questions before confirming output:
|
|
217
|
+
|
|
218
218
|
```
|
|
219
219
|
✅ Did I rely ONLY on real, verified tools and methods?
|
|
220
220
|
✅ Is this solution appropriately scoped to the user's constraints?
|
|
@@ -225,5 +225,6 @@ Review these questions before confirming output:
|
|
|
225
225
|
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
226
226
|
|
|
227
227
|
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
228
|
+
|
|
228
229
|
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
229
230
|
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|