43 lines
2.6 KiB
Markdown
43 lines
2.6 KiB
Markdown
## Why
|
|
|
|
`@suaveplan/testing-e2e` is the entry point for every Playwright E2E test in the genesis monorepo. Per the testing-package separation hard rule, it owns Playwright fixtures, page objects, helpers, and a `createPlaywrightConfig()` factory. It is the third and final Layer 0 testing-infrastructure package.
|
|
|
|
Layer 0 — testing-infra packages take no `@suaveplan/*` workspace deps. External catalog deps only.
|
|
|
|
## What Changes
|
|
|
|
- New package `@suaveplan/testing-e2e` at `packages/universal/testing-e2e/` (genesis-fresh, version `0.1.0`).
|
|
- **Substitutions per genesis rules:**
|
|
- Local `TestingE2eError extends Error` with `{ code, cause, context }` shape (no `@suaveplan/error`)
|
|
- `@opentelemetry/api` direct (no `@suaveplan/opentelemetry`)
|
|
- `zod` direct (no `@suaveplan/schema-registry`)
|
|
- English-only `code` machine-contract messages (no `@suaveplan/i18n`)
|
|
- **No `@suaveplan/*` runtime deps.** `@suaveplan/testing` is allowed as a `devDependency` only (mirroring the testing-dom precedent).
|
|
|
|
### Public surface (this package)
|
|
|
|
- **Re-exports of Playwright primitives**: `test`, `expect`, `Page`, `Browser`, `BrowserContext`, `Locator`, `request`
|
|
- **`createPlaywrightConfig(options)`** — factory that emits a `PlaywrightTestConfig` with WSL2-safe defaults (`fullyParallel: false` for stability, retries on CI, screenshot/video/trace on failure)
|
|
- **`PageObject`** base class — typed wrapper around a Playwright `Page` exposing common patterns (`navigate`, `waitForReady`, `findByRole`-style locators)
|
|
- **Test fixtures** — `extendedTest` extending Playwright's `test` with a stable shared fixture set: `userPage` (pre-authenticated), `apiContext` (Playwright `request` instance), `freshPage` (forced new context)
|
|
- **Helpers**: `waitForNetworkIdle`, `screenshotOnFailure`, `dismissDialog`, `mockGeolocation`, `mockClipboard`
|
|
- **Errors**: `TestingE2eError`, `NavigationError`, `WaitTimeoutError`, `ConfigError`, `FixtureError`, `AbortedError` with `TESTING_E2E.<DOMAIN>.<REASON>` codes
|
|
|
|
## Capabilities
|
|
|
|
### New Capabilities
|
|
|
|
- `testing-e2e`: Playwright fixtures, page-object base class, helpers, config factory, structured errors. Layer 0; no `@suaveplan/*` runtime deps.
|
|
|
|
### Modified Capabilities
|
|
|
|
(none)
|
|
|
|
## Impact
|
|
|
|
- **Affected code**: `packages/universal/testing-e2e/**` (fresh).
|
|
- **Affected consumers**: every E2E-testing app/package (none yet on genesis).
|
|
- **Version**: `0.1.0`.
|
|
- **Catalogs**: `@playwright/test` is already in `catalogs.testing` on main; carry over or add the version.
|
|
- **Pre-publish gate**: `bunx turbo lint typecheck test --filter=@suaveplan/testing-e2e` green + ≥ 95% coverage on touched modules.
|