forked from MystenLabs/sui
-
Notifications
You must be signed in to change notification settings - Fork 0
180 lines (161 loc) · 8 KB
/
e2e.yml
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
name: End-to-end Tests
on: pull_request
jobs:
diff:
runs-on: ubuntu-latest
outputs:
isWallet: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), 'sui-wallet')) }}
isExplorer: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), 'sui-explorer')) }}
isTypescriptSDK: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), '@mysten/sui.js')) }}
isRust: ${{ steps.diff.outputs.isRust }}
steps:
- uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3
- name: Detect Changes (turbo)
uses: "./.github/actions/turbo-diffs"
id: turbo
- name: Detect Changes (diff)
uses: "./.github/actions/diffs"
id: diff
# Run e2e test against localnet built on the main branch
localnet:
name: Localnet
needs: diff
if: needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isTypescriptSDK == 'true' || needs.diff.outputs.isWallet == 'true' || needs.diff.outputs.isRust == 'true'
runs-on: ubuntu-ghcloud
steps:
- uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3
- uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # pin@v1
- uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths
- uses: pnpm/action-setup@c3b53f6a16e57305370b4ae5a540c2077a1d50dd # [email protected]
with:
version: 7
- run: cargo build --bin sui-test-validator --bin sui --profile dev
- name: Install Nodejs
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # pin@v3
with:
node-version: "18"
cache: "pnpm"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Playwright Browsers
run: pnpm explorer playwright install --with-deps chromium
- name: Run TS SDK e2e tests
if: ${{ needs.diff.outputs.isTypescriptSDK == 'true' || needs.diff.outputs.isRust == 'true'}}
run: pnpm dlx concurrently --kill-others --success command-1 'RUST_LOG="consensus=off" cargo run --bin sui-test-validator' 'pnpm sdk test:e2e'
- name: Run Explorer e2e tests
# need to run Explorer e2e when its upstream(TS SDK and Rust) or itself is changed
if: ${{ needs.diff.outputs.isTypescriptSDK == 'true' || needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isRust == 'true'}}
run: pnpm explorer playwright test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report-explorer
path: apps/explorer/playwright-report/
retention-days: 30
- name: Build Wallet
# need to run Wallet e2e when its upstream(TS SDK and Rust) or itself is changed
if: ${{ needs.diff.outputs.isWallet == 'true' || needs.diff.outputs.isRust == 'true' || needs.diff.outputs.isTypescriptSDK == 'true'}}
run: pnpm wallet build
- name: Run Wallet e2e tests
if: ${{ needs.diff.outputs.isWallet == 'true' || needs.diff.outputs.isRust == 'true' || needs.diff.outputs.isTypescriptSDK == 'true'}}
run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- pnpm wallet playwright test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report-wallet
path: apps/wallet/playwright-report/
retention-days: 30
# Run e2e test against localnet built on the devnet branch for backward compatibility check
local_devnet_branch:
name: Local Network Built on devnet branch
needs: diff
# TODO: add wallet e2e to the `if` condition when available
if: needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isTypescriptSDK == 'true'
runs-on: ubuntu-ghcloud
steps:
# checkout the devnet branch
- uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3
with:
ref: devnet
- uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # pin@v1
- uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths
- uses: pnpm/action-setup@c3b53f6a16e57305370b4ae5a540c2077a1d50dd # [email protected]
with:
version: 7
- run: cargo build --bin sui-test-validator --bin sui --profile dev
# checkout the current branch
- uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3
with:
clean: false
- name: Install Nodejs
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # pin@v3
with:
node-version: "18"
cache: "pnpm"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Playwright Browsers
run: pnpm explorer playwright install --with-deps chromium
- name: Set env
run: echo "E2E_RUN_LOCAL_NET_CMD=(RUST_LOG=\"consensus=off\" $(echo $PWD/target/debug/sui-test-validator))" >> $GITHUB_ENV
- name: Run TS SDK e2e tests
if: ${{ needs.diff.outputs.isTypescriptSDK == 'true' }}
run: pnpm dlx concurrently --kill-others --success command-1 "$E2E_RUN_LOCAL_NET_CMD" 'pnpm sdk test:e2e'
# Re-enable when it's more stable
# - name: Run Explorer e2e tests
# if: ${{ needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isTypescriptSDK == 'true'}}
# run: pnpm explorer playwright test
# TODO: add wallet e2e when available
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report-explorer
path: apps/explorer/playwright-report/
retention-days: 30
# Disable testnet test until the Testnet wave 3
# Run e2e test against localnet built on the Testnet branch for backward compatibility check
# local_testnet_branch:
# name: Local Network Built on testnet branch
# needs: diff
# # TODO: add wallet e2e to the `if` condition when available
# if: needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isTypescriptSDK == 'true'
# runs-on: ubuntu-ghcloud
# steps:
# # checkout the testnet branch
# - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3
# with:
# ref: testnet
# - uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # pin@v1
# - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths
# - uses: pnpm/action-setup@c3b53f6a16e57305370b4ae5a540c2077a1d50dd # [email protected]
# with:
# version: 7
# - run: cargo build --bin sui-test-validator --bin sui --profile dev
# # checkout the current branch
# - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3
# with:
# clean: false
# - name: Install Nodejs
# uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # pin@v3
# with:
# node-version: "18"
# cache: "pnpm"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: Install Playwright Browsers
# run: pnpm explorer playwright install --with-deps chromium
# - name: Set env
# run: echo "E2E_RUN_LOCAL_NET_CMD=(RUST_LOG="consensus=off "$(echo $PWD/target/debug/sui-test-validator))" >> $GITHUB_ENV
# - name: Run TS SDK e2e tests
# if: ${{ needs.diff.outputs.isTypescriptSDK == 'true' }}
# run: pnpm dlx concurrently --kill-others --success command-1 "$E2E_RUN_LOCAL_NET_CMD" 'pnpm sdk test:e2e'
# - name: Run Explorer e2e tests
# if: ${{ needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isTypescriptSDK == 'true'}}
# run: pnpm explorer playwright test
# # TODO: add wallet e2e when available
# - uses: actions/upload-artifact@v3
# if: always()
# with:
# name: playwright-report-explorer
# path: apps/explorer/playwright-report/
# retention-days: 30