Repository navigation
test(playwright): add AppMode URL-handling spec next to the OSS app-mode router - #34627
Conversation
…ode router These cases lived in Collate's AppModeUrlHandling spec, but the code they cover now lives here: the AppModeRoutes cold-boot hold, the AI not-found page, classic-route delegation, /my-data, and the connectionsModule /service -> /connections redirect. Because the spec ran only in Collate, #34599 broke its reload assertion without OSS CI noticing. The reload test now asserts the incident-groups root, which renders whether or not any incidents exist, instead of the removed flat table.
🔄 Playwright impact map auto-refreshedThis PR touched specs or UI source that changed the source→spec routing map. I regenerated What is this file? It is the auto-generated half of Playwright's PR planner. It routes "if source X changes, run specs Y" by walking spec imports and cross-referencing What if I want to regenerate locally instead? Run this before pushing your next change to skip the bot commit: python3 .github/scripts/generate_playwright_impact_map.py
git add .github/playwright/impact-map.generated.json
git commit --amend --no-edit # or a separate commit |
✅ Playwright Results — workflow succeededValidated commit ✅ 219 passed · ❌ 0 failed · 🟡 0 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky PerformanceBlocking targets: ✅ met · Optimization targets: 🟡 in progress Shard-job maxima below are not the full workflow wall time; the linked run includes build, fixture, planning, and reporting. 🕒 Full workflow signal wall (to summary) 18m 50s ⏱️ Max setup 4m 30s · max shard execution 7m 43s · max shard-job elapsed before upload 10m 50s · reporting 3s 🌐 202.75 requests/attempt · 1.77 app boots/UI scenario · 0.00% common-shard skew Optimization targets still in progress:
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
…n AppMode URL spec
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
connectionsModule is a static shared module, so the redirect route exists from first render; pre-booting /my-data only hid the cold deep-link path.
The planner's stale-baseline gate fails any PR whose planned spec has no timing-baseline.json history. Durations come from a passing local run against the docker dev stack (d51818c).
Code Review ✅ Approved🟢 Low risk · Adds Playwright coverage for AppMode URL routing and cold-boot behavior. Adds AppMode URL-handling tests next to the OSS app-mode router, covering cold-boot behavior for observability routes, query string preservation across reloads, AI not-found page rendering, route delegation, and service-to-connections redirects. No issues found. OptionsDisplay: compact → Counting what did not apply, without listing it. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
Describe your changes:
Tests only. This moves the OSS-owned cases of Collate's
AppModeUrlHandling.spec.tsinto OpenMetadata, next to the code they test. The Collate side is open-metadata/openmetadata-collate#7071.Why. Collate's
mysql~fullrun failed oncold boot … › preserves the query string across a reloadon every retry:#34599 made the AI-mode incident manager render
IncidentGroupsView, so that flat-table testid is gone from the route. The test lived only in Collate, so this PR's CI never ran it. Yet everything it covers is now OSS code:/observability/data-qualityand/observability/incident-manager, and query string kept across a reloadAppModeRoutes(waits onisApplicationsLoading)/404renders the AI not-found pageAINotFoundPageinAppModeRoutes/exploredelegates to the classic route table inside the AI shellAppModeRoutescatch-all/my-datarenders inside the AI shell/service/<cat>/<fqn>redirects to/connections/<cat>/<fqn>connectionsModuleCollate keeps only the AskCollate-specific cases: the
/askCollate/*rewrite,/conversations, and the plugin-owned/ai-automationscold boot.Changes from the Collate original:
incident-groups, the view's root, instead of the removed table. The root renders in the table, empty and no-match states, so the assertion does not depend on seeded incidents./servicetest boots on/my-datainstead of Collate's/conversations./ai-automationsis dropped from the cold-boot list, because that route comes from a Collate plugin.Features/AppMode/fixtures.tsandenableAiAppModefromUtils/appMode.ts.Type of change:
Checklist:
Testing:
npx playwright test playwright/e2e/Features/AppMode/AppModeUrlHandling.spec.ts --project=chromiumagainst a local stack (dist server on Postgres and OpenSearch, Vite serving this branch, empty dataset). It passed 7 of 7 on two consecutive runs.eslintandprettier --checkare clean on the new file.🤖 Generated with Claude Code