Skip to content

Test: Full Suite

Test: Full Suite #794

name: "Test: Full Suite"
run-name: "${{ inputs.run_name || 'Test: Full Suite' }}"
on:
workflow_dispatch:
inputs:
run_name:
description: "Custom run name:"
required: false
default: "Test: Full Suite"
type: string
run_e2e_linux:
description: "E2E Tests / Electron (Ubuntu)"
required: false
default: true
type: boolean
run_e2e_rhel:
description: "E2E Tests / Electron (RHEL)"
required: false
default: false
type: boolean
run_e2e_suse:
description: "E2E Tests / Electron (SUSE)"
required: false
default: false
type: boolean
run_e2e_sles:
description: "E2E Tests / Electron (SLES)"
required: false
default: false
type: boolean
run_e2e_debian:
description: "E2E Tests / Electron (Debian)"
required: false
default: false
type: boolean
run_e2e_windows:
description: "E2E Tests / Electron (Windows)"
required: false
default: true
type: boolean
run_e2e_browser:
description: "E2E Tests / Chromium (Ubuntu)"
required: false
default: true
type: boolean
run_e2e_browser_rhel:
description: "E2E Tests / Chromium (RHEL)"
required: false
default: false
type: boolean
run_e2e_browser_suse:
description: "E2E Tests / Chromium (SUSE)"
required: false
default: false
type: boolean
run_e2e_browser_sles:
description: "E2E Tests / Chromium (SLES)"
required: false
default: false
type: boolean
run_e2e_browser_debian:
description: "E2E Tests / Chromium (Debian)"
required: false
default: false
type: boolean
run_unit_tests:
description: "Unit Tests"
required: false
default: false
type: boolean
run_ext_host_tests:
description: "Extension Host Tests"
required: false
default: false
type: boolean
commit:
description: "Commit SHA to test:"
required: false
default: "latest"
type: string
notify_on:
description: "Slack notification on:"
required: false
default: "failures_only"
type: choice
options:
- failures_only
- always
- flaky_or_failures
- never
grep:
description: "Grep pattern:"
required: false
default: ""
type: string
enable_diagnostic_logging:
description: "Diagnostic logging"
required: false
default: false
type: boolean
jobs:
validate-commit:
name: validate-commit
if: ${{ inputs.commit != 'latest' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Validate commit exists
run: |
echo "Validating commit: ${{ inputs.commit }}"
if git cat-file -t "${{ inputs.commit }}" >/dev/null 2>&1; then
echo "✓ Commit ${{ inputs.commit }} exists"
git log -1 --format=" Subject: %s%n Author: %an%n Date: %ad" "${{ inputs.commit }}"
else
echo "✗ Commit ${{ inputs.commit }} does not exist in this repository"
echo " Make sure you're using a full SHA and the commit has been pushed"
exit 1
fi
setup:
name: setup
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (inputs.run_e2e_linux || inputs.run_e2e_browser) }}
uses: ./.github/workflows/test-e2e-ubuntu-build.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
e2e-electron:
name: e2e
needs: [setup]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_linux) }}
uses: ./.github/workflows/test-e2e-ubuntu-run.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-electron"
display_name: "electron"
install_undetectable_interpreters: true
install_license: false
allow_soft_fail: false
upload_logs: false
shards: 4
matrix: '{"shard":[1,2,3,4]}'
max_failures: 6 # 20 max failures / 4 shards = 5, rounded to 6 to avoid premature failure of the entire suite
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-windows:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_windows) }}
uses: ./.github/workflows/test-e2e-windows-run.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-windows"
display_name: "windows"
allow_soft_fail: false
upload_logs: false
shards: 4
matrix: '{"shard":[1,2,3,4]}'
max_failures: 6 # 20 max failures / 4 shards = 5, rounded to 6 to avoid premature failure of the entire suite
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-chromium:
name: e2e
needs: [setup]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_browser) }}
uses: ./.github/workflows/test-e2e-ubuntu-run.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-chromium"
display_name: "chromium"
install_undetectable_interpreters: true
install_license: true
allow_soft_fail: false
upload_logs: false
shards: 4
matrix: '{"shard":[1,2,3,4]}'
max_failures: 6 # 20 max failures / 4 shards = 5, rounded to 6 to avoid premature failure of the entire suite
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-rhel:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_rhel) }}
uses: ./.github/workflows/test-e2e-rhel.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-electron"
display_name: "electron (rhel)"
install_undetectable_interpreters: true
install_license: false
allow_soft_fail: false
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-chromium-rhel:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_browser_rhel) }}
uses: ./.github/workflows/test-e2e-rhel.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-chromium"
display_name: "chromium (rhel)"
install_undetectable_interpreters: true
install_license: true
allow_soft_fail: false
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-suse:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_suse) }}
uses: ./.github/workflows/test-e2e-suse.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-electron"
display_name: "electron (suse)"
install_undetectable_interpreters: true
install_license: false
allow_soft_fail: false
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-chromium-suse:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_browser_suse) }}
uses: ./.github/workflows/test-e2e-suse.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-chromium"
display_name: "chromium (suse)"
install_undetectable_interpreters: true
install_license: true
allow_soft_fail: false
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-sles:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_sles) }}
uses: ./.github/workflows/test-e2e-sles.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-electron"
display_name: "electron (sles)"
install_undetectable_interpreters: true
install_license: false
allow_soft_fail: false
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-chromium-sles:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_browser_sles) }}
uses: ./.github/workflows/test-e2e-sles.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-chromium"
display_name: "chromium (sles)"
install_undetectable_interpreters: true
install_license: true
allow_soft_fail: false
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-debian:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_debian) }}
uses: ./.github/workflows/test-e2e-debian.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-electron"
display_name: "electron (debian)"
install_undetectable_interpreters: true
install_license: false
allow_soft_fail: false
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
e2e-chromium-debian:
name: e2e
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_e2e_browser_debian) }}
uses: ./.github/workflows/test-e2e-debian.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
skip_cache: ${{ inputs.commit != 'latest' }}
grep: ${{ inputs.grep || '' }}
project: "e2e-chromium"
display_name: "chromium (debian)"
install_undetectable_interpreters: true
install_license: true
allow_soft_fail: false
enable_diagnostic_logging: ${{ inputs.enable_diagnostic_logging }}
unit-tests:
name: test
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_unit_tests) }}
uses: ./.github/workflows/test-unit.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
ext-host-tests:
name: test
needs: [validate-commit]
if: ${{ !failure() && !cancelled() && (github.event_name == 'schedule' || inputs.run_ext_host_tests) }}
uses: ./.github/workflows/test-ext-host.yml
secrets: inherit
with:
commit: ${{ inputs.commit != 'latest' && inputs.commit || '' }}
pull_request: false
slack-notify:
if: always()
needs:
[validate-commit, e2e-electron, e2e-windows, e2e-chromium, e2e-rhel, e2e-chromium-rhel, e2e-suse, e2e-chromium-suse, e2e-sles, e2e-chromium-sles, e2e-debian, e2e-chromium-debian, unit-tests, ext-host-tests]
runs-on: ubuntu-latest
steps:
- name: Checkout
if: always()
uses: actions/checkout@v6
with:
sparse-checkout: .github/actions/notify-e2e-insights
- name: Notify E2E Test Insights
if: always() && inputs.notify_on != 'never'
uses: ./.github/actions/notify-e2e-insights
with:
webhook_secret: ${{ secrets.E2E_INSIGHTS_WEBHOOK_SECRET }}
connect_api_key: ${{ secrets.CONNECT_API_KEY }}
repo_id: "positron"
title: "E2E Full Suite Tests"
filter_jobs: "(e2e / ([^0-9]*)|unit|ext-host)$"
notify_on: ${{ inputs.notify_on }}