@athenaflow/plugin-e2e-test-builder 2.0.9 → 2.0.10
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/dist/{2.0.8 → 2.0.10}/.agents/plugins/marketplace.json +1 -1
- package/dist/{2.0.9 → 2.0.10}/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/{2.0.9 → 2.0.10}/claude/plugin/package.json +8 -2
- package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/add-e2e-tests/SKILL.md +18 -65
- package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/add-e2e-tests/agents/openai.yaml +1 -1
- package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/add-e2e-tests/references/error-recovery.md +3 -3
- package/dist/{2.0.8/codex → 2.0.10/claude}/plugin/skills/add-e2e-tests/references/scaffolding.md +1 -1
- package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/fix-flaky-tests/SKILL.md +1 -1
- package/dist/{2.0.8/codex → 2.0.10/claude}/plugin/skills/fix-flaky-tests/references/fix-patterns.md +3 -2
- package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/generate-test-cases/SKILL.md +8 -2
- package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/plan-test-coverage/SKILL.md +7 -6
- package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-cases/SKILL.md +3 -4
- package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/SKILL.md +4 -3
- package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/api-setup-teardown.md +1 -1
- package/dist/{2.0.9 → 2.0.10}/codex/plugin/.codex-plugin/plugin.json +1 -1
- package/dist/{2.0.9 → 2.0.10}/codex/plugin/package.json +8 -2
- package/dist/{2.0.9 → 2.0.10}/codex/plugin/skills/add-e2e-tests/SKILL.md +18 -65
- package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/add-e2e-tests/agents/openai.yaml +1 -1
- package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/add-e2e-tests/references/error-recovery.md +3 -3
- package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/add-e2e-tests/references/scaffolding.md +1 -1
- package/dist/{2.0.8/claude → 2.0.10/codex}/plugin/skills/fix-flaky-tests/SKILL.md +1 -1
- package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/fix-flaky-tests/references/fix-patterns.md +3 -2
- package/dist/{2.0.9 → 2.0.10}/codex/plugin/skills/generate-test-cases/SKILL.md +8 -2
- package/dist/{2.0.9 → 2.0.10}/codex/plugin/skills/plan-test-coverage/SKILL.md +7 -6
- package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/review-test-cases/SKILL.md +3 -4
- package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/write-test-code/SKILL.md +4 -3
- package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/write-test-code/references/api-setup-teardown.md +1 -1
- package/dist/{2.0.9 → 2.0.10}/release.json +1 -1
- package/package.json +7 -1
- package/skills/add-e2e-tests/SKILL.md +18 -65
- package/skills/add-e2e-tests/agents/openai.yaml +1 -1
- package/skills/add-e2e-tests/references/error-recovery.md +3 -3
- package/skills/add-e2e-tests/references/scaffolding.md +1 -1
- package/skills/fix-flaky-tests/SKILL.md +1 -1
- package/skills/fix-flaky-tests/references/fix-patterns.md +3 -2
- package/skills/generate-test-cases/SKILL.md +8 -2
- package/skills/plan-test-coverage/SKILL.md +7 -6
- package/skills/review-test-cases/SKILL.md +3 -4
- package/skills/write-test-code/SKILL.md +4 -3
- package/skills/write-test-code/references/api-setup-teardown.md +1 -1
- package/dist/2.0.8/claude/plugin/.claude-plugin/plugin.json +0 -20
- package/dist/2.0.8/claude/plugin/package.json +0 -9
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/SKILL.md +0 -217
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/agents/claude.yaml +0 -1
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/references/scaffolding.md +0 -12
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/references/tracker-template.md +0 -53
- package/dist/2.0.8/claude/plugin/skills/fix-flaky-tests/references/fix-patterns.md +0 -91
- package/dist/2.0.8/claude/plugin/skills/generate-test-cases/SKILL.md +0 -184
- package/dist/2.0.8/claude/plugin/skills/plan-test-coverage/SKILL.md +0 -116
- package/dist/2.0.8/codex/plugin/.codex-plugin/plugin.json +0 -15
- package/dist/2.0.8/codex/plugin/package.json +0 -9
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/SKILL.md +0 -217
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/agents/claude.yaml +0 -1
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/references/error-recovery.md +0 -43
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/references/tracker-template.md +0 -53
- package/dist/2.0.8/codex/plugin/skills/fix-flaky-tests/SKILL.md +0 -160
- package/dist/2.0.8/codex/plugin/skills/generate-test-cases/SKILL.md +0 -184
- package/dist/2.0.8/codex/plugin/skills/plan-test-coverage/SKILL.md +0 -116
- package/dist/2.0.8/codex/plugin/skills/review-test-cases/SKILL.md +0 -147
- package/dist/2.0.8/codex/plugin/skills/write-test-code/SKILL.md +0 -227
- package/dist/2.0.8/codex/plugin/skills/write-test-code/references/api-setup-teardown.md +0 -83
- package/dist/2.0.8/release.json +0 -18
- package/dist/2.0.9/.agents/plugins/marketplace.json +0 -14
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/agents/openai.yaml +0 -10
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/references/authentication.md +0 -8
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/references/tracker-template.md +0 -53
- package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/SKILL.md +0 -142
- package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/agents/claude.yaml +0 -3
- package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/agents/openai.yaml +0 -4
- package/dist/2.0.9/claude/plugin/skills/fix-flaky-tests/agents/claude.yaml +0 -3
- package/dist/2.0.9/claude/plugin/skills/fix-flaky-tests/agents/openai.yaml +0 -10
- package/dist/2.0.9/claude/plugin/skills/generate-test-cases/agents/claude.yaml +0 -3
- package/dist/2.0.9/claude/plugin/skills/generate-test-cases/agents/openai.yaml +0 -10
- package/dist/2.0.9/claude/plugin/skills/generate-test-cases/references/scenario-categories.md +0 -36
- package/dist/2.0.9/claude/plugin/skills/plan-test-coverage/agents/claude.yaml +0 -3
- package/dist/2.0.9/claude/plugin/skills/plan-test-coverage/agents/openai.yaml +0 -10
- package/dist/2.0.9/claude/plugin/skills/review-test-cases/agents/claude.yaml +0 -3
- package/dist/2.0.9/claude/plugin/skills/review-test-cases/agents/openai.yaml +0 -10
- package/dist/2.0.9/claude/plugin/skills/review-test-code/SKILL.md +0 -189
- package/dist/2.0.9/claude/plugin/skills/review-test-code/agents/claude.yaml +0 -3
- package/dist/2.0.9/claude/plugin/skills/review-test-code/agents/openai.yaml +0 -10
- package/dist/2.0.9/claude/plugin/skills/write-test-code/agents/claude.yaml +0 -3
- package/dist/2.0.9/claude/plugin/skills/write-test-code/agents/openai.yaml +0 -10
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/anti-patterns.md +0 -88
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/auth-patterns.md +0 -63
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/mapping-tables.md +0 -56
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/network-interception.md +0 -56
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/agents/openai.yaml +0 -10
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/authentication.md +0 -8
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/error-recovery.md +0 -43
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/scaffolding.md +0 -12
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/tracker-template.md +0 -53
- package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/SKILL.md +0 -142
- package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/agents/claude.yaml +0 -3
- package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/agents/openai.yaml +0 -4
- package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/SKILL.md +0 -160
- package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/agents/claude.yaml +0 -3
- package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/agents/openai.yaml +0 -10
- package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/references/fix-patterns.md +0 -91
- package/dist/2.0.9/codex/plugin/skills/generate-test-cases/agents/claude.yaml +0 -3
- package/dist/2.0.9/codex/plugin/skills/generate-test-cases/agents/openai.yaml +0 -10
- package/dist/2.0.9/codex/plugin/skills/generate-test-cases/references/scenario-categories.md +0 -36
- package/dist/2.0.9/codex/plugin/skills/plan-test-coverage/agents/claude.yaml +0 -3
- package/dist/2.0.9/codex/plugin/skills/plan-test-coverage/agents/openai.yaml +0 -10
- package/dist/2.0.9/codex/plugin/skills/review-test-cases/SKILL.md +0 -147
- package/dist/2.0.9/codex/plugin/skills/review-test-cases/agents/claude.yaml +0 -3
- package/dist/2.0.9/codex/plugin/skills/review-test-cases/agents/openai.yaml +0 -10
- package/dist/2.0.9/codex/plugin/skills/review-test-code/SKILL.md +0 -189
- package/dist/2.0.9/codex/plugin/skills/review-test-code/agents/claude.yaml +0 -3
- package/dist/2.0.9/codex/plugin/skills/review-test-code/agents/openai.yaml +0 -10
- package/dist/2.0.9/codex/plugin/skills/write-test-code/SKILL.md +0 -227
- package/dist/2.0.9/codex/plugin/skills/write-test-code/agents/claude.yaml +0 -3
- package/dist/2.0.9/codex/plugin/skills/write-test-code/agents/openai.yaml +0 -10
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/anti-patterns.md +0 -88
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/api-setup-teardown.md +0 -83
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/auth-patterns.md +0 -63
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/mapping-tables.md +0 -56
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/network-interception.md +0 -56
- package/skills/add-e2e-tests/references/tracker-template.md +0 -53
- /package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/add-e2e-tests/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/add-e2e-tests/references/authentication.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/analyze-test-codebase/SKILL.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/analyze-test-codebase/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/analyze-test-codebase/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/fix-flaky-tests/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/fix-flaky-tests/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/generate-test-cases/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/generate-test-cases/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/generate-test-cases/references/scenario-categories.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/plan-test-coverage/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/plan-test-coverage/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-cases/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-cases/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-code/SKILL.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-code/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-code/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/anti-patterns.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/auth-patterns.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/mapping-tables.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/network-interception.md +0 -0
- /package/dist/{2.0.9 → 2.0.10}/codex/plugin/skills/add-e2e-tests/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/add-e2e-tests/references/authentication.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/analyze-test-codebase/SKILL.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/analyze-test-codebase/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/analyze-test-codebase/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/fix-flaky-tests/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/fix-flaky-tests/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/generate-test-cases/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/generate-test-cases/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/generate-test-cases/references/scenario-categories.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/plan-test-coverage/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/plan-test-coverage/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-cases/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-cases/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-code/SKILL.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-code/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-code/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/agents/claude.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/agents/openai.yaml +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/anti-patterns.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/auth-patterns.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/mapping-tables.md +0 -0
- /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/network-interception.md +0 -0
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# Authentication Setup Patterns
|
|
2
|
-
|
|
3
|
-
Choose the right auth strategy based on the project's needs.
|
|
4
|
-
|
|
5
|
-
## Strategy 1: storageState (Recommended for most projects)
|
|
6
|
-
|
|
7
|
-
Log in once in global setup, save cookies/localStorage to a JSON file, and reuse across all tests:
|
|
8
|
-
|
|
9
|
-
```typescript
|
|
10
|
-
// global-setup.ts
|
|
11
|
-
import { chromium, FullConfig } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
async function globalSetup(config: FullConfig) {
|
|
14
|
-
const browser = await chromium.launch();
|
|
15
|
-
const page = await browser.newPage();
|
|
16
|
-
await page.goto('/login');
|
|
17
|
-
await page.getByLabel(/email/i).fill(process.env.TEST_USER_EMAIL!);
|
|
18
|
-
await page.getByLabel(/password/i).fill(process.env.TEST_USER_PASSWORD!);
|
|
19
|
-
await page.getByRole('button', { name: /sign in/i }).click();
|
|
20
|
-
await page.waitForURL('/dashboard');
|
|
21
|
-
await page.context().storageState({ path: 'tests/.auth/user.json' });
|
|
22
|
-
await browser.close();
|
|
23
|
-
}
|
|
24
|
-
export default globalSetup;
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Reference in config: `use: { storageState: 'tests/.auth/user.json' }`
|
|
28
|
-
|
|
29
|
-
## Strategy 2: Worker-scoped fixture (for parallel workers needing separate accounts)
|
|
30
|
-
|
|
31
|
-
```typescript
|
|
32
|
-
export const test = base.extend<{}, { workerStorageState: string }>({
|
|
33
|
-
storageState: ({ workerStorageState }, use) => use(workerStorageState),
|
|
34
|
-
workerStorageState: [async ({ browser }, use, testInfo) => {
|
|
35
|
-
const page = await browser.newPage({ storageState: undefined });
|
|
36
|
-
// Login with worker-specific account...
|
|
37
|
-
const path = `tests/.auth/worker-${testInfo.parallelIndex}.json`;
|
|
38
|
-
await page.context().storageState({ path });
|
|
39
|
-
await use(path);
|
|
40
|
-
await page.close();
|
|
41
|
-
}, { scope: 'worker' }],
|
|
42
|
-
});
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Strategy 3: Multi-role testing (admin + user in same test)
|
|
46
|
-
|
|
47
|
-
```typescript
|
|
48
|
-
test('TC-ADMIN-001: Admin sees user profile', async ({ browser }) => {
|
|
49
|
-
const adminContext = await browser.newContext({ storageState: 'tests/.auth/admin.json' });
|
|
50
|
-
const userContext = await browser.newContext({ storageState: 'tests/.auth/user.json' });
|
|
51
|
-
const adminPage = await adminContext.newPage();
|
|
52
|
-
const userPage = await userContext.newPage();
|
|
53
|
-
// Interact with both pages...
|
|
54
|
-
await adminContext.close();
|
|
55
|
-
await userContext.close();
|
|
56
|
-
});
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Strategy 4: Per-test login
|
|
60
|
-
|
|
61
|
-
Only when testing login itself or permission-specific scenarios.
|
|
62
|
-
|
|
63
|
-
Never hardcode tokens. Use environment variables or `.env.test`.
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Mapping Tables
|
|
2
|
-
|
|
3
|
-
Standard translations for converting journey specs and exploration results to Playwright API calls.
|
|
4
|
-
|
|
5
|
-
## Scope-to-Locator
|
|
6
|
-
|
|
7
|
-
| Journey Scope | Playwright Scoping |
|
|
8
|
-
|---------------|-------------------|
|
|
9
|
-
| `page` | No scoping needed |
|
|
10
|
-
| `header` | `page.locator('header')` |
|
|
11
|
-
| `main` | `page.locator('main')` |
|
|
12
|
-
| `nav` | `page.locator('nav')` |
|
|
13
|
-
| `dialog` | `page.locator('[role="dialog"]')` |
|
|
14
|
-
|
|
15
|
-
## Action-to-Playwright
|
|
16
|
-
|
|
17
|
-
| Journey Action | Playwright Code |
|
|
18
|
-
|----------------|-----------------|
|
|
19
|
-
| `goto` | `await page.goto(url)` |
|
|
20
|
-
| `click` | `await locator.click()` |
|
|
21
|
-
| `fill` | `await locator.fill(value)` |
|
|
22
|
-
| `select` | `await locator.selectOption(value)` |
|
|
23
|
-
| `assert` | `await expect(locator).toBeVisible()` |
|
|
24
|
-
|
|
25
|
-
## Assertion Mapping
|
|
26
|
-
|
|
27
|
-
| Observed Effect | Playwright Assertion |
|
|
28
|
-
|----------------|---------------------|
|
|
29
|
-
| `url changed to /cart` | `await expect(page).toHaveURL(/cart/)` |
|
|
30
|
-
| `text 'Added' visible` | `await expect(page.getByText(/added/i)).toBeVisible()` |
|
|
31
|
-
| `radio 256GB checked` | `await expect(locator).toBeChecked()` |
|
|
32
|
-
| `button now enabled` | `await expect(locator).toBeEnabled()` |
|
|
33
|
-
|
|
34
|
-
## Target Kind to Locator
|
|
35
|
-
|
|
36
|
-
| Target Kind | Value Pattern | Playwright Locator |
|
|
37
|
-
|-------------|--------------|-------------------|
|
|
38
|
-
| `role` | `button name~Add to Bag` | `getByRole('button', { name: /add to bag/i })` |
|
|
39
|
-
| `role` | `radio name~256GB` | `getByRole('radio', { name: /256gb/i })` |
|
|
40
|
-
| `label` | `Email address` | `getByLabel(/email address/i)` |
|
|
41
|
-
| `testid` | `checkout-button` | `getByTestId('checkout-button')` |
|
|
42
|
-
|
|
43
|
-
## Low Confidence Handling (<0.7)
|
|
44
|
-
|
|
45
|
-
When journey step confidence is low:
|
|
46
|
-
1. Add extra assertions to verify state
|
|
47
|
-
2. Include fallback locators as comments
|
|
48
|
-
3. Consider retry logic for flaky interactions
|
|
49
|
-
|
|
50
|
-
```typescript
|
|
51
|
-
// Primary locator
|
|
52
|
-
const storageRadio = page.getByRole('radio', { name: /256gb/i });
|
|
53
|
-
// Fallback: page.getByLabel(/256gb/i)
|
|
54
|
-
await storageRadio.click();
|
|
55
|
-
await expect(storageRadio).toBeChecked({ timeout: 5000 });
|
|
56
|
-
```
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Network Interception and Error Path Testing
|
|
2
|
-
|
|
3
|
-
## Network Interception
|
|
4
|
-
|
|
5
|
-
Use `page.route()` to intercept and mock network requests for deterministic error testing.
|
|
6
|
-
|
|
7
|
-
**Mock server errors:**
|
|
8
|
-
```typescript
|
|
9
|
-
await page.route('**/api/checkout', route =>
|
|
10
|
-
route.fulfill({ status: 500, body: JSON.stringify({ error: 'Payment declined' }) })
|
|
11
|
-
);
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
**Patch real responses (modify, don't replace):**
|
|
15
|
-
```typescript
|
|
16
|
-
await page.route('**/api/products', async route => {
|
|
17
|
-
const response = await route.fetch();
|
|
18
|
-
const json = await response.json();
|
|
19
|
-
json.results = json.results.slice(0, 1); // reduce to 1 item
|
|
20
|
-
await route.fulfill({ response, json });
|
|
21
|
-
});
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
**Assert backend was called:**
|
|
25
|
-
```typescript
|
|
26
|
-
const [response] = await Promise.all([
|
|
27
|
-
page.waitForResponse(resp =>
|
|
28
|
-
resp.url().includes('/api/order') && resp.status() === 201
|
|
29
|
-
),
|
|
30
|
-
page.getByRole('button', { name: /place order/i }).click(),
|
|
31
|
-
]);
|
|
32
|
-
expect(response.status()).toBe(201);
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
**Block heavy resources to speed up tests:**
|
|
36
|
-
```typescript
|
|
37
|
-
await page.route('**/*.{png,jpg,jpeg,gif,svg}', route => route.abort());
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Error Path Testing
|
|
41
|
-
|
|
42
|
-
Every feature needs error path tests. Use network interception (see above) to simulate failures. At minimum, every feature test suite should cover:
|
|
43
|
-
|
|
44
|
-
- **Server error** — `route.fulfill({ status: 500, ... })` — verify error UI appears
|
|
45
|
-
- **Network timeout** — `route.abort('timedout')` — verify retry option or error message
|
|
46
|
-
- **Empty state** — `route.fulfill({ status: 200, json: { items: [] } })` — verify empty state UI
|
|
47
|
-
|
|
48
|
-
```typescript
|
|
49
|
-
test('TC-DASHBOARD-005: Shows empty state when no data', async ({ page }) => {
|
|
50
|
-
await page.route('**/api/items', route =>
|
|
51
|
-
route.fulfill({ status: 200, json: { items: [] } })
|
|
52
|
-
);
|
|
53
|
-
await page.goto('/dashboard');
|
|
54
|
-
await expect(page.getByText(/no items/i)).toBeVisible();
|
|
55
|
-
});
|
|
56
|
-
```
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Tracker Template: e2e-tracker.md
|
|
2
|
-
|
|
3
|
-
Use this as a starting template when creating the tracker file. Adapt sections as needed.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
```markdown
|
|
8
|
-
# E2E Test Tracker
|
|
9
|
-
|
|
10
|
-
## Goal
|
|
11
|
-
|
|
12
|
-
- **URL:** https://myapp.com/checkout
|
|
13
|
-
- **Feature:** Checkout flow with cart, shipping, and payment
|
|
14
|
-
- **Slug:** checkout
|
|
15
|
-
|
|
16
|
-
## Progress
|
|
17
|
-
|
|
18
|
-
### Session 1 — 2026-04-01
|
|
19
|
-
|
|
20
|
-
- Analyzed codebase: Playwright 1.42, TypeScript, existing auth fixture in `tests/fixtures/auth.ts`
|
|
21
|
-
- Browsed checkout flow: 4-step wizard (cart review, shipping, payment, confirmation)
|
|
22
|
-
- Discovered 3 form validation states per step
|
|
23
|
-
- Generated test spec: `test-cases/checkout.md` with TC-CHECKOUT-001 through TC-CHECKOUT-012
|
|
24
|
-
- Review gate passed with warnings (TC-CHECKOUT-008 needs clarification on coupon edge case)
|
|
25
|
-
|
|
26
|
-
### Session 2 — 2026-04-02
|
|
27
|
-
|
|
28
|
-
- Wrote `tests/checkout.spec.ts` covering TC-CHECKOUT-001 through TC-CHECKOUT-012
|
|
29
|
-
- Code review gate passed
|
|
30
|
-
- Ran tests: 10/12 passing, 2 failing (TC-CHECKOUT-006: selector stale, TC-CHECKOUT-011: timeout)
|
|
31
|
-
- Fixed TC-CHECKOUT-006: updated selector from `.price` to `[data-testid="cart-total"]`
|
|
32
|
-
- Fixed TC-CHECKOUT-011: added `waitForResponse` before assertion
|
|
33
|
-
|
|
34
|
-
## Remaining
|
|
35
|
-
|
|
36
|
-
- Re-run full suite to confirm fixes
|
|
37
|
-
- Verify TC-ID coverage: all 12 specs should map to test code
|
|
38
|
-
|
|
39
|
-
## Next Steps
|
|
40
|
-
|
|
41
|
-
- Run `npx playwright test tests/checkout.spec.ts --reporter=list` and record output
|
|
42
|
-
- If all green, mark complete
|
|
43
|
-
- If failures remain, diagnose with `fix-flaky-tests` skill
|
|
44
|
-
|
|
45
|
-
<!-- E2E_COMPLETE -->
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
**Terminal markers** (write as the last line of the tracker when appropriate):
|
|
51
|
-
|
|
52
|
-
- `<!-- E2E_COMPLETE -->` — all tests pass, all TC-IDs covered, work is done
|
|
53
|
-
- `<!-- E2E_BLOCKED: reason -->` — unrecoverable blocker prevents further progress (e.g., `<!-- E2E_BLOCKED: login requires 2FA token we cannot automate -->`)
|
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/add-e2e-tests/references/authentication.md
RENAMED
|
File without changes
|
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/analyze-test-codebase/agents/claude.yaml
RENAMED
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/analyze-test-codebase/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/anti-patterns.md
RENAMED
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/auth-patterns.md
RENAMED
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/mapping-tables.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/add-e2e-tests/references/authentication.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/anti-patterns.md
RENAMED
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/auth-patterns.md
RENAMED
|
File without changes
|
/package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/mapping-tables.md
RENAMED
|
File without changes
|
|
File without changes
|