Back to skills
SKILL.md
Fabrico E2e Testing
ASecurityE2E testing patterns, verification procedures, and CI readiness checklists using Playwright. Use for writing, debugging, or reviewing end-to-end tests, fixing flaky tests, creating Page Objects, mocking external APIs.
- 2 stars
- 0 votes
- 0 copies
- 2 views
- Added September 6, 2026
Works with
Security analysis
100/100npx -y skills add aiFabricoCom/fabrico-collections --skill fabrico-e2e-testing --agent claude-codeAre you the author of Fabrico E2e Testing?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/aifabricocom-fabrico-e2e-testing)---
name: fabrico-e2e-testing
description: 'E2E testing patterns, verification procedures, and CI readiness checklists using Playwright. Use for writing, debugging, or reviewing end-to-end tests, fixing flaky tests, creating Page Objects, mocking external APIs.'
---
# E2E Testing Patterns & Practices
## Page Object Pattern
```typescript
export class FeaturePage {
constructor(readonly page: Page) {}
get submitBtn() {
return this.page.getByRole('button', { name: 'Submit' });
}
async navigate() { await this.page.goto('/feature'); }
}
```
## Test Structure
```typescript
test('should [behavior] when [condition]', async ({ page }) => {
const id = `test-${Date.now()}-${test.info().parallelIndex}`;
// Arrange → Act → Assert
});
```
## Mocking (external APIs only)
```typescript
await page.route('**/api/external/**', route => route.fulfill({ status: 200, body: '{}' }));
```
## Verification Loop
```
RUN → FAIL? → DEBUG (browser_snapshot via the playwright MCP server) → FIX → REPEAT
```
When debugging, capture the page state with the **playwright** MCP server (tools `mcp__playwright__*`, e.g. `mcp__playwright__browser_snapshot`) to inspect the accessibility tree and locate failing elements.
| Rule | Limit |
|------|-------|
| Max per test | 5 iterations → `test.fixme()` |
| Max per suite | 15 iterations → stop |
| Flaky detection | 3 pass/fail mix → investigate |
| Stability | 3+ consecutive passes required |
| App bug | Mark `test.fixme('BUG: desc')` |
### Error Recovery
| Error | Action |
|-------|--------|
| Timeout | Increase once → check selector → check if element renders |
| Element not found | Alternative locator → check DOM → verify page loaded |
| Network | Retry → consider mock → verify backend |
| Flaky | Explicit waits → check race conditions → run 5x |
| App bug | Mark `test.fixme('BUG: desc')` - test is skipped; CI usually still passes unless skipped tests fail the build |
## CI Readiness Checklist
- [ ] Passes headless: `npx playwright test --headed=false`
- [ ] Uses `process.env.BASE_URL`
- [ ] No hardcoded credentials
- [ ] Explicit viewport
## Quick Reference
**Always**: accessible locators, unique test data, 3+ passes, mock external APIs
**Never**: `waitForTimeout()`, CSS selectors, test interdependencies, hardcoded creds
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.