e2e-tests-main #115
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
| # | |
| # Copyright (C) 2025 Red Hat, Inc. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # | |
| # SPDX-License-Identifier: Apache-2.0 | |
| name: e2e-tests-main | |
| on: | |
| workflow_run: | |
| workflows: ["main-build"] | |
| types: | |
| - completed | |
| workflow_dispatch: | |
| inputs: | |
| organization: | |
| default: 'redhat-developer' | |
| description: 'Organization of the Red Hat RHEL VM extension repository' | |
| type: string | |
| required: true | |
| repositoryName: | |
| default: 'podman-desktop-rhel-ext' | |
| description: 'Podman Desktop RedHat RHEL VM extension repository name' | |
| type: string | |
| required: true | |
| branch: | |
| default: 'main' | |
| description: 'Red Hat RHEL VM Extension repo branch' | |
| type: string | |
| required: true | |
| mode: | |
| description: 'Build mode for Podman Desktop' | |
| type: choice | |
| options: | |
| - production | |
| - development | |
| jobs: | |
| e2e-tests: | |
| name: Red Hat RHEL VM Extension E2E tests | |
| runs-on: ubuntu-24.04 | |
| env: | |
| MODE: ${{ inputs.mode || 'production' }} | |
| REPO: ${{ inputs.repositoryName || 'podman-desktop-rhel-ext' }} | |
| ORGANIZATION: ${{ inputs.organization || 'redhat-developer' }} | |
| BRANCH: ${{ inputs.branch || 'main' }} | |
| steps: | |
| - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_run' | |
| with: | |
| repository: ${{ env.ORGANIZATION }}/${{ env.REPO }} | |
| ref: ${{ env.BRANCH }} | |
| path: ${{ env.REPO }} | |
| - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 | |
| if: github.event_name == 'push' | |
| with: | |
| path: podman-desktop-rhel-ext | |
| - name: Setup default repository name | |
| env: | |
| EVENT: ${{ github.event_name }} | |
| run: | | |
| repository=podman-desktop-rhel-ext | |
| if [[ "$EVENT" == 'workflow_dispatch' || "$EVENT" == 'workflow_run' ]]; then | |
| repository=${{ env.REPO }} | |
| fi | |
| echo "REPOSITORY=$repository" >> $GITHUB_ENV | |
| # Checkout podman desktop | |
| - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 | |
| with: | |
| repository: podman-desktop/podman-desktop | |
| ref: main | |
| path: podman-desktop | |
| - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 | |
| name: Install pnpm | |
| with: | |
| run_install: false | |
| package_json_file: ./podman-desktop/package.json | |
| - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 | |
| with: | |
| node-version: 22 | |
| - name: Update podman v5.x | |
| uses: redhat-actions/podman-install@16601a3a718acf7d6986140459092a2f5b941a03 | |
| - name: Set default browser desktop app and handlers | |
| run: | | |
| xdg-settings set default-web-browser firefox.desktop | |
| xdg-mime default firefox.desktop x-scheme-handler/https | |
| xdg-mime default firefox.desktop x-scheme-handler/http | |
| xvfb-run xdg-open 'https://developers.redhat.com/articles/faqs-no-cost-red-hat-enterprise-linux#general' & sleep 5; pkill Xvfb | |
| # Install dbus-x11 package to allow dbus session for user for particular display (xvfb-maybe used in e2e test) | |
| # for reference, similar issue: https://github.com/actions/runner-images/issues/12127 | |
| - name: Install dbus-x11 package | |
| run: sudo apt-get install dbus-x11 | |
| # we might consider replacing with podman-desktop/e2e/.github/actions/pde2e-testenv-prepare@13e2c57c759137bfc1f437f221967461e8a98e2a | |
| # for now we do not need all three steps | |
| - name: Revert unprivileged user namespace restrictions in Ubuntu 24.04 | |
| run: | | |
| # allow unprivileged user namespace | |
| sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 | |
| - name: Set Chromium policy for Podman Desktop app redirection from browser | |
| run: | | |
| echo '{"URLAllowlist": ["podman-desktop:*"]}' > url_allow_list.json | |
| sudo mkdir -p /etc/chromium/policies/managed | |
| sudo cp url_allow_list.json /etc/chromium/policies/managed/url_allow_list.json | |
| - name: Build Podman Desktop for E2E tests Development Mode | |
| working-directory: ./podman-desktop | |
| if: ${{ env.MODE == 'development' }} | |
| run: | | |
| pnpm install | |
| pnpm test:e2e:build | |
| - name: Build Podman Desktop for E2E tests Production Mode | |
| working-directory: ./podman-desktop | |
| if: ${{ env.MODE == 'production' }} | |
| env: | |
| ELECTRON_ENABLE_INSPECT: true | |
| run: | | |
| pnpm install --frozen-lockfile | |
| pnpm compile:current --linux dir | |
| path=$(realpath ./dist/linux-unpacked/podman-desktop) | |
| echo "Podman Desktop built binary: $path" | |
| echo "PODMAN_DESKTOP_BINARY_PATH=$path" >> $GITHUB_ENV | |
| - name: Execute pnpm in Red Hat RHEL VM Extension | |
| working-directory: ${{ env.REPOSITORY }} | |
| run: | | |
| # workaround for https://github.com/containers/podman-desktop-extension-bootc/issues/712 | |
| version=$(npm view @podman-desktop/tests-playwright@next version) | |
| echo "Version of @podman-desktop/tests-playwright to be used: $version" | |
| jq --arg version "$version" '.devDependencies."@podman-desktop/tests-playwright" = $version' package.json > package.json_tmp && mv package.json_tmp package.json | |
| pnpm install --no-frozen-lockfile | |
| - name: Run All E2E tests in Red Hat RHEL VM Extension in Development Mode | |
| working-directory: ${{ env.REPOSITORY }} | |
| if: ${{ env.MODE == 'development' }} | |
| env: | |
| PODMAN_DESKTOP_ARGS: ${{ github.workspace }}/podman-desktop | |
| DVLPR_USERNAME: ${{ secrets.DVLPR_USERNAME }} | |
| DVLPR_PASSWORD: ${{ secrets.DVLPR_PASSWORD }} | |
| AUTH_E2E_TESTS: true | |
| run: | | |
| export $(dbus-launch) | |
| pnpm test:e2e | |
| - name: Run All E2E tests in Red Hat RHEL VM Extension in Production mode | |
| working-directory: ${{ env.REPOSITORY }} | |
| if: ${{ env.MODE == 'production' }} | |
| env: | |
| PODMAN_DESKTOP_BINARY: ${{ env.PODMAN_DESKTOP_BINARY_PATH }} | |
| DVLPR_USERNAME: ${{ secrets.DVLPR_USERNAME }} | |
| DVLPR_PASSWORD: ${{ secrets.DVLPR_PASSWORD }} | |
| AUTH_E2E_TESTS: true | |
| run: | | |
| export $(dbus-launch) | |
| pnpm test:e2e | |
| - name: Publish Test Report | |
| uses: mikepenz/action-junit-report@v6 | |
| if: always() # always run even if the previous step fails | |
| with: | |
| fail_on_failure: true | |
| include_passed: true | |
| annotate_only: true | |
| detailed_summary: true | |
| require_tests: true | |
| report_paths: '**/*results.xml' | |
| - name: Upload test artifacts | |
| uses: actions/upload-artifact@v5 | |
| if: always() | |
| with: | |
| name: e2e-tests | |
| path: ./**/tests/**/output/ |