Test: cluster-free E2E workflow from fork#83
Open
kadel wants to merge 10 commits into
Open
Conversation
Run real Playwright E2E against RHDH without an OpenShift/Kubernetes cluster or container images — Playwright boots the backend and a frontend dev server in-process and drives the browser against them. - Legacy harness (Tier B, recommended): targets packages/app with dynamic plugins loaded via Scalprum, so the EXISTING specs run unmodified. Verified the production RHDH home page (Quick Access from the dynamic home-page plugin) renders off-cluster and the guest-signin home-page test passes. - app-next harness: targets the new frontend system; covers core/statically registered plugin UIs (dynamic frontend loading is blocked upstream — see doc). - Shared guest-auth + in-memory-SQLite overlay (app-config.local-e2e.yaml); webServer invokes backstage-cli/janus-cli from the repo-root .bin. - yarn scripts: e2e:legacy-local, e2e:app-next-local. Part of RHIDP-13501 (E2E Test Optimization), Layer 4a spike RHIDP-15075. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Scope legacy testMatch to the spec verified to pass off-cluster (learning-path-page); document the others as pending the global-header mount fix / per-spec config so the default run is green. - Guard PATH interpolation against an undefined process.env.PATH via a shared pathWithRepoBin constant in both configs. - Default CATALOG_INDEX_IMAGE to quay.io/rhdh/plugin-catalog-index:latest for main (release branches use the matching :1.y tag). - Note that the guest-auth overlay is test-only and must never reach a production config; drop a duplicated comment. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The chosen direction is the legacy cluster-free harness (packages/app), which runs the existing specs unmodified. The app-next harness can't load dynamic plugins yet (blocked upstream), so it's removed from this PR and tracked as a follow-up; a short note in the doc records why legacy is the target. - Remove playwright.app-next-local.config.ts and its guest-identity.spec.ts. - Remove the e2e:app-next-local script. - Make the overlay and docs legacy-only (keep a "why not app-next yet" note). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Scope the default run to the one verified-green test (guest-signin home-page) via testMatch + grep, instead of an unvalidated spec whose sidebar navigation may not match the harness config. - Add a globalSetup that fails fast with the populate command when dynamic-plugins-root is empty (clear error instead of a locator timeout). - Build the shared --config args via array join; document workers=1 and that the backend command mirrors packages/backend's start script. - Doc: describe the grep-scoped default run and the fail-fast guard. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…h 80) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add .github/workflows/e2e-cluster-free.yaml: a no-cluster job that installs deps + skopeo, populates dynamic-plugins-root from the public catalog index via the install-dynamic-plugins CLI (same mechanism as the nightly sanity check), boots the backend + legacy app dev servers in-process, and runs yarn e2e:legacy-local. Triggers on e2e-tests/** and app-config*.yaml. Follows the project workflow-security rules: pull_request (no secrets, public image), pinned action SHAs, minimal permissions, concurrency control. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The 'Install Playwright browser' step hung on 'playwright install --with-deps' (its apt phase); drop --with-deps since ubuntu-latest already has the libs headless chromium needs. Add setup-node yarn caching for both lockfiles to cut the slow root install on subsequent runs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Use mcr.microsoft.com/playwright:v1.59.1-noble (browsers + OS deps preinstalled, matching @playwright/test 1.59.1) to eliminate the playwright-install step that hung on plain ubuntu runners. Enable corepack for the vendored yarn 4 and cache the yarn global cache explicitly (the container lacks the yarn binary setup-node's cache relies on). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ree-e2e-harness # Conflicts: # e2e-tests/package.json
…ation main migrated e2e-tests from ESLint/Prettier/tsc to oxlint + oxfmt. Reformat the harness files with oxfmt and satisfy oxlint: a shared isCI constant (process.env.CI !== undefined && !== ''), nullish coalescing, the regexp u flag, and no inline comments. Matches the pattern in playwright.config.ts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Testing if e2e-cluster-free.yaml runs without repo-specific secrets or environment variables.
Validates that the workflow from redhat-developer#5005 is fully self-contained.
Made with Cursor