Skip to content

Release 1.26.0 (#1155) #33

Release 1.26.0 (#1155)

Release 1.26.0 (#1155) #33

name: E2E Regression
# Runs the full E2E test suite (all @smoke + @regression tests).
# Triggered nightly and on every push to the long-lived branches.
# PR CI only runs @smoke tests (see ci.yml).
on:
schedule:
- cron: "0 2 * * *" # Daily at 02:00 UTC
push:
branches: [develop, main]
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
e2e-desktop-regression:
runs-on: ubuntu-latest
# Run all tests in parallel across 4 shards
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3, 4]
name: e2e-desktop-regression (ubuntu-latest) [${{ matrix.shard }}/4]
# Set a fixed timezone to ensure consistent test results.
# Lichtblick uses the system's local timezone, which can cause test assertions
# to fail due to time discrepancies across different environments.
env:
TZ: Europe/Lisbon
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
- run: corepack enable yarn
- name: Restore cache
uses: actions/cache@v5
with:
path: |
.yarn/cache
**/node_modules
key: v5-${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: v5-${{ runner.os }}-yarn-
- run: yarn install --immutable
- name: Apply AppArmor Fix (Ubuntu)
# Required for Playwright on Ubuntu to work properly
# See: https://github.com/microsoft/playwright/issues/34251
run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
# It must be dev build, otherwise playwright won't have all data-testid available for icons
# https://mui.com/material-ui/migration/upgrade-to-v7/#svgicons-data-testid-removed
- name: Build desktop app
run: yarn desktop:build:dev
- name: Run E2E Desktop regression tests - Shard ${{ matrix.shard }}/4
uses: coactions/setup-xvfb@v1
with:
working-directory: ./
run: yarn test:e2e:desktop:ci --shard=${{ matrix.shard }}/4
- name: Upload Desktop E2E Test Reports (Shard ${{ matrix.shard }})
if: always()
uses: actions/upload-artifact@v7
with:
name: blob-report-regression-desktop-${{ matrix.shard }}
path: blob-report
retention-days: 1
e2e-web-regression:
runs-on: ubuntu-latest
name: e2e-web-regression (ubuntu-latest)
env:
TZ: Europe/Lisbon
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
- run: corepack enable yarn
- name: Restore cache
uses: actions/cache@v5
with:
path: |
.yarn/cache
**/node_modules
key: v5-${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: v5-${{ runner.os }}-yarn-
- run: yarn install --immutable
- name: Install Playwright Browsers
run: npx playwright install --with-deps chromium
- name: Run E2E Web regression tests
run: yarn test:e2e:web:ci
- name: Upload Web E2E Test Reports
if: always()
uses: actions/upload-artifact@v7
with:
name: e2e-regression-web-reports
path: e2e/reports/web/
retention-days: 7
if-no-files-found: warn
# Merge reports from all shards and generate summary
e2e-regression-report:
if: always()
needs: [e2e-desktop-regression, e2e-web-regression]
runs-on: ubuntu-latest
name: e2e-regression-report (merge all reports)
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
- run: corepack enable yarn
- name: Restore cache
uses: actions/cache@v5
with:
path: |
.yarn/cache
**/node_modules
key: v5-${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: v5-${{ runner.os }}-yarn-
- run: yarn install --immutable
- name: Download all desktop blob reports
uses: actions/download-artifact@v8
with:
pattern: blob-report-regression-desktop-*
path: all-blob-reports-desktop
merge-multiple: true
- name: Download web reports
uses: actions/download-artifact@v8
with:
name: e2e-regression-web-reports
path: e2e/reports/web
continue-on-error: true
- name: Merge Desktop Playwright reports
run: |
mkdir -p e2e/reports/desktop
echo "Downloaded desktop blob reports:"
ls -la all-blob-reports-desktop/ || echo "No desktop blob reports found"
# Merge blob reports into JSON format
npx playwright merge-reports --reporter json ./all-blob-reports-desktop > e2e/reports/desktop/results.json
# Also generate HTML report
npx playwright merge-reports --reporter html ./all-blob-reports-desktop
echo "Merged desktop report size:"
ls -lh e2e/reports/desktop/results.json
- name: Generate E2E Test Summary
run: |
echo "Generating E2E regression test summary from merged reports..."
yarn ts-node e2e/ci-helpers/generate-test-summary.ts >> $GITHUB_STEP_SUMMARY
- name: Upload Merged E2E Test Reports
if: always()
uses: actions/upload-artifact@v7
with:
name: e2e-regression-reports-merged
path: |
e2e/reports/
playwright-report/
retention-days: 7