Skip to content

Commit e3ec778

Browse files
committed
Merge remote-tracking branch 'origin/atavism/issue-3723' into atavism/issue-3723-payment-screenshot
2 parents 4ca9a50 + 152415a commit e3ec778

35 files changed

Lines changed: 2501 additions & 368 deletions
Lines changed: 57 additions & 70 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,46 +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-
windows_payment_checkout_smoke:
31-
description: "Verify staging Stripe Checkout renders on Windows"
32-
required: false
33-
type: boolean
34-
default: true
35-
macos_connect_smoke:
36-
description: "Include macOS connect/disconnect smoke when platforms=all (requires self-hosted runner with approved system extension)"
37-
required: false
38-
type: boolean
39-
default: false
40-
macos_payment_checkout_smoke:
41-
description: "Verify staging Stripe Checkout renders on macOS"
42-
required: false
43-
type: boolean
44-
default: true
45-
windows_split_tunnel_website_smoke:
46-
description: "Run Windows split-tunneling website smoke"
47-
required: false
48-
type: boolean
49-
default: false
50-
auth_smoke:
51-
description: "Run existing auth smoke tests"
52-
required: false
53-
type: boolean
54-
default: false
55-
enable_ip_check:
56-
description: "Validate public IP change during VPN connect smoke"
57-
required: false
58-
type: boolean
59-
default: false
60-
force_full_tunnel_smoke:
61-
description: "Force full-tunnel mode during VPN connect smoke"
62-
required: false
63-
type: boolean
64-
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 * * *"
6540

6641
permissions:
6742
contents: read
@@ -72,6 +47,26 @@ concurrency:
7247
cancel-in-progress: false
7348

7449
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+
7570
prepare:
7671
runs-on: ubuntu-latest
7772
outputs:
@@ -106,58 +101,50 @@ jobs:
106101
name: pubspec
107102
path: pubspec.yaml
108103

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.
109108
linux:
110109
needs: prepare
111-
if: ${{ inputs.platforms == 'all' || inputs.platforms == 'linux' }}
110+
if: ${{ contains(fromJSON('["all", "linux", ""]'), inputs.platforms) }}
112111
uses: ./.github/workflows/build-linux.yml
113-
secrets:
114-
APP_ENV: ${{ secrets.APP_ENV }}
112+
secrets: inherit
115113
with:
116114
version: ${{ needs.prepare.outputs.version }}
117115
build_type: nightly
118116
installer_base_name: ${{ needs.prepare.outputs.installer_base_name }}
119-
linux_arch: ${{ inputs.linux_arch }}
120-
enable_ip_check: ${{ inputs.enable_ip_check }}
121-
force_full_tunnel_smoke: ${{ inputs.force_full_tunnel_smoke }}
122-
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' }}
123120

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.
124124
macos:
125125
needs: prepare
126-
if: ${{ inputs.platforms == 'macos' || (inputs.platforms == 'all' && (inputs.macos_connect_smoke || inputs.macos_payment_checkout_smoke)) }}
126+
if: ${{ inputs.platforms == 'macos' }}
127127
uses: ./.github/workflows/build-macos.yml
128-
secrets:
129-
AC_USERNAME: ${{ secrets.AC_USERNAME }}
130-
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
131-
APP_ENV: ${{ secrets.APP_ENV }}
132-
MACOS_BNS_CERT: ${{ secrets.MACOS_BNS_CERT }}
133-
MACOS_BNS_CERT_PASS: ${{ secrets.MACOS_BNS_CERT_PASS }}
134-
MACOS_PROVISION_PROFILE_BASE64: ${{ secrets.MACOS_PROVISION_PROFILE_BASE64 }}
135-
MACOS_PROVISION_TUNNEL_BASE64: ${{ secrets.MACOS_PROVISION_TUNNEL_BASE64 }}
128+
secrets: inherit
136129
with:
137130
version: ${{ needs.prepare.outputs.version }}
138131
build_type: nightly
139132
installer_base_name: ${{ needs.prepare.outputs.installer_base_name }}
140133
runner_label: lantern-macos-smoke
141-
run_connect_smoke: ${{ inputs.macos_connect_smoke }}
142-
run_payment_checkout_smoke: ${{ inputs.macos_payment_checkout_smoke }}
143-
enable_ip_check: ${{ inputs.enable_ip_check }}
144-
force_full_tunnel_smoke: ${{ inputs.force_full_tunnel_smoke }}
134+
run_connect_smoke: true
135+
run_payment_checkout_smoke: ${{ (inputs.tests || 'all') == 'all' }}
145136

146137
windows:
147138
needs: prepare
148-
if: ${{ inputs.platforms == 'all' || inputs.platforms == 'windows' }}
139+
if: ${{ contains(fromJSON('["all", "windows", ""]'), inputs.platforms) }}
149140
uses: ./.github/workflows/build-windows.yml
150-
secrets:
151-
APP_ENV: ${{ secrets.APP_ENV }}
141+
secrets: inherit
152142
with:
153143
version: ${{ needs.prepare.outputs.version }}
154144
build_type: nightly
155145
installer_base_name: ${{ needs.prepare.outputs.installer_base_name }}
156146
skip_signing: true
157-
enable_ip_check: ${{ inputs.enable_ip_check }}
158-
run_connect_smoke: ${{ inputs.windows_connect_smoke }}
159-
run_payment_checkout_smoke: ${{ inputs.windows_payment_checkout_smoke }}
160-
run_split_tunnel_website_smoke: ${{ inputs.windows_split_tunnel_website_smoke }}
161-
run_config_url_smoke: false
162-
force_full_tunnel_smoke: ${{ inputs.force_full_tunnel_smoke }}
163-
run_auth_smoke: ${{ inputs.auth_smoke }}
147+
force_full_tunnel_smoke: true
148+
run_auth_smoke: ${{ (inputs.tests || 'all') == 'all' }}
149+
run_split_tunnel_website_smoke: ${{ (inputs.tests || 'all') == 'all' }}
150+
run_payment_checkout_smoke: ${{ (inputs.tests || 'all') == 'all' }}

0 commit comments

Comments
 (0)