Files
insights/tools/playwright_area_map.json
zeekay bc4ddf332b chore: rebase the tree onto upstream master fa1a9a60
Mechanically re-derived: bin/debrand runs over a fresh import of
posthog/posthog@fa1a9a60d4 (2026-08-06).
The pipeline (.hanzo/workflows), the Dockerfiles and bin/docker*
entrypoints, compose files, LLM.md and the squashed initial migration
are restored from the shipped tree, same as the previous import.

The prune's import-closure guard kept 21 products the new core now
imports; dropping them is a refactor now, recorded rather than forced.
2026-08-06 01:25:36 -07:00

155 lines
7.9 KiB
JSON

{
"_comment": [
"Path -> Playwright spec map for affected-only E2E selection on ready-PR incremental pushes.",
"Consumed by tools/playwright_spec_selection.py; wired into .github/workflows/ci-e2e-playwright.yml.",
"The selector is FAIL-CLOSED: any changed file not matched below forces the FULL suite, and a",
"selection miss is caught by the post-merge full run on master (the backstop). Start narrow and",
"widen `scenes`/`explicit` as recall data comes in. Every target must resolve to >=1 real spec",
"(enforced by tools/test_playwright_spec_selection.py) and point only into the two spec roots.",
"Glob syntax: `*` matches within a path segment, `**` matches across segments (only at pattern end).",
"A target ending in `/` is a directory prefix (all specs beneath it); otherwise it's an exact file.",
"Every spec must be reachable by some target OR listed in `full_suite_only` — the test enforces",
"this, so adding a spec forces a conscious choice: map it, or accept it only runs in full suites",
"(and when directly edited).",
"`ignore` lists paths that provably CANNOT affect the app under test (docs, agent instructions,",
"lint rules, workflows for other suites): they contribute nothing to selection instead of forcing",
"a full run. `force_full` outranks `ignore`, no ignore pattern may match a spec (test-enforced),",
"and an all-ignored diff still runs the full suite (category `all_ignored`) until telemetry",
"justifies a skip mode. Only add entries that cannot reach the app bundle, the backend, or the",
"e2e stack config.",
"`scenes_smoke_only` lists scenes with NO direct e2e coverage — no spec navigates to them, so",
"the full suite wouldn't exercise them either. Changes there run `smoke_subset` (app boots,",
"auth works) instead of everything. A scene must not appear in both `scenes` and",
"`scenes_smoke_only` (test-enforced); when a scene gains a real spec, move it to `scenes`."
],
"ignore": [
"*.md",
"**/*.md",
"docs/**",
".agents/**",
".semgrep/**",
".github/workflows/**",
"common/storybook/**"
],
"force_full": [
"playwright/utils/**",
"playwright/page-models/**",
"playwright/mocks/**",
"playwright/*.ts",
"playwright/playwright.config.ts",
"playwright/snapshots.yml",
"playwright/package.json",
"tsconfig.json",
"tsconfig.*.json",
".github/workflows/ci-e2e-playwright.yml",
"tools/playwright_spec_selection.py",
"tools/playwright_area_map.json",
"frontend/src/lib/**",
"frontend/src/queries/**",
"frontend/src/models/**",
"frontend/src/layout/**",
"frontend/src/types.ts",
"frontend/src/globals.ts",
"insights/**",
"ee/**",
"products/*/backend/**",
"package.json",
"pnpm-lock.yaml",
"uv.lock",
"docker-compose.dev.yml",
"docker-compose.base.yml",
"docker-compose.profiles.yml",
"Dockerfile",
".github/datastore-versions.json",
"bin/**"
],
"smoke_subset": ["playwright/e2e/auth.spec.ts"],
"scenes_smoke_only": ["billing", "groups", "insights-functions", "inbox", "integrations", "max", "web-analytics"],
"products": {
"insights_ai": ["products/insights_ai/frontend/e2e/"],
"replay": ["products/replay/frontend/e2e/"],
"surveys": ["products/surveys/frontend/e2e/"]
},
"scenes": {
"surveys": ["products/surveys/frontend/e2e/"],
"session-recordings": ["products/replay/frontend/e2e/"],
"sessions": ["products/replay/frontend/e2e/"],
"experiments": ["playwright/e2e/experiments/"],
"cohorts": ["playwright/e2e/product-analytics/cohorts.spec.ts"],
"trends": ["playwright/e2e/product-analytics/"],
"data-warehouse": ["playwright/e2e/sql-editor*.spec.ts"],
"dashboard": [
"playwright/e2e/product-analytics/dashboards.spec.ts",
"playwright/e2e/shared-dashboard-styling.spec.ts",
"playwright/e2e/shared-dashboard-unauthenticated.spec.ts"
],
"notebooks": [
"playwright/e2e/product-analytics/notebooks.spec.ts",
"playwright/e2e/shared-notebook-unauthenticated.spec.ts"
],
"saved-insights": ["playwright/e2e/product-analytics/insights-list.spec.ts"],
"insights": [
"playwright/e2e/product-analytics/",
"playwright/e2e/insight-sharing-password.spec.ts",
"playwright/e2e/shared-insight-unauthenticated.spec.ts"
],
"funnels": ["playwright/e2e/product-analytics/"],
"paths": ["playwright/e2e/product-analytics/"],
"paths-v2": ["playwright/e2e/product-analytics/"],
"retention": ["playwright/e2e/product-analytics/retention.spec.ts"],
"persons": ["playwright/e2e/persons/persons.spec.ts"],
"persons-management": ["playwright/e2e/persons/persons.spec.ts"],
"authentication": [
"playwright/e2e/auth.spec.ts",
"playwright/e2e/auth-password-reset.spec.ts",
"playwright/e2e/two-factor.spec.ts",
"playwright/e2e/invite-signup.spec.ts"
],
"onboarding": ["playwright/e2e/before-onboarding.spec.ts", "playwright/e2e/signup.spec.ts"],
"data-management": ["playwright/e2e/event-definitions.spec.ts", "playwright/e2e/annotations.spec.ts"],
"annotations": ["playwright/e2e/annotations.spec.ts"],
"toolbar-launch": ["playwright/e2e/toolbar.spec.ts"],
"settings": [
"playwright/e2e/before-onboarding.spec.ts",
"playwright/e2e/api-keys.spec.ts",
"playwright/e2e/two-factor.spec.ts",
"playwright/e2e/invite-signup.spec.ts",
"playwright/e2e/settings-danger-zone.spec.ts"
],
"feature-flags": ["playwright/e2e/feature-flags.spec.ts", "products/surveys/frontend/e2e/quickcreate.spec.ts"]
},
"explicit": {
"products/web_analytics/frontend/heatmaps/**": ["playwright/e2e/auth.spec.ts"],
"products/feature_flags/frontend/**": ["playwright/e2e/feature-flags.spec.ts"],
"products/product_analytics/frontend/**": ["playwright/e2e/product-analytics/"],
"products/dashboards/frontend/**": [
"playwright/e2e/product-analytics/dashboards.spec.ts",
"playwright/e2e/shared-dashboard-styling.spec.ts",
"playwright/e2e/shared-dashboard-unauthenticated.spec.ts"
],
"products/session_replay/frontend/**": ["products/replay/frontend/e2e/"],
"products/experiments/frontend/**": ["playwright/e2e/experiments/"],
"products/persons/frontend/**": ["playwright/e2e/persons/persons.spec.ts"],
"products/cohorts/frontend/**": ["playwright/e2e/product-analytics/cohorts.spec.ts"],
"products/notebooks/frontend/**": [
"playwright/e2e/product-analytics/notebooks.spec.ts",
"playwright/e2e/shared-notebook-unauthenticated.spec.ts"
],
"products/early_access_features/frontend/**": ["playwright/e2e/early-access-management.spec.ts"],
"products/event_definitions/frontend/**": ["playwright/e2e/event-definitions.spec.ts"],
"products/annotations/frontend/**": ["playwright/e2e/annotations.spec.ts"],
"products/data_warehouse/frontend/**": ["playwright/e2e/sql-editor*.spec.ts"],
"products/workflows/frontend/**": [
"playwright/e2e/workflows-hidden-templates-load.spec.ts",
"playwright/e2e/workflows-property-filter-category-dropdown.spec.ts"
],
"frontend/src/toolbar/**": ["playwright/e2e/toolbar.spec.ts"]
},
"full_suite_only": [
"playwright/e2e/oauth-mcp-consent.spec.ts",
"playwright/e2e/preflight.spec.ts",
"playwright/e2e/system-status.spec.ts",
"playwright/e2e/ingestion-capture.spec.ts"
]
}