keycloak/.github/workflows/stability-js-ci.yml
forkimenjeckayang f3bd3dcd2e
[OID4VCI] Extend realm UI configuration by OID4VCI attributes (#41757)
* Extend realm UI configuration by OID4VCI attributes

Closes #39533

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: adjust tests in oid4vci-attributes.spec.ts based on feature availability

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: directly check OID4VCI feature from server info in tests before running

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: address comment(s) by @IngridPuppet

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: skip tests when oid4vci feature is not enabled

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: move oid4vc realm attributes setting to token tab

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: refactor tokens tab and restructure oid4vci attributes tests

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: apply review comments by @jonkoops

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: refactored tests to use createTestBed()

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: apply changes by @jonkoops

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: address review comments

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: change test format

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: enable oid4vc feature in worfklows

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* Update .github/workflows/stability-js-ci.yml

Co-authored-by: Jon Koops <jonkoops@gmail.com>
Signed-off-by: forkimenjeckayang <104195313+forkimenjeckayang@users.noreply.github.com>

* fix: included required fields in tokens.ts as fix for CI tests

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

* update: address more review comments

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>

---------

Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>
Signed-off-by: forkimenjeckayang <104195313+forkimenjeckayang@users.noreply.github.com>
Co-authored-by: Jon Koops <jonkoops@gmail.com>
2025-09-18 13:30:34 -04:00

168 lines
5.5 KiB
YAML

name: Stability - Keycloak JavaScript CI
on:
workflow_dispatch:
env:
MAVEN_ARGS: "-B -nsu -Daether.connector.http.connectionMaxTtl=25"
defaults:
run:
shell: bash
jobs:
build-keycloak:
name: Build Keycloak
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Build Keycloak
uses: ./.github/actions/build-keycloak
- name: Prepare archive for upload
run: |
mv ./quarkus/dist/target/keycloak-999.0.0-SNAPSHOT.tar.gz ./keycloak-999.0.0-SNAPSHOT.tar.gz
- name: Upload Keycloak dist
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: keycloak
path: keycloak-999.0.0-SNAPSHOT.tar.gz
account-ui-e2e:
name: Account UI E2E
needs:
- build-keycloak
runs-on: ubuntu-latest
env:
WORKSPACE: "@keycloak/keycloak-account-ui"
strategy:
matrix:
browser: [chromium, firefox]
exclude:
# Only test with Firefox on scheduled runs
- browser: ${{ github.event_name != 'workflow_dispatch' && 'firefox' || '' }}
fail-fast: false
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: ./.github/actions/pnpm-setup
- name: Download Keycloak server
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: keycloak
- name: Setup Java
uses: ./.github/actions/java-setup
- name: Start Keycloak server
run: |
tar xfvz keycloak-999.0.0-SNAPSHOT.tar.gz
keycloak-999.0.0-SNAPSHOT/bin/kc.sh start-dev --features=transient-users,oid4vc-vci &> ~/server.log &
env:
KC_BOOTSTRAP_ADMIN_USERNAME: admin
KC_BOOTSTRAP_ADMIN_PASSWORD: admin
- name: Install Playwright browsers
run: pnpm --fail-if-no-match --filter ${{ env.WORKSPACE }} exec playwright install --with-deps
working-directory: js
- name: Run Playwright tests
run: pnpm --fail-if-no-match --filter ${{ env.WORKSPACE }} test -- --project=${{ matrix.browser }}
working-directory: js
- name: Upload Playwright report
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: failure()
with:
name: account-ui-playwright-report-${{ matrix.browser }}
path: js/apps/account-ui/playwright-report
retention-days: 7
- name: Upload server logs
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: account-ui-server-log-${{ matrix.browser }}
path: ~/server.log
retention-days: 7
admin-ui-e2e:
name: Admin UI E2E
needs:
- build-keycloak
runs-on: ubuntu-latest
env:
WORKSPACE: "@keycloak/keycloak-admin-ui"
strategy:
matrix:
browser: [chromium, firefox]
exclude:
# Only test with Firefox on scheduled runs
- browser: ${{ github.event_name != 'workflow_dispatch' && 'firefox' || '' }}
fail-fast: false
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: ./.github/actions/pnpm-setup
- name: Download Keycloak server
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: keycloak
- name: Setup Java
uses: ./.github/actions/java-setup
- name: Start Keycloak server
run: |
tar xfvz keycloak-999.0.0-SNAPSHOT.tar.gz
keycloak-999.0.0-SNAPSHOT/bin/kc.sh start-dev --features=admin-fine-grained-authz:v2,transient-users,spiffe,oid4vc-vci &> ~/server.log &
env:
KC_BOOTSTRAP_ADMIN_USERNAME: admin
KC_BOOTSTRAP_ADMIN_PASSWORD: admin
KC_BOOTSTRAP_ADMIN_CLIENT_ID: temporary-admin-service
KC_BOOTSTRAP_ADMIN_CLIENT_SECRET: temporary-admin-service
- name: Install Playwright browsers
run: pnpm --fail-if-no-match --filter ${{ env.WORKSPACE }} exec playwright install --with-deps
working-directory: js
- name: Run Playwright tests
run: pnpm --fail-if-no-match --filter ${{ env.WORKSPACE }} test:integration -- --project=${{ matrix.browser }}
working-directory: js
- name: Upload Playwright report
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: failure()
with:
name: admin-ui-playwright-report-${{ matrix.browser }}
path: js/apps/admin-ui/playwright-report
retention-days: 7
- name: Upload server logs
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: admin-ui-server-log-${{ matrix.browser }}
path: ~/server.log
retention-days: 7
delete-artifacts:
name: Delete artifacts
needs:
- account-ui-e2e
- admin-ui-e2e
runs-on: ubuntu-latest
if: always()
env:
GH_TOKEN: ${{ github.token }}
steps:
- name: Delete artifacts (excluding Playwright reports and server logs)
run: |
gh api /repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts \
| jq '.artifacts[] | select(.name | test("playwright-report|server-log") | not) | .id' \
| xargs -I {} gh api -X DELETE /repos/${{ github.repository }}/actions/artifacts/{}