Merge branch 't3chguy/test-release-assets' of https://github.com/vector-im/element-desktop into t3chguy/safeStorage

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

# Conflicts:
#	.github/workflows/build_and_test.yaml
This commit is contained in:
Michael Telatynski 2025-04-14 16:52:54 +01:00
commit a08aa8ee84
No known key found for this signature in database
GPG Key ID: A2B008A5F49F5D0D
5 changed files with 109 additions and 110 deletions

View File

@ -13,8 +13,8 @@ jobs:
permissions: permissions:
contents: read contents: read
with: with:
config: ${{ github.event.pull_request.base.ref == 'develop' && 'element.io/nightly' || 'element.io/release' }} config: ${{ (github.event.pull_request.base.ref || github.ref_name) == 'develop' && 'element.io/nightly' || 'element.io/release' }}
version: ${{ github.event.pull_request.base.ref == 'develop' && 'develop' || '' }} version: ${{ (github.event.pull_request.base.ref || github.ref_name) == 'develop' && 'develop' || '' }}
windows: windows:
needs: fetch needs: fetch
@ -43,112 +43,8 @@ jobs:
name: macOS name: macOS
uses: ./.github/workflows/build_macos.yaml uses: ./.github/workflows/build_macos.yaml
test: complete:
needs: needs: [windows, linux, macos]
- macos runs-on: ubuntu-22.04
- linux
- windows
strategy:
fail-fast: false
matrix:
include:
- name: macOS Universal
os: macos-14
artifact: macos
executable: "/Users/runner/Applications/Element.app/Contents/MacOS/Element"
# We need to mount the DMG and copy the app to the Applications folder as a mounted DMG is
# read-only and thus would not allow us to override the fuses as is required for Playwright.
prepare_cmd: |
hdiutil attach ./dist/*.dmg -mountpoint /Volumes/Element &&
rsync -a /Volumes/Element/Element.app ~/Applications/ &&
hdiutil detach /Volumes/Element
- name: "Linux (amd64) (sqlcipher: system)"
os: ubuntu-22.04
artifact: linux-amd64-sqlcipher-system
executable: "/opt/Element/element-desktop"
prepare_cmd: |
sudo apt-get -qq update
sudo apt install ./dist/*.deb
sudo apt install -y gnome-keyring dbus-user-session dbus dbus-x11
gnome-keyring-daemon --unlock
- name: "Linux (amd64) (sqlcipher: static)"
os: ubuntu-22.04
artifact: linux-amd64-sqlcipher-static
executable: "/opt/Element/element-desktop"
prepare_cmd: |
sudo apt-get -qq update
sudo apt install ./dist/*.deb
sudo apt install -y gnome-keyring dbus-user-session dbus dbus-x11
gnome-keyring-daemon --unlock
- name: "Linux (arm64) (sqlcipher: system)"
os: ubuntu-22.04-arm
artifact: linux-arm64-sqlcipher-system
executable: "/opt/Element/element-desktop"
prepare_cmd: |
sudo apt-get -qq update
sudo apt install ./dist/*.deb
sudo apt install -y gnome-keyring dbus-user-session dbus dbus-x11
gnome-keyring-daemon --unlock
- name: "Linux (arm64) (sqlcipher: static)"
os: ubuntu-22.04-arm
artifact: linux-arm64-sqlcipher-static
executable: "/opt/Element/element-desktop"
prepare_cmd: |
sudo apt-get -qq update
sudo apt install ./dist/*.deb
sudo apt install -y gnome-keyring dbus-user-session dbus dbus-x11
gnome-keyring-daemon --unlock
- name: Windows (x86)
os: windows-2022
artifact: win-ia32
executable: "./dist/win-ia32-unpacked/Element.exe"
- name: Windows (x64)
os: windows-2022
artifact: win-x64
executable: "./dist/win-unpacked/Element.exe"
name: Test ${{ matrix.name }}
runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v4 - run: echo "Tests successful"
- uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: "yarn"
- name: Install Deps
run: "yarn install --frozen-lockfile"
- uses: actions/download-artifact@v4
with:
name: ${{ matrix.artifact }}
path: dist
- name: Prepare for tests
run: ${{ matrix.prepare_cmd }}
if: matrix.prepare_cmd
# We previously disabled the `EnableNodeCliInspectArguments` fuse, but Playwright requires
# it to be enabled to test Electron apps, so turn it back on.
- name: Set EnableNodeCliInspectArguments fuse enabled
run: $RUN_AS npx @electron/fuses write --app ${{ matrix.executable }} EnableNodeCliInspectArguments=on
shell: bash
env:
# We need sudo on Linux as it is installed in /opt/
RUN_AS: ${{ runner.os == 'Linux' && 'sudo' || '' }}
- name: Run tests
uses: coactions/setup-xvfb@6b00cf1889f4e1d5a48635647013c0508128ee1a
timeout-minutes: 10
with:
run: "yarn test ${{ runner.os != 'Linux' && '--ignore-snapshots' || '' }}"
env:
ELEMENT_DESKTOP_EXECUTABLE: ${{ matrix.executable }}
- name: Upload HTML report
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}-test
path: playwright/html-report
retention-days: 14

View File

@ -183,3 +183,14 @@ jobs:
test -f ./dist/element-desktop*.tar.gz test -f ./dist/element-desktop*.tar.gz
env: env:
ARCH: ${{ inputs.arch }} ARCH: ${{ inputs.arch }}
test:
needs: build
uses: ./.github/workflows/build_test.yaml
with:
artifact: linux-${{ inputs.arch }}-sqlcipher-${{ inputs.sqlcipher }}
runs-on: ${{ inputs.arch == 'arm64' && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }}
executable: /opt/Element/element-desktop
prepare_cmd: |
sudo apt-get -qq update
sudo apt install ./dist/*.deb

View File

@ -145,3 +145,17 @@ jobs:
run: | run: |
test -f ./dist/Element*.dmg test -f ./dist/Element*.dmg
test -f ./dist/Element*-mac.zip test -f ./dist/Element*-mac.zip
test:
needs: build
uses: ./.github/workflows/build_test.yaml
with:
artifact: macos
runs-on: macos-14
executable: /Users/runner/Applications/Element.app/Contents/MacOS/Element
# We need to mount the DMG and copy the app to the Applications folder as a mounted DMG is
# read-only and thus would not allow us to override the fuses as is required for Playwright.
prepare_cmd: |
hdiutil attach ./dist/*.dmg -mountpoint /Volumes/Element &&
rsync -a /Volumes/Element/Element.app ~/Applications/ &&
hdiutil detach /Volumes/Element

68
.github/workflows/build_test.yaml vendored Normal file
View File

@ -0,0 +1,68 @@
# This action helps run Playwright tests within one of the build_* stages.
on:
workflow_call:
inputs:
runs-on:
type: string
required: true
description: "The runner image to use"
artifact:
type: string
required: true
description: "The name of the artifact to download"
executable:
type: string
required: true
description: "Path to the executable to test"
prepare_cmd:
type: string
required: false
description: "Command to run to prepare the executable or environment for testing"
permissions: {}
jobs:
test:
runs-on: ${{ inputs.runs-on }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: "yarn"
- name: Install Deps
run: "yarn install --frozen-lockfile"
- uses: actions/download-artifact@v4
with:
name: ${{ inputs.artifact }}
path: dist
- name: Prepare for tests
run: ${{ inputs.prepare_cmd }}
if: inputs.prepare_cmd
# We previously disabled the `EnableNodeCliInspectArguments` fuse, but Playwright requires
# it to be enabled to test Electron apps, so turn it back on.
- name: Set EnableNodeCliInspectArguments fuse enabled
run: $RUN_AS npx @electron/fuses write --app ${{ inputs.executable }} EnableNodeCliInspectArguments=on
shell: bash
env:
# We need sudo on Linux as it is installed in /opt/
RUN_AS: ${{ runner.os == 'Linux' && 'sudo' || '' }}
- name: Run tests
uses: coactions/setup-xvfb@6b00cf1889f4e1d5a48635647013c0508128ee1a
timeout-minutes: 10
with:
run: "yarn test ${{ runner.os != 'Linux' && '--ignore-snapshots' || '' }}"
env:
ELEMENT_DESKTOP_EXECUTABLE: ${{ inputs.executable }}
- name: Upload HTML report
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact }}-test
path: playwright/html-report
retention-days: 14

View File

@ -216,3 +216,13 @@ jobs:
Test-Path './dist/squirrel-windows*/element-desktop-*-full.nupkg' Test-Path './dist/squirrel-windows*/element-desktop-*-full.nupkg'
Test-Path './dist/squirrel-windows*/RELEASES' Test-Path './dist/squirrel-windows*/RELEASES'
Test-Path './dist/Element*.msi' Test-Path './dist/Element*.msi'
test:
needs: build
uses: ./.github/workflows/build_test.yaml
# We have no Windows ARM64 runners at this time
if: inputs.arch != 'arm64'
with:
artifact: win-${{ inputs.arch }}
runs-on: windows-2022
executable: ${{ inputs.arch == 'ia32' && './dist/win-ia32-unpacked/Element.exe' || './dist/win-unpacked/Element.exe' }}