Skip to content

Extend the E2E tests to be run on windows #522

Extend the E2E tests to be run on windows

Extend the E2E tests to be run on windows #522

Workflow file for this run

#
# Copyright (C) 2022-2024 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: pr-check
on: [pull_request]
jobs:
windows:
name: Windows
runs-on: windows-2022
timeout-minutes: 60
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> ${env:GITHUB_OUTPUT}
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: yarn
run: |
yarn --frozen-lockfile --network-timeout 180000
- name: Run Build
timeout-minutes: 20
run: yarn build
darwin:
name: macOS
runs-on: macos-14
timeout-minutes: 40
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> ${GITHUB_OUTPUT}
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Execute yarn
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
run: yarn --frozen-lockfile --network-timeout 180000
- name: Run Build
timeout-minutes: 20
run: yarn build
lint-format-unit:
name: linter, formatters and unit tests
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> ${GITHUB_OUTPUT}
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Execute yarn
run: yarn --frozen-lockfile
- name: Run linter
run: yarn lint:check
- name: Run formatter
run: yarn format:check
- name: Run Tests
run: yarn test
build-extension:
name: build crc extension and upload image artifact
runs-on: ubuntu-24.04
steps:
- name: checkout extension's code
uses: actions/checkout@v4
with:
path: crc-extension
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Ensure getting current HEAD version of the test framework (ubuntu)
working-directory: ./crc-extension
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
shell: bash
- name: Execute yarn in OpenShift Local Extension
working-directory: ./crc-extension
run: yarn
- 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: Build OpenShift Local extension from container file (Ubuntu, podman)
working-directory: ./crc-extension
run: |
podman build -t openshift_local_image . -f ./oci/Containerfile.multistage
podman save -o crc-extension-artifact.tar openshift_local_image
# CONTAINER_ID_CRC=$(podman create localhost/openshift_local_image --entrypoint "")
# podman export $CONTAINER_ID_CRC > /tmp/openshift_local_extension.tar
# mkdir -p tests/playwright/output/crc-tests-pd/plugins
# podman pull ghcr.io/redhat-developer/podman-desktop-redhat-account-ext:latest
# CONTAINER_ID_SSO=$(podman create ghcr.io/redhat-developer/podman-desktop-redhat-account-ext --entrypoint "")
# podman export $CONTAINER_ID_SSO > /tmp/sso_extension.tar
# tar -xf /tmp/openshift_local_extension.tar -C tests/playwright/output/crc-tests-pd/plugins/
# mv tests/playwright/output/crc-tests-pd/plugins/extension/ tests/playwright/output/crc-tests-pd/plugins/crcextension
# # does this output match the one from the locally built version?
# ls -l tests/playwright/output/crc-tests-pd/plugins/crcextension
# tar -xf /tmp/sso_extension.tar -C tests/playwright/output/crc-tests-pd/plugins/
# mv tests/playwright/output/crc-tests-pd/plugins/extension/ tests/playwright/output/crc-tests-pd/plugins/ssoextension
- name: Upload extension's artifact
uses: actions/upload-artifact@v4
with:
name: crc-extension-artifact
path: crc-extension-artifact.tar
e2e-tests:
name: e2e tests for ${{ matrix.os }}
needs: build-extension
strategy:
fail-fast: false
matrix:
os: [windows-2022, ubuntu-24.04] #, macos-14
runs-on: ${{ matrix.os }}
env:
SKIP_INSTALLATION: true
steps:
# - uses: actions/checkout@v4
# with:
# path: crc-extension
# Checkout podman desktop
- uses: actions/checkout@v4
with:
repository: containers/podman-desktop
ref: main
path: podman-desktop
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
run_install: false
package_json_file: ./podman-desktop/package.json
- name: Execute pnpm
working-directory: ./podman-desktop
run: pnpm install
- name: Build Podman Desktop for E2E tests
working-directory: ./podman-desktop
run: pnpm test:e2e:build
# - name: Ensure getting current HEAD version of the test framework (windows)
# if: matrix.os == 'windows-2022'
# working-directory: ./crc-extension
# run: |
# # workaround for https://github.com/containers/podman-desktop-extension-bootc/issues/712
# $version = npm view @podman-desktop/tests-playwright@next version
# Write-Host "Version of @podman-desktop/tests-playwright to be used: $version"
# $packageJson = Get-Content -Raw -Path package.json | ConvertFrom-Json
# $packageJson.devDependencies."@podman-desktop/tests-playwright" = $version
# $packageJson | ConvertTo-Json -Depth 100 | Set-Content -Path package.json -Encoding utf8
# shell: powershell
# - name: Ensure getting current HEAD version of the test framework (ubuntu)
# if: matrix.os == 'ubuntu-24.04'
# working-directory: ./crc-extension
# 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
# shell: bash
# - name: Execute yarn in OpenShift Local Extension
# working-directory: ./crc-extension
# run: yarn
#
# - name: Revert unprivileged user namespace restrictions in Ubuntu 24.04
# if: matrix.os == 'ubuntu-24.04'
# run: |
# # allow unprivileged user namespace
# sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
- name: Build OpenShift Local extension from container file (Ubuntu, podman)
if: matrix.os == 'ubuntu-24.04'
working-directory: ./crc-extension
run: |
# podman build -t openshift_local_image . -f ./oci/Containerfile.multistage
podman load -i crc-extension-artifact.tar
CONTAINER_ID_CRC=$(podman create localhost/openshift_local_image --entrypoint "")
podman export $CONTAINER_ID_CRC > /tmp/openshift_local_extension.tar
mkdir -p tests/playwright/output/crc-tests-pd/plugins
podman pull ghcr.io/redhat-developer/podman-desktop-redhat-account-ext:latest
CONTAINER_ID_SSO=$(podman create ghcr.io/redhat-developer/podman-desktop-redhat-account-ext --entrypoint "")
podman export $CONTAINER_ID_SSO > /tmp/sso_extension.tar
tar -xf /tmp/openshift_local_extension.tar -C tests/playwright/output/crc-tests-pd/plugins/
mv tests/playwright/output/crc-tests-pd/plugins/extension/ tests/playwright/output/crc-tests-pd/plugins/crcextension
# does this output match the one from the locally built version?
ls -l tests/playwright/output/crc-tests-pd/plugins/crcextension
tar -xf /tmp/sso_extension.tar -C tests/playwright/output/crc-tests-pd/plugins/
mv tests/playwright/output/crc-tests-pd/plugins/extension/ tests/playwright/output/crc-tests-pd/plugins/ssoextension
# - name: Build OpenShift Local extension locally (Windows, docker) #from container file is not available yet
# if: matrix.os == 'windows-2022'
# working-directory: ./crc-extension
# shell: pwsh
# run: |
# # generate 'openshift-local.cdix':
# pnpm build
# # put the contents into its expected folder:
# New-Item -ItemType Directory -Path tests\playwright\output\crc-tests-pd\plugins -Force
# Get-ChildItem -Path "$(pwd)"
# Get-ChildItem -Path "$(pwd)\tests\playwright\output\crc-tests-pd\plugins\crcextension"
# Expand-Archive -Path "$(pwd)\openshift-local.cdix" -DestinationPath "$(pwd)\tests\playwright\output\crc-tests-pd\plugins\crcextension"
# # does this output match the one from the containerfile built version?
# Get-ChildItem -Path "$(pwd)\tests\playwright\output\crc-tests-pd\plugins\crcextension"
#
# # build sso dependency from containerfile:
# #docker build -t openshift_local_image . -f ./oci/Containerfile.multistage
# #$CONTAINER_ID_CRC = docker create openshift_local_image --entrypoint ""
# #docker export $CONTAINER_ID_CRC > C:\temp\openshift_local_extension.tar
# #New-Item -ItemType Directory -Path tests\playwright\output\crc-tests-pd\plugins -Force
# docker pull ghcr.io/redhat-developer/podman-desktop-redhat-account-ext:latest
# $CONTAINER_ID_SSO = docker create ghcr.io/redhat-developer/podman-desktop-redhat-account-ext --entrypoint ""
# docker export $CONTAINER_ID_SSO > C:\temp\sso_extension.tar
# #tar -xf C:\temp\openshift_local_extension.tar -C tests\playwright\output\crc-tests-pd\plugins\
# #Move-Item tests\playwright\output\crc-tests-pd\plugins\extension\ tests\playwright\output\crc-tests-pd\plugins\crcextension
# tar -xf C:\temp\sso_extension.tar -C tests\playwright\output\crc-tests-pd\plugins\
# Move-Item tests\playwright\output\crc-tests-pd\plugins\extension\ tests\playwright\output\crc-tests-pd\plugins\ssoextension
- name: Run All E2E tests
working-directory: ./crc-extension
env:
PODMAN_DESKTOP_ARGS: ${{ github.workspace }}/podman-desktop
run: yarn test:e2e
- uses: actions/upload-artifact@v4
if: always()
with:
name: e2e-tests
path: ./**/tests/**/output/