fix(e2e): restore readiness gates for runtime, auth, and localization - #5083
fix(e2e): restore readiness gates for runtime, auth, and localization#5083schultzp2020 wants to merge 23 commits into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5083 +/- ##
==========================================
- Coverage 55.39% 54.77% -0.62%
==========================================
Files 122 110 -12
Lines 2365 2147 -218
Branches 544 537 -7
==========================================
- Hits 1310 1176 -134
+ Misses 1049 970 -79
+ Partials 6 1 -5
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
The container image build workflow finished with status: |
|
The container image build workflow finished with status: |
|
/test e2e-ocp-helm-nightly |
|
/test e2e-ocp-operator-nightly |
|
/test e2e-ocp-operator-auth-providers-nightly |
|
The container image build workflow finished with status: |
|
/test e2e-ocp-operator-auth-providers-nightly |
1 similar comment
|
/test e2e-ocp-operator-auth-providers-nightly |
|
The container image build workflow finished with status: |
|
/test e2e-ocp-operator-auth-providers-nightly |
62f7502 to
0953344
Compare
|
The container image build workflow finished with status: |
|
/test e2e-ocp-operator-auth-providers-nightly |
|
/test e2e-ocp-operator-auth-providers-nightly |
|
/test e2e-ocp-helm |
|
/test e2e-ocp-helm-nightly |
|
/agentic-review |
|
/agentic-review |
|
/test e2e-ocp-helm-nightly |
|
/test e2e-ocp-operator-auth-providers-nightly |
Co-authored-by: Cursor <cursoragent@cursor.com>
Auth fixtures looked for yamls under rhdh-deployment/ after the folder split. Operator runtime was missing BACKEND_SECRET/auth.keys and the homepage plugin, leaving readiness at HTTP 503. Co-authored-by: Cursor <cursoragent@cursor.com>
prepareProvider updates ConfigMaps before createBackstageDeployment. Capturing reconcile baseline must tolerate a missing deployment. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
waitForRolloutStart treated a missing Deployment as a hard error, so auth prepareProvider failed immediately after applying the Backstage CR. Co-authored-by: Cursor <cursoragent@cursor.com>
Extract OperatorInstallProfile and DynamicPluginsProfile so auth and runtime stop drifting on flavours, includes, and BACKEND_SECRET. Stage auth deploy readiness as Available → HTTP → synced behind AuthInstanceDeployer. Co-authored-by: Cursor <cursoragent@cursor.com>
Stop dual BACKEND_SECRET injection, stage created→HTTP→synced so 503s surface before Available timeouts, always publish instance BASE_URL after runtime deploy, and align auth YAML fixtures with the install profile. Co-authored-by: Cursor <cursoragent@cursor.com>
Auth CI leaves BASE_URL empty so globalSetup no-ops, but rhdhContext ignored
describe-level baseURL and login goto("/") failed with invalid URL.
Co-authored-by: Cursor <cursoragent@cursor.com>
Centralize helm/operator URL naming, scope RUNTIME_AUTO_DEPLOY so it cannot stomp later projects, wait for authenticated global-header after OAuth, and kill port-forward process groups cleanly. Co-authored-by: Cursor <cursoragent@cursor.com>
Fix catalog sync log races, assert cookieMaxAge for refresh tokens, stop Azure redirect churn, tolerate failed-login alerts, and re-order OIDC+GitHub secondary auth around reconcile. Co-authored-by: Cursor <cursoragent@cursor.com>
Force pod restart and Deployment Ready after ConfigMap updates so resolvers, sessionDuration, and autologout actually load; switch cookie tests to the correct Backstage key and harden post-reconcile navigation/IdP waits. Co-authored-by: Cursor <cursoragent@cursor.com>
Default reconcile waits HTTP-only after mounted-config proof, shares cookie and label helpers, returns authenticated|error from login, and moves GitHub provider sign-out into the Settings POM. Co-authored-by: Cursor <cursoragent@cursor.com>
Playwright TimeoutError from request.get aborted expect.poll after one attempt, so post-reconcile HTTP readiness never used its full budget. Co-authored-by: Cursor <cursoragent@cursor.com>
The catalog identity-error regex had a ';u' typo that broke expected-error cases; also reuse healthy auth namespaces on worker restart and harden IdP popup/login outcome locality so nightlies stop burning the 2h budget. Co-authored-by: Cursor <cursoragent@cursor.com>
Worker-restart reuse was dying on AlreadyExists when recreating secrets, and sessionDuration cases inherited broken resolvers from earlier login tests. Co-authored-by: Cursor <cursoragent@cursor.com>
…tions Requiring role=main before loader settle burned the readiness budget on stuck progressbar paints; also retry ERR_ABORTED and enrich secret k8s errors. Co-authored-by: Cursor <cursoragent@cursor.com>
…ap errors Make waitForAppReady observe the CI stuck-progressbar paint, reset the page before goto retries, and surface ConfigMap k8s failures with status detail. Co-authored-by: Cursor <cursoragent@cursor.com>
Pin autologout resolver/config, poll refresh-cookie absence after reload, and wrap config-liveness/wait API failures so CI no longer shows opaque HttpErrors. Co-authored-by: Cursor <cursoragent@cursor.com>
Operator nightlies CrashLoop when the default lightspeed flavour injects OCI pulls; pin flavours: [] on start CRs to match OperatorInstallProfile. Also fail closed until the customization-provider S2I build leaves a non-whitespace Deployment image. Co-authored-by: Cursor <cursoragent@cursor.com>
Restore #4791 lightspeed disabled overrides in showcase helm values so install-dynamic-plugins cannot fail on unresolved {{inherit}}. Raise catalog API timeouts and poll ingestion checks so OIDC entity sync can finish through Routes without cascading skips. Co-authored-by: Cursor <cursoragent@cursor.com>
Stop burning the 120s ingestion budget on HTTP/shape errors, drop nested expect.poll wrappers, and align CI lightspeed overrides with post-#5021 enabled:false so helm/auth nightlies fail for the right reason. Co-authored-by: Cursor <cursoragent@cursor.com>
823bbd9 to
ba327e0
Compare
|
|
/test e2e-ocp-helm-nightly |
|
The container image build workflow finished with status: |
|
@schultzp2020: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
|
PR needs rebase. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
/test e2e-ocp-helm-nightly |



Summary
Restores and hardens RHDH E2E readiness after #5004 / #5022 broke nightlies, then deepens auth/runtime/operator install so defaults (especially lightspeed) cannot recreate the same failure class.
globalSetupclassifiesBASE_URLasunset|router-stub|instance-url; runtime jobs keep a predicted URL +RUNTIME_AUTO_DEPLOY=true; auth leavesBASE_URLempty so the harness self-deploys."Welcome back!".OperatorInstallProfile+DynamicPluginsProfileownapiVersion,flavours: [],includes: [], andBACKEND_SECRETfor runtime and auth adapters.AuthInstanceDeployerstages created → HTTP/healthcheck→ catalog synced; config liveness, IdP waits, cookie/session isolation, and OIDC autologout hardenings for reconcile races.flavours: []onrhdh-start*.yaml(same lightspeed invariant as Playwright); unit test locks the seam; fail-closed wait for customization-provider S2I so Deployment image is never" ".e2e-tests/.lintstagedrc.jsand document/test ?//test <job>for agents/contributors.flowchart TB subgraph globalSetup["Playwright globalSetup"] A[classify BASE_URL] --> B{mode?} B -->|router-stub, no auto-deploy| C[no-op] B -->|RUNTIME_AUTO_DEPLOY| D[ensureRuntimeDeployed] D --> E[set instance BASE_URL] E --> F["GET /healthcheck"] B -->|instance-url| F B -->|unset, no auto-deploy| C end subgraph authDeploy["AuthInstanceDeployer"] P[OperatorInstallProfile + DynamicPluginsProfile] --> Q[apply CR / CMs] Q --> R[wait Deployment created] R --> S["HTTP /healthcheck ≤ 600s"] S --> T[wait catalog synced] end subgraph ciOperator["CI operator nightlies"] CR["rhdh-start*.yaml flavours: []"] --> DP[install-dynamic-plugins] DP --> Ready[showcase / showcase-rbac] end globalSetup -.->|auth BASE_URL empty| authDeployWhy auth / operator were still failing after the gate fix
flavours/includes, so the operator reintroduced defaults (e.g. lightspeed) and readiness stayed on HTTP 503. Runtime already encoded those invariants; profiles close the drift.maingates, aborted navigations, OIDC refresh-cookie timing) — hardened in follow-up commits.install-dynamic-pluginswith alightspeed-coresidecar because CI start CRs lackedflavours: []. Pinned to matchOperatorInstallProfile.Follow-up (only if operator nightly still red)
flavours: []should remove thelightspeed-coresidecar. Operator CI still uses helm value-fileincludes: [dynamic-plugins.default.yaml]. Helm is already green with that list — leave it alone unless a retest CrashLoops withoutlightspeed-core, then pinincludes: [](or disable the bad OCI) on the operator path.Test plan
Rebased onto
main; tip is823bbd91. Re-trigger nightlies after the force-push:cd e2e-tests && yarn test:unitcd e2e-tests && yarn lint/yarn fmt:check/test e2e-ocp-helm-nightly/test e2e-ocp-helm-localization-nightly/test e2e-ocp-operator-nightly— expect nolightspeed-core; no CrashLoop on showcase / showcase-rbac/test e2e-ocp-operator-auth-providers-nightly— OIDC autologout + provider flows green"Welcome back!"failure