E2e/split/playwright suite - #2204
Draft
papistacoding wants to merge 21 commits into
Draft
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
papistacoding
force-pushed
the
e2e/split/playwright-suite
branch
from
August 26, 2026 20:33
d0d6594 to
b3e3612
Compare
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>
Signed-off-by: papistacoding <bruno.papista@gmail.com>
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>
Signed-off-by: papistacoding <bruno.papista@gmail.com>
… build-out Signed-off-by: papistacoding <bruno.papista@gmail.com>
…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>
papistacoding
force-pushed
the
e2e/split/playwright-suite
branch
from
September 2, 2026 17:24
68139c1 to
fc9dd1f
Compare
Unit coverage for the areas main added since this branch forked: merge edge collection and paging, member/group CSV exports, auditor mapped controls, the CUSTOM standard filter, the stripe live-subscription pick, sticky-search TTL and the CSV writer's formula-injection guard. E2E covers merge mode, the members/groups export dialogs and the review sheet resolver. Fixes the suite against main: - bulk-update toasts moved to getBulkUpdateOutcome in #2181, and a single selected row renders the singular label - the token expiry calendar regex matched the 15th and 25th as well as the 5th - clicks on menus that re-render resolved but never settled, so they are dispatched via clickResilient - controls waitForURL matched /controls/create-control itself and returned before the record existed - inline renames reloaded while the update mutation was still in flight - create forms could be covered by the draft-restore modal - specs that depended on another spec seeding a row now seed their own Also fixes the trust-center domain page rendering no actions when a custom domain has no CNAME record, which left the domain impossible to edit or delete, and labels its icon-only buttons. Claude-Session: https://claude.ai/code/session_012ihgrrWpm5P59vajforERs Signed-off-by: papistacoding <bpapista@theopenlane.io>
The column-visibility retry assumed the menu was closed at the start of each attempt. When Escape did not land, the trigger stopped being exposed as a button while the menu stayed open, so the next attempt's click burned its full 30s actionability wait and the 60s toPass budget expired. Reproduced at 1 failure in 10 runs; 20/20 after the fix. Claude-Session: https://claude.ai/code/session_012ihgrrWpm5P59vajforERs Signed-off-by: papistacoding <bpapista@theopenlane.io>
…ce on load The modal renders after the create page reads its stored draft, so the one-shot check straight after goto raced it and the form stayed covered. addLocatorHandler fires at the moment the modal actually blocks an action instead. Also opens the group-membership role select through openRowAction, so a background refetch cannot swallow the click and leave the option unopened. Claude-Session: https://claude.ai/code/session_012ihgrrWpm5P59vajforERs Signed-off-by: papistacoding <bpapista@theopenlane.io>
papistacoding
force-pushed
the
e2e/split/playwright-suite
branch
from
September 2, 2026 22:40
533bf3e to
f8bd9c0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.