Skip to content

Commit 8aa897d

Browse files
committed
Merge remote-tracking branch 'origin/main' into atavism/issue-3747
2 parents 9c63d1f + 92fa744 commit 8aa897d

36 files changed

Lines changed: 2531 additions & 365 deletions
Lines changed: 54 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
name: App Smoke Tests
22

3+
# On the nightly schedule all `inputs.*` are empty, so job conditions use
4+
# `inputs.x || '<nightly value>'` fallbacks: platforms=all, tests=all.
35
on:
46
workflow_dispatch:
57
inputs:
@@ -9,10 +11,19 @@ on:
911
type: choice
1012
options:
1113
- all
14+
- android
1215
- linux
1316
- macos
1417
- windows
1518
default: all
19+
tests:
20+
description: "Which test suites to run on the selected platforms"
21+
required: false
22+
type: choice
23+
options:
24+
- vpn-smoke # connect/disconnect smoke only (validates the public IP changes) — the fast confidence check
25+
- all # every suite the platform supports
26+
default: vpn-smoke
1627
linux_arch:
1728
description: "Linux arch to test"
1829
required: false
@@ -22,36 +33,10 @@ on:
2233
- arm64
2334
- all
2435
default: amd64
25-
windows_connect_smoke:
26-
description: "Run Windows connect/disconnect smoke"
27-
required: false
28-
type: boolean
29-
default: true
30-
macos_connect_smoke:
31-
description: "Include macOS connect/disconnect smoke when platforms=all (requires self-hosted runner with approved system extension)"
32-
required: false
33-
type: boolean
34-
default: false
35-
windows_split_tunnel_website_smoke:
36-
description: "Run Windows split-tunneling website smoke"
37-
required: false
38-
type: boolean
39-
default: false
40-
auth_smoke:
41-
description: "Run existing auth smoke tests"
42-
required: false
43-
type: boolean
44-
default: false
45-
enable_ip_check:
46-
description: "Validate public IP change during VPN connect smoke"
47-
required: false
48-
type: boolean
49-
default: false
50-
force_full_tunnel_smoke:
51-
description: "Force full-tunnel mode during VPN connect smoke"
52-
required: false
53-
type: boolean
54-
default: true
36+
schedule:
37+
# Nightly full sweep (platforms=all, tests=all) at 03:00 UTC so
38+
# regressions surface within a day without anyone dispatching manually.
39+
- cron: "0 3 * * *"
5540

5641
permissions:
5742
contents: read
@@ -62,6 +47,26 @@ concurrency:
6247
cancel-in-progress: false
6348

6449
jobs:
50+
# Android builds its own versioned APKs and runs on Firebase Test Lab, so it
51+
# doesn't need the desktop version stamping from `prepare`. The vpn-smoke
52+
# tier builds only the VPN suite and runs it on one virtual device with no
53+
# retries; `all` builds the full aggregator on the script's two-device
54+
# matrix (physical Pixel 8 + Arm virtual) with retries for flaky tests.
55+
android:
56+
if: ${{ contains(fromJSON('["all", "android", ""]'), inputs.platforms) }}
57+
uses: ./.github/workflows/firebase-test-lab.yml
58+
secrets: inherit
59+
with:
60+
test_target: >-
61+
${{ (inputs.tests || 'all') == 'vpn-smoke'
62+
&& 'integration_test/vpn/android_vpn_smoke_test.dart'
63+
|| 'integration_test/android_all_e2e_test.dart' }}
64+
devices: >-
65+
${{ (inputs.tests || 'all') == 'vpn-smoke'
66+
&& 'model=MediumPhone.arm,version=33,locale=en,orientation=portrait'
67+
|| '' }}
68+
flaky_attempts: ${{ (inputs.tests || 'all') == 'all' && '2' || '' }}
69+
6570
prepare:
6671
runs-on: ubuntu-latest
6772
outputs:
@@ -96,56 +101,48 @@ jobs:
96101
name: pubspec
97102
path: pubspec.yaml
98103

104+
# Remaining suite toggles (IP check, config-url, …) are no longer umbrella
105+
# inputs: each build-*.yml declares smoke-appropriate defaults, and anything
106+
# exotic can be dispatched on that workflow directly. The `tests` tier maps
107+
# to the optional suites: vpn-smoke leaves them off, `all` turns them on.
99108
linux:
100109
needs: prepare
101-
if: ${{ inputs.platforms == 'all' || inputs.platforms == 'linux' }}
110+
if: ${{ contains(fromJSON('["all", "linux", ""]'), inputs.platforms) }}
102111
uses: ./.github/workflows/build-linux.yml
103-
secrets:
104-
APP_ENV: ${{ secrets.APP_ENV }}
112+
secrets: inherit
105113
with:
106114
version: ${{ needs.prepare.outputs.version }}
107115
build_type: nightly
108116
installer_base_name: ${{ needs.prepare.outputs.installer_base_name }}
109-
linux_arch: ${{ inputs.linux_arch }}
110-
enable_ip_check: ${{ inputs.enable_ip_check }}
111-
force_full_tunnel_smoke: ${{ inputs.force_full_tunnel_smoke }}
112-
run_auth_smoke: ${{ inputs.auth_smoke }}
117+
linux_arch: ${{ inputs.linux_arch || 'amd64' }}
118+
force_full_tunnel_smoke: true
119+
run_auth_smoke: ${{ (inputs.tests || 'all') == 'all' }}
113120

121+
# Not part of platforms=all (and so not the nightly): the connect smoke
122+
# needs the self-hosted runner with the approved system extension, so macOS
123+
# runs only when asked for explicitly.
114124
macos:
115125
needs: prepare
116-
if: ${{ inputs.platforms == 'macos' || (inputs.platforms == 'all' && inputs.macos_connect_smoke) }}
126+
if: ${{ inputs.platforms == 'macos' }}
117127
uses: ./.github/workflows/build-macos.yml
118-
secrets:
119-
AC_USERNAME: ${{ secrets.AC_USERNAME }}
120-
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
121-
APP_ENV: ${{ secrets.APP_ENV }}
122-
MACOS_BNS_CERT: ${{ secrets.MACOS_BNS_CERT }}
123-
MACOS_BNS_CERT_PASS: ${{ secrets.MACOS_BNS_CERT_PASS }}
124-
MACOS_PROVISION_PROFILE_BASE64: ${{ secrets.MACOS_PROVISION_PROFILE_BASE64 }}
125-
MACOS_PROVISION_TUNNEL_BASE64: ${{ secrets.MACOS_PROVISION_TUNNEL_BASE64 }}
128+
secrets: inherit
126129
with:
127130
version: ${{ needs.prepare.outputs.version }}
128131
build_type: nightly
129132
installer_base_name: ${{ needs.prepare.outputs.installer_base_name }}
130133
runner_label: lantern-macos-smoke
131134
run_connect_smoke: true
132-
enable_ip_check: ${{ inputs.enable_ip_check }}
133-
force_full_tunnel_smoke: ${{ inputs.force_full_tunnel_smoke }}
134135

135136
windows:
136137
needs: prepare
137-
if: ${{ inputs.platforms == 'all' || inputs.platforms == 'windows' }}
138+
if: ${{ contains(fromJSON('["all", "windows", ""]'), inputs.platforms) }}
138139
uses: ./.github/workflows/build-windows.yml
139-
secrets:
140-
APP_ENV: ${{ secrets.APP_ENV }}
140+
secrets: inherit
141141
with:
142142
version: ${{ needs.prepare.outputs.version }}
143143
build_type: nightly
144144
installer_base_name: ${{ needs.prepare.outputs.installer_base_name }}
145145
skip_signing: true
146-
enable_ip_check: ${{ inputs.enable_ip_check }}
147-
run_connect_smoke: ${{ inputs.windows_connect_smoke }}
148-
run_split_tunnel_website_smoke: ${{ inputs.windows_split_tunnel_website_smoke }}
149-
run_config_url_smoke: false
150-
force_full_tunnel_smoke: ${{ inputs.force_full_tunnel_smoke }}
151-
run_auth_smoke: ${{ inputs.auth_smoke }}
146+
force_full_tunnel_smoke: true
147+
run_auth_smoke: ${{ (inputs.tests || 'all') == 'all' }}
148+
run_split_tunnel_website_smoke: ${{ (inputs.tests || 'all') == 'all' }}

0 commit comments

Comments
 (0)