Skip to content

feat(e2e): cluster-free local E2E harness (legacy app, Tier B) #1

feat(e2e): cluster-free local E2E harness (legacy app, Tier B)

feat(e2e): cluster-free local E2E harness (legacy app, Tier B) #1

name: E2E Cluster-free Harness
# Runs the cluster-free local E2E harness (RHIDP-13501 / RHIDP-15075): boots the
# backend and the legacy app dev server in-process and drives Playwright against
# them, with dynamic plugins pulled from the public catalog index via the
# install-dynamic-plugins CLI (skopeo). No OpenShift/Kubernetes cluster or image.
# See docs/e2e-tests/local-e2e-harness.md.
on:
pull_request:
paths:
- "e2e-tests/**"
- "app-config*.yaml"
- ".github/workflows/e2e-cluster-free.yaml"
push:
branches:
- "main"
- "release-*"
paths:
- "e2e-tests/**"
- "app-config*.yaml"
- ".github/workflows/e2e-cluster-free.yaml"
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
# Public index; release branches can override to the matching :1.y tag.
CATALOG_INDEX_IMAGE: quay.io/rhdh/plugin-catalog-index:latest
jobs:
legacy-local:
name: Cluster-free E2E (legacy app)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version-file: ".nvmrc"
- name: Install skopeo
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends skopeo
- name: Install dependencies (root)
run: yarn install
- name: Install dependencies (e2e-tests)
working-directory: ./e2e-tests
run: yarn install --mode=skip-build
- name: Install Playwright browser
working-directory: ./e2e-tests
run: yarn playwright install --with-deps chromium
- name: Populate dynamic-plugins-root from the catalog index
# Mirrors the install-dynamic-plugins flow used by the nightly sanity check:
# an empty plugin list + CATALOG_INDEX_IMAGE pulls the default plugin set
# (incl. the dynamic home-page plugin) from the public index via skopeo.
run: |
mkdir -p dynamic-plugins-root
printf 'plugins: []\n' > dynamic-plugins.yaml
cp dynamic-plugins.yaml dynamic-plugins-root/dynamic-plugins.yaml
npx -y @red-hat-developer-hub/cli-module-install-dynamic-plugins@0.2.0 install dynamic-plugins-root
- name: Run cluster-free E2E (legacy app)
working-directory: ./e2e-tests
run: yarn e2e:legacy-local
- name: Upload Playwright report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: playwright-report-legacy-local
path: e2e-tests/playwright-report-legacy-local
retention-days: 7