-
Notifications
You must be signed in to change notification settings - Fork 10
153 lines (135 loc) · 5.85 KB
/
e2e-shell-tests.yml
File metadata and controls
153 lines (135 loc) · 5.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
name: E2E Shell Tests
on:
schedule:
- cron: '0 3 * * *' # Run at 3 AM UTC daily
workflow_dispatch:
env:
SFCC_DISABLE_TELEMETRY: ${{ vars.SFCC_DISABLE_TELEMETRY }}
jobs:
e2e-shell-tests:
runs-on: ubuntu-latest
environment: e2e-dev
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: '24'
- name: Check for required secrets and vars
id: check-secrets
env:
SFCC_CLIENT_ID: ${{ vars.SFCC_CLIENT_ID }}
SFCC_CLIENT_SECRET: ${{ secrets.SFCC_CLIENT_SECRET }}
TEST_REALM: ${{ vars.TEST_REALM }}
SFCC_ACCOUNT_MANAGER_HOST: ${{ vars.SFCC_ACCOUNT_MANAGER_HOST }}
SFCC_SANDBOX_API_HOST: ${{ vars.SFCC_SANDBOX_API_HOST }}
SFCC_SHORTCODE: ${{ vars.SFCC_SHORTCODE }}
run: |
missing=""
[ -z "$SFCC_CLIENT_ID" ] && missing="$missing SFCC_CLIENT_ID"
[ -z "$SFCC_CLIENT_SECRET" ] && missing="$missing SFCC_CLIENT_SECRET"
[ -z "$TEST_REALM" ] && missing="$missing TEST_REALM"
[ -z "$SFCC_ACCOUNT_MANAGER_HOST" ] && missing="$missing SFCC_ACCOUNT_MANAGER_HOST"
[ -z "$SFCC_SANDBOX_API_HOST" ] && missing="$missing SFCC_SANDBOX_API_HOST"
[ -z "$SFCC_SHORTCODE" ] && missing="$missing SFCC_SHORTCODE"
if [ -z "$missing" ]; then
echo "has-secrets=true" >> $GITHUB_OUTPUT
else
echo "has-secrets=false" >> $GITHUB_OUTPUT
echo "E2E shell tests skipped - missing required variables:$missing" >> $GITHUB_STEP_SUMMARY
fi
- name: Setup pnpm
if: steps.check-secrets.outputs.has-secrets == 'true'
uses: pnpm/action-setup@v5
- name: Get pnpm store directory
if: steps.check-secrets.outputs.has-secrets == 'true'
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
if: steps.check-secrets.outputs.has-secrets == 'true'
uses: actions/cache@v5
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
if: steps.check-secrets.outputs.has-secrets == 'true'
run: pnpm install --frozen-lockfile
- name: Build packages
if: steps.check-secrets.outputs.has-secrets == 'true'
run: pnpm -r run build
- name: Run E2E Shell Tests
if: steps.check-secrets.outputs.has-secrets == 'true'
env:
SFCC_CLIENT_ID: ${{ vars.SFCC_CLIENT_ID }}
SFCC_CLIENT_SECRET: ${{ secrets.SFCC_CLIENT_SECRET }}
SFCC_ACCOUNT_MANAGER_HOST: ${{ vars.SFCC_ACCOUNT_MANAGER_HOST }}
SFCC_SANDBOX_API_HOST: ${{ vars.SFCC_SANDBOX_API_HOST }}
SFCC_SHORTCODE: ${{ vars.SFCC_SHORTCODE }}
TEST_REALM: ${{ vars.TEST_REALM }}
SFCC_EXTRA_HEADERS: ${{ secrets.SFCC_EXTRA_HEADERS }}
CURL_EXTRA_HEADERS: ${{ secrets.CURL_EXTRA_HEADERS }}
run: |
echo "Running E2E shell tests with realm: ${TEST_REALM}"
cd packages/b2c-cli
./test/functional/e2e_cli_test.sh
e2e-shell-tests-windows:
runs-on: windows-latest
# Advisory rollout: surface Windows shell-test failures without blocking
# the Linux shell-test job while Windows-specific issues are triaged.
continue-on-error: true
environment: e2e-dev
timeout-minutes: 45
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v6
- name: Check for required secrets and vars
id: check-secrets
env:
SFCC_CLIENT_ID: ${{ vars.SFCC_CLIENT_ID }}
SFCC_CLIENT_SECRET: ${{ secrets.SFCC_CLIENT_SECRET }}
TEST_REALM: ${{ vars.TEST_REALM }}
SFCC_ACCOUNT_MANAGER_HOST: ${{ vars.SFCC_ACCOUNT_MANAGER_HOST }}
SFCC_SANDBOX_API_HOST: ${{ vars.SFCC_SANDBOX_API_HOST }}
SFCC_SHORTCODE: ${{ vars.SFCC_SHORTCODE }}
run: |
missing=""
[ -z "$SFCC_CLIENT_ID" ] && missing="$missing SFCC_CLIENT_ID"
[ -z "$SFCC_CLIENT_SECRET" ] && missing="$missing SFCC_CLIENT_SECRET"
[ -z "$TEST_REALM" ] && missing="$missing TEST_REALM"
[ -z "$SFCC_ACCOUNT_MANAGER_HOST" ] && missing="$missing SFCC_ACCOUNT_MANAGER_HOST"
[ -z "$SFCC_SANDBOX_API_HOST" ] && missing="$missing SFCC_SANDBOX_API_HOST"
[ -z "$SFCC_SHORTCODE" ] && missing="$missing SFCC_SHORTCODE"
if [ -z "$missing" ]; then
echo "has-secrets=true" >> "$GITHUB_OUTPUT"
else
echo "has-secrets=false" >> "$GITHUB_OUTPUT"
echo "Windows E2E shell tests skipped - missing required variables:$missing" >> "$GITHUB_STEP_SUMMARY"
fi
- name: Setup Windows machine
if: steps.check-secrets.outputs.has-secrets == 'true'
uses: ./.github/actions/setup-windows
with:
node-version: '24'
- name: Build packages
if: steps.check-secrets.outputs.has-secrets == 'true'
run: pnpm -r run build
- name: Run E2E Shell Tests
if: steps.check-secrets.outputs.has-secrets == 'true'
env:
SFCC_CLIENT_ID: ${{ vars.SFCC_CLIENT_ID }}
SFCC_CLIENT_SECRET: ${{ secrets.SFCC_CLIENT_SECRET }}
SFCC_ACCOUNT_MANAGER_HOST: ${{ vars.SFCC_ACCOUNT_MANAGER_HOST }}
SFCC_SANDBOX_API_HOST: ${{ vars.SFCC_SANDBOX_API_HOST }}
SFCC_SHORTCODE: ${{ vars.SFCC_SHORTCODE }}
TEST_REALM: ${{ vars.TEST_REALM }}
SFCC_EXTRA_HEADERS: ${{ secrets.SFCC_EXTRA_HEADERS }}
CURL_EXTRA_HEADERS: ${{ secrets.CURL_EXTRA_HEADERS }}
run: |
echo "Running Windows E2E shell tests with realm: ${TEST_REALM}"
cd packages/b2c-cli
./test/functional/e2e_cli_test.sh