Repository navigation
feat(e2e): plan-detail test suite for CUJ lifecycle + BYT-9158 regressions - #19981
Conversation
… methods Adds createSheet, createPlan, getPlan, runPlanChecks, getPlanCheckRun, createIssue, getIssue, approveIssue, updateProjectSettings, getProject, getReviewConfig, updateReviewConfigRuleLevel, and asUser static helper. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… helper Rewrites plan-detail.page.ts with new locators for spec tabs, inline/sidebar check counts, sidebar status label, retry button, deploy phase badge, and a waitForApprovalStatus helper that polls BytebaseApiClient. Removes four stub spec files that are superseded by future task-specific specs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…approval, checks, task failure 6 spec files + 1 POM covering: - CUJ 1: Full plan lifecycle (create → rollout → run → done) - CUJ 2: Approved + checks failed — BYT-9159 regression guard - CUJ 3: Approval pending blocks rollout creation - CUJ 4: Task failure shows error state + retry button - BYT-9160: Sidebar check count scoping lock test (test.fixme — unfixed) - BYT-9161: Section expansion preserved across interactions All tests self-contained — create own plans/issues via API, no dependency on demo seed data. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 787068ec5e
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…n SKIPPED approval
- POM runTask(): use CSS `button:not([disabled])` instead of Playwright
`filter({ has })` which checks descendants, not the element's own attribute
- checks-blocker: skip suite gracefully when approval resolves to SKIPPED
(no matching rule) instead of hard-failing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6b4b7a9ce6
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
- POM: remove 8 unused members (sidebarStatus, deployBadge, runTasksButton, refreshButton, sidebarStatusLabel, getTaskRunButton, getRunDialogConfirm, stageProgress, waitForApprovalStatus) - POM: fix sidebarCheckCount to filter by status param (was ignoring it) - POM: remove BytebaseApiClient import (no longer needed) - approval-blocker, checks-blocker, byt9160: replace test.skip() in beforeAll with module-level shouldSkip flag + test.skip(shouldSkip) in each test body (test.skip in beforeAll has undefined Playwright behavior) - lifecycle, task-failure: use planPage.runTask() instead of inline duplicate logic Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 228dbc56ee
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…rule restore - POM createRolloutWithBypass: arm waitForResponse BEFORE clicking Confirm to prevent race where fast backend response is missed (P1) - byt9160: throw if plan checks never reach DONE within timeout instead of silently proceeding with partial data (P2) - checks-blocker: capture original COLUMN_NO_NULL rule level in beforeAll and restore it in afterAll instead of hardcoding "WARNING" (P2) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… tab locator
- approval-blocker: treat APPROVED as terminal in poll loop (auto-approval
policy can skip PENDING entirely)
- byt9160: use exact-match getByText("#2") instead of broken POM specTab
to avoid matching "Issue #..." text elsewhere on page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f36007c4b8
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
… defaults All 4 spec files that mutate project settings (lifecycle, approval-blocker, checks-blocker, task-failure) now capture the original values in beforeAll and restore them in afterAll, preventing order-dependent failures in environments with non-default project policies. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 793697b9c8
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
approval-blocker: restore both requireIssueApproval and requirePlanCheckNoError (was only restoring approval) byt9160, byt9161: add settings capture in beforeAll + restore in afterAll (were missing entirely) All 6 spec files now follow the same pattern: getProject → capture → mutate → test → restore in afterAll. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4a6e3bf91e
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…lose - POM runTask(): use getByRole with exact name "Run" + CSS :not([disabled]) to avoid matching "Run check" sidebar button (P1) - byt9161: replace swallowed .catch() on drawer-close assertion with explicit fallback — reload page if drawer doesn't close instead of silently proceeding (P2) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0c96d0a6f1
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".




Summary
Test Coverage
plan-detail-lifecycleplan-detail-approval-blockerplan-detail-checks-blockerrequirePlanCheckNoErrorplan-detail-task-failureplan-detail-byt9160-check-consistencytest.fixme)plan-detail-byt9161-section-preservationAll tests create their own data via API — no dependency on demo seed data.
Test plan
pnpm exec playwright test plan-detail --project=chromium— 31 passed, 1 skipped (test.fixmefor BYT-9160)🤖 Generated with Claude Code