Skip to content

ci: fix Playwright shard a (stop loading the case-mangled SDK dump) - #2129

Merged
renemadsen merged 1 commit into
stablefrom
fix/2128-shard-a-settings-spec
Sep 27, 2026
Merged

renemadsen merged 1 commit into
stablefrom
fix/2128-shard-a-settings-spec

Conversation

@renemadsen

Copy link
Copy Markdown
Member

Closes #2128

Root cause

Playwright shard a has been red on every run since it was added (April 2026), not only recently. The same step also kept the old Cypress test (a) job behind continue-on-error.

After DB configuration, shard a dropped 420_SDK and loaded eform-client/cypress/e2e/plugins/items-planning-pn/a/420_sdk.sql. That file is a 2023 Navicat export from a case-insensitive server, so every table name is lowercased: __efmigrationshistory, caseversions, settings and so on. The CI MariaDB runs on Linux, where table names are case-sensitive. The failure then went like this:

  1. EF Core looks for __EFMigrationsHistory, does not find it, and re-runs the SDK migrations from InitialCreate. That stops with Table 'notifications' already exists, and later requests hit Table 'case_versions' already exists. The result is Core.StartSqlOnly failed.
  2. Every GET /api/account/user-settings returns 500. The trace shows 15+ of them, while /api/auth/claims returns 200 with eforms_create: True.
  3. The frontend loads claims through zip(getUserSettings(), obtainUserClaims()), so the 500 means the claims never reach the store.
  4. #newEFormBtn is *ngIf="selectCurrentUserClaimsEformsCreate$ | async", so it never renders. The screenshot shows the logged-in "Mine eForms" page with no create buttons and empty menu entries. LoginPage.login() waits for that button until the test times out.

Fix

  • Shard a no longer loads the dump. Its only spec (a/items-planning-settings.spec.ts: plugin row check, then activation) uses none of the dump's data. It keeps the SDK database that DB configuration creates, the same as shards b and c.
  • The rabbitmq host, which the dump used to set, is now set for every shard. One step sets the plugin status (1 for a, whose spec activates the plugin; 2 for b/c) and restarts the container.
  • The dump is deleted because nothing references it any more.
  • continue-on-error is removed for shard a, so a regression turns the run red again.
  • dotnet-core-master.yml gets the same change.

No spec, assertion or wait changed. The long wait comes from LoginPage.login(), which lives in eform-angular-frontend and is out of scope for this repo.

🤖 Generated with Claude Code

https://claude.ai/code/session_017kbiaVNigNkVARtq94xkDa

Shard a dropped 420_SDK after DB configuration and loaded
cypress/e2e/plugins/items-planning-pn/a/420_sdk.sql, a 2023 export
from a case-insensitive server with every table name lowercased
(`__efmigrationshistory`, `caseversions`, ...). On the Linux MariaDB
used in CI, table names are case-sensitive, so EF Core found no
`__EFMigrationsHistory`, re-ran the SDK migrations from InitialCreate
and failed with "Table 'notifications' already exists". Core start
then failed on every request, /api/account/user-settings returned 500,
the frontend never stored the user's claims, and #newEFormBtn (gated
on eforms_create) never rendered, so login timed out.

The only spec in shard a (plugin row check + activation) uses nothing
from the dump. Shard a now keeps the SDK database that DB configuration
created, like b and c. The rabbitmq host (which the dump used to set)
is set for every shard, and one step sets the plugin status (1 for a,
whose spec activates it; 2 for b and c) and restarts the container.
The unreferenced dump is deleted, and shard a loses continue-on-error
so a regression fails the run again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017kbiaVNigNkVARtq94xkDa
Copilot AI lite review requested due to automatic review settings September 27, 2026 08:50

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

No unresolved issues were identified.

Review effort: Lite
Findings: None

What changed in this PR

Fixes Playwright shard a by removing an incompatible SQL dump and standardizing CI setup.

Changes:

  • Removes the obsolete case-mangled SDK dump.
  • Configures RabbitMQ and plugin status across shards.
  • Makes shard a failures block CI.
File Description
eform-client/​cypress/​e2e/​plugins/​items-planning-pn/​a/​420_sdk.sql Removes the obsolete database dump.
.github/​workflows/​dotnet-core-pr.yml Updates Playwright shard setup and error handling.
.github/​workflows/​dotnet-core-master.yml Applies equivalent CI corrections on master.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@renemadsen

Copy link
Copy Markdown
Member Author

Copilot review considered: no findings. All CI checks are green, including shard a, which now blocks PRs again. The exception is Codacy's account-side action_required: it shows 0 issues, it is the same on every PR since ~#2117, and it is exempted by the maintainer.

@renemadsen
renemadsen merged commit b51132f into stable Sep 27, 2026
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants