Skip to content

E2e/split/ci workflows - #2205

Draft
papistacoding wants to merge 29 commits into
mainfrom
e2e/split/ci-workflows
Draft

E2e/split/ci workflows#2205
papistacoding wants to merge 29 commits into
mainfrom
e2e/split/ci-workflows

Conversation

@papistacoding

Copy link
Copy Markdown
Member

No description provided.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
Signed-off-by: papistacoding <bruno.papista@gmail.com>
Signed-off-by: papistacoding <bruno.papista@gmail.com>
…ntories)

Signed-off-by: papistacoding <bruno.papista@gmail.com>
Signed-off-by: papistacoding <bruno.papista@gmail.com>
Adds aria-labels to the icon-only edit/delete/reorder buttons on both
pages — they had no accessible name at all, which is an a11y defect and
also left the tests reaching for CSS classes.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
The create and edit forms validated title and text but rendered no
message, so submitting an incomplete update did nothing visible. Uses
the repo's prevailing paragraph pattern, matching the FAQ form.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
Drops the trust-centre argument from the backend decision memo now that
the area is covered locally.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
… validation

Signed-off-by: papistacoding <bruno.papista@gmail.com>
Signed-off-by: papistacoding <bruno.papista@gmail.com>
Signed-off-by: papistacoding <bruno.papista@gmail.com>
Signed-off-by: papistacoding <bruno.papista@gmail.com>
The suite should be reviewable without the CI-backend decision attached
to it. Workflows, the sharding plan and the backend decision memo move
to e2e/split/ci-workflows, which stacks on this branch.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
…ecision memo

Stacks on e2e/split/playwright-suite — the workflows type-check and run
that suite, so they cannot stand alone on main.

- console-checks.yml: every PR, no backend, ~1 min
- console-e2e.yml: 4 shards, each with its own core stack, then a merge job
- playwright.config.ts: blob reporter on CI, CI worker clamp removed
- CI_SHARDING_PLAN.md: how N was chosen and what is still unmeasured
- DECISION-e2e-backend.html: production vs throwaway backend, for review

Signed-off-by: papistacoding <bruno.papista@gmail.com>
@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openlane-ui Ready Ready Preview Aug 28, 2026 10:27pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
storybook Ignored Ignored Aug 28, 2026 10:27pm

Request Review

@github-actions github-actions Bot added the ci label Aug 25, 2026
Comment thread .github/workflows/console-checks.yml Fixed
Comment thread .github/workflows/console-checks.yml Fixed
Comment thread .github/workflows/console-e2e.yml Fixed
Comment thread .github/workflows/console-e2e.yml Fixed
Comment thread .github/workflows/console-e2e.yml Fixed
Comment thread .github/workflows/console-e2e.yml Fixed
Comment thread apps/console/e2e/utils/recaptcha.ts Fixed
Comment thread apps/console/e2e/global-setup.ts Fixed
Comment thread apps/console/e2e/utils/api.ts Dismissed
Comment thread apps/console/e2e/utils/api.ts Dismissed
Comment thread apps/console/e2e/utils/registerUser.ts Dismissed
The directory holds replayable session cookies and the shared test
password. mode on mkdirSync/writeFileSync only applies at creation, so an
existing .auth kept 0755/0644 — chmod explicitly.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
Comment thread apps/console/e2e/global-setup.ts Dismissed
…he suite

Coverage — closes the last create/edit/delete gaps found by auditing all 139
form components against the suite:

- exposure-entities-crud.spec.ts: findings, scans, remediations and
  vulnerabilities. Table-driven because all four pages are generated from
  GenericTablePage; scans carry mutateVia: 'bulk' since their detail sheet uses
  overrideHeader and exposes no Edit/Delete at all.
- exposure-action-plans-crud.spec.ts: action plans from the risk Mitigation tab.
- integrations-config-form.spec.ts: the RJSF schema form on a definition page.
  Deliberately does not complete a connection — that would authenticate against
  a third-party service.
- utils/api.ts: seeders for finding, scan, remediation, vulnerability and
  action plan.

De-flaking — the suite was carrying 11 tests that failed then passed on retry.
Root causes, not timeout padding:

- actionTimeout 15s -> 30s. Most flakes were literally
  "locator.click: Timeout 15000ms" on menus and rows rendering late under
  8-way load. One lever, whole class.
- procedures-table sorting assumed the first header click sorts ascending, but
  the table has a defaultSorting, so from a sorted state the cycle is
  descending -> none and "none" leaves arbitrary order. Drive off aria-sort.
- org-lifecycle-fresh reloaded while the update was still in flight.
- procedures-table pagination waited for /^Page 1 of \d+$/, which matches
  "Page 1 of 1" before the seeded rows are counted.
- completeOnboarding polled for 90s inside a 90s test timeout.
- utils/menu.ts: shared openRowAction / confirmDestructiveDialog for Radix
  portal menus that detach when the underlying table refetches.

Also replaces transient-toast assertions with server-observable ones
(waitForResponse, or the resulting state) — toasts live ~4s and were the direct
cause of several false failures.

Full suite: 986 tests, 972 passing, 0 failing at 8 workers.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
Aggregating the flaky set across 13 full-suite runs showed 57 distinct tests had
flaked at least once, but 40 of them (70%) in exactly one run — noise, not
fragility. Only five were chronic, and those are what this fixes.

global-setup: seedRoleUser did a bare waitForURL(/dashboard/, 30s) after login.
On expiry it threw, which kills the whole run before a single test executes —
two of the last three full runs died here and produced no data at all. It also
gave no clue where the browser actually was. It now reports the stuck URL, and
that immediately showed the real cause was not the session-cookie bounce but the
login failing outright, leaving us on /login where re-navigating is futile. It
now re-attempts the login for that case and only re-navigates for the cookie
race.

automation-workflows (worst offender, 4/13): the deletes verified through the UI
list, which serves stale results right after a mutation. Assert through
findWorkflowDefinitionId at the API instead, keeping the list check as a
secondary.

onboarding (3/13 each): both chronic tests walk the whole wizard but only the
happy path carried test.slow(). Mark the re-entry test too.

automation-templates (3/13): the column-visibility toggle and the header
assertion could straddle a re-render. Check current state before toggling and
retry the cycle.

Latest full suite: 971 passed, 1 failed, 4 flaky — and none of the five chronic
tests appear in it.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
Cover the remaining CRUD, bulk-import, bulk-edit and comment flows, and
assert the mutations actually fire rather than that a dialog opened.

Skip every permission-gating test behind E2E_PERMISSION_GATES so the suite
can merge before the gating does, and fix the races that made the suite
flaky: a null membership node in roleOf, the router cache serving a stale
list, and the loads that outrun a pending permission query.

Brings the segmented Playwright config and the e2e directory back in sync
with the branch this was split from.

Signed-off-by: papistacoding <bruno.papista@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants