Skip to content

e2e-tests-main

e2e-tests-main #249

Workflow file for this run

#
# 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: podman-desktop/podman-desktop
ref: main
path: podman-desktop
- uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3
name: Install pnpm
with:
run_install: false
package_json_file: ./podman-desktop/package.json
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
- 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@v7
if: always()
with:
name: e2e-tests
path: ./**/tests/**/output/