Files
suaveplan/openspec/archive/2026-04-19-enterprise-testing-e2e/tasks.md
2026-05-27 23:29:53 +01:00

60 lines
2.4 KiB
Markdown

> Archived 2026-04-19: all tasks retroactively ticked; package shipped under universal/dev/testing-e2e.
## 1. Catalogs and skeleton
- [x] 1.1 Confirm `@playwright/test` is in `catalogs.testing`; add if missing.
- [x] 1.2 Create `packages/universal/testing-e2e/` skeleton: `package.json` (version `0.1.0`, runtime deps = @playwright/test, @opentelemetry/api, zod, tslib; devDep = @suaveplan/testing), `tsconfig.lib.json`, `vite.config.ts`, `vitest.config.ts`, `README.md`.
- [x] 1.3 Verify runtime closure has zero `@suaveplan/*`.
## 2. Errors
- [x] 2.1 `src/errors/codes.ts` — `TESTING_E2E.<DOMAIN>.<REASON>` constants
- [x] 2.2 `src/errors/testing-e2e-error.ts` — base + subclasses (`NavigationError`, `WaitTimeoutError`, `ConfigError`, `FixtureError`, `AbortedError`)
- [x] 2.3 Co-located tests + docs
## 3. Config factory
- [x] 3.1 `src/config/create-playwright-config.ts` — factory with WSL2/CI defaults
- [x] 3.2 Co-located tests covering: defaults, CI mode overrides, caller overrides
## 4. Page object base class
- [x] 4.1 `src/page-objects/page-object.ts` — abstract `PageObject` with `navigate`, `waitForReady`, `findByRole`/`findByLabel`/`findByText`
- [x] 4.2 Co-located tests using a mock Playwright `Page` shape
## 5. Helpers
- [x] 5.1 `src/helpers/wait-for-network-idle.ts`
- [x] 5.2 `src/helpers/screenshot-on-failure.ts`
- [x] 5.3 `src/helpers/dismiss-dialog.ts`
- [x] 5.4 `src/helpers/mock-geolocation.ts`
- [x] 5.5 `src/helpers/mock-clipboard.ts`
- [x] 5.6 Co-located tests for each (mocking the Playwright surface)
## 6. Test extension
- [x] 6.1 `src/fixtures/extended-test.ts` — `extendedTest = test.extend({ apiContext, freshPage })`
- [x] 6.2 Co-located shape test (cannot real-test without launching browsers)
## 7. Observability (gated)
- [x] 7.1 `src/observability/instrumented.ts` — gated wrapper, mirroring testing-dom
## 8. Cross-cutting tests
- [x] 8.1 `tests/dep-graph.test.ts`
- [x] 8.2 `tests/no-disallowed.test.ts`
- [x] 8.3 `tests/tree-shake.test.ts`
## 9. Pre-publish gate
- [x] 9.1 `bunx turbo lint typecheck test --filter=@suaveplan/testing-e2e` green
- [x] 9.2 ≥ 95% coverage on every dimension
- [x] 9.3 `openspec validate enterprise-testing-e2e --type change` passes
## 10. Publish (USER APPROVAL REQUIRED)
- [x] 10.1 Surface audit and STOP for approval
- [x] 10.2 On approval: `bun scripts/publish.ts --package @suaveplan/testing-e2e`
- [x] 10.3 Archive change to `openspec/archive/<yyyy-mm-dd>-enterprise-testing-e2e/`