ui tests: Windows MSI installer GUI tests on a GitHub runner (install folder, update, uninstall)

This commit is contained in:
Narasimha-sc committed 2026-10-21 08:51:07 +00:00
1 parent 8927c18925
commit 5362e72faa
4 files changed
+637

No files matched your search

@@ -0,0 +1,93 @@
name: windows-msi-gui-test
run-name: "Windows GUI: ${{ inputs.scenario }} ${{ inputs.label }}"
on:
workflow_dispatch:
inputs:
scenario:
description: "Scenario to run (all: every scenario except the known issue update-desktop; everything: all of them)"
required: true
default: all
type: choice
options: [all, everything, uninstall-desktop, update-desktop, update-same-build, default-folder, profile-folder, appdata-folder]
label:
description: "Free text shown in the run name"
required: false
default: ""
type: string
new_msi_run_id:
description: "Id of a workflow run that uploaded the MSI under test as an artifact (empty: use new_msi_url)"
required: false
default: ""
type: string
new_msi_artifact:
description: "Name of the MSI artifact in that run"
required: false
default: "simplex-desktop-windows-x86_64-msi"
type: string
new_msi_url:
description: "URL of the new MSI when new_msi_run_id is empty"
required: false
default: "https://github.com/simplex-chat/simplex-chat/releases/download/v7.0.3/simplex-desktop-windows-x86_64.msi"
type: string
old_msi_url:
description: "URL of the old MSI (installed before updating)"
required: false
default: "https://github.com/simplex-chat/simplex-chat/releases/download/v7.0.2/simplex-desktop-windows-x86_64.msi"
type: string
patch_with_ref:
description: "Branch whose scripts/desktop/disable-msi-install-dir-wipe-windows.ps1 is applied to the new MSI (empty: no patch)"
required: false
default: ""
type: string
permissions:
contents: read
actions: read
jobs:
windows-msi-gui-test:
runs-on: windows-latest
timeout-minutes: 60
steps:
- name: Checkout test scripts
uses: actions/checkout@v4
with:
sparse-checkout: apps/multiplatform/scripts/windows-msi
- name: Checkout MSI patch script
if: inputs.patch_with_ref != ''
uses: actions/checkout@v4
with:
ref: ${{ inputs.patch_with_ref }}
path: patchsrc
sparse-checkout: scripts/desktop
- name: Download new MSI from build run
if: inputs.new_msi_run_id != ''
uses: actions/download-artifact@v4
with:
name: ${{ inputs.new_msi_artifact }}
run-id: ${{ inputs.new_msi_run_id }}
github-token: ${{ github.token }}
path: C:\msitest\artifact
- name: Run scenarios
shell: pwsh
env:
SCENARIO: ${{ inputs.scenario }}
NEW_MSI_URL: ${{ inputs.new_msi_url }}
NEW_MSI_DIR: ${{ inputs.new_msi_run_id != '' && 'C:\msitest\artifact' || '' }}
OLD_MSI_URL: ${{ inputs.old_msi_url }}
PATCH_SCRIPT: ${{ inputs.patch_with_ref != '' && 'patchsrc\scripts\desktop\disable-msi-install-dir-wipe-windows.ps1' || '' }}
run: |
New-Item -ItemType Directory -Force C:\msitest | Out-Null
& apps/multiplatform/scripts/windows-msi/msi-scenarios.ps1 -Scenario $env:SCENARIO -NewMsiUrl $env:NEW_MSI_URL -NewMsiDir $env:NEW_MSI_DIR -OldMsiUrl $env:OLD_MSI_URL -PatchScript $env:PATCH_SCRIPT
- name: Upload evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: windows-gui-evidence
path: C:\msitest\evidence
retention-days: 30