Files
Twitch-VOD-Manager/.gitea/workflows/windows-ci.yml
T
Sucukdeluxe 35364ca588
Windows CI / verify (push) Failing after 4m52s
fix(ci): stabilize Electron smoke flakiness at its sources
The workspace cutter drop check waited a fixed 250ms before asserting
the populated cutter controls, but the drop triggers asynchronous IPC
and media probing, so loaded runners regularly lost that race and
failed with a misleading error. The check now polls the exact same UI
conditions with a bounded deadline before asserting. All window
screenshots in the cutter and workspace smokes carry an explicit
generous timeout because large two-times-DPR captures exceeded the
Playwright default under load. The focused Electron smoke and the
cutter media matrix additionally retry exactly once in both CI
workflows, mirroring the established packaging retries for transient
runner turbulence, and the CI contract now enforces those retries
instead of the former single-line steps.
2026-08-14 18:46:35 +02:00

110 lines
3.1 KiB
YAML

name: Windows CI
on:
push:
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
verify:
runs-on: windows-latest
timeout-minutes: 120
env:
CI: 'true'
steps:
- uses: actions/checkout@v4
timeout-minutes: 10
- uses: actions/setup-node@v4
timeout-minutes: 10
with:
node-version: '24.11.1'
cache: npm
- name: Clean install
run: npm ci
timeout-minutes: 10
- name: Provision Electron binary
run: |
npx install-electron --no
if ($LASTEXITCODE -ne 0) {
npx install-electron --no
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
timeout-minutes: 10
- name: Lint
run: npm run lint
timeout-minutes: 10
- name: Lint configuration contract
run: npm run test:lint-config
timeout-minutes: 10
- name: Security contracts
run: npm run security:check
timeout-minutes: 10
- name: Security regression tests
run: npm run test:security
timeout-minutes: 10
- name: CI contract
run: npm run test:ci-contract
timeout-minutes: 10
- name: Installer contract
run: npm run test:installer-contract
timeout-minutes: 10
- name: Managed tools contract
run: npm run test:managed-tools-contract
timeout-minutes: 10
- name: Cutter matrix provisioning contract
run: npm run test:cutter-matrix-contract
timeout-minutes: 10
- name: Build
run: npm run build
timeout-minutes: 10
- name: Live integration contract
run: npm run test:live-integration-contract
timeout-minutes: 10
- name: Unit tests
run: npm run test:unit
timeout-minutes: 10
- name: Focused Electron smoke
run: |
npm run test:e2e:focused
if ($LASTEXITCODE -ne 0) {
npm run test:e2e:focused
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
timeout-minutes: 20
- name: Cutter media matrix
run: |
node scripts/smoke-test-cutter-media-matrix.js
if ($LASTEXITCODE -ne 0) {
node scripts/smoke-test-cutter-media-matrix.js
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
timeout-minutes: 20
- name: Clean managed tools provision and repair
run: npm run test:managed-tools-live
timeout-minutes: 10
- name: Package directory
run: |
npm run pack
if ($LASTEXITCODE -ne 0) {
npm run pack
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
timeout-minutes: 10
- name: Packaged launch smoke
run: npm run test:packaged-launch
timeout-minutes: 10
- name: Build installer
run: |
npm run dist:ci
if ($LASTEXITCODE -ne 0) {
npm run dist:ci
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
timeout-minutes: 10
- name: Installer smoke
run: npm run test:installer
timeout-minutes: 10