-
Notifications
You must be signed in to change notification settings - Fork 1
148 lines (134 loc) · 5.79 KB
/
Copy pathweb-e2e.yml
File metadata and controls
148 lines (134 loc) · 5.79 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
name: Web app E2E tests
on: [push, pull_request]
jobs:
run-synpress:
runs-on: ubuntu-22.04
steps:
- name: Update and install packages
run: |
sudo apt update -y && sudo apt install -y --no-install-recommends \
git \
wget \
make \
gcc \
g++ \
python3 \
libgtk2.0-0 \
libgtk-3-0 \
libgbm-dev \
libnotify-dev \
libgconf-2-4 \
libnss3 \
libxss1 \
libasound2 \
libxtst6 \
xauth \
xvfb \
fluxbox \
x11-xserver-utils \
pulseaudio \
x11vnc \
fonts-liberation \
libcurl3-gnutls \
libu2f-udev \
libvulkan1 \
xdg-utils \
procps \
curl \
gnupg \
gnupg2 \
gnupg1 \
ca-certificates
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: Setup pnpm
uses: pnpm/action-setup@v4.0.0
with:
version: ^9.4
- run: node -v
# TODO: Use foundry instead of cloning Yamawake
# - name: Foundry
# shell: bash
# run: |
# curl -L https://foundry.paradigm.xyz | bash
# source ~/.bashrc
# export PATH=~/.foundry/bin:$PATH:
# foundryup
- name: Clone Yamawake repository
run: |
git clone https://github.com/DeFiGeek-Community/yamawake.git
cd yamawake
npm ci
- name: Create env file for Yamawake
run: |
touch yamawake/.env
echo ETHERSCAN_API_KEY=${{ secrets.ETHERSCAN_API_KEY }} >> yamawake/.env
echo INFURA_API_TOKEN=${{ secrets.INFURA_API_TOKEN }} >> yamawake/.env
echo FOUNDATION_PRIVATE_KEY=${{ secrets.PRIVATE_KEY }} >> yamawake/.env
- name: Checkout Yamawake interface repository
uses: actions/checkout@v3
with:
path: ./yamawake-interface
- name: Install Yamawake interface dependencies
run: |
cd yamawake-interface
pnpm i --frozen-lockfile
- name: Install chrome
run: |
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo apt update && sudo apt install google-chrome-stable
- name: Create env file for Yamawake interface
run: |
touch yamawake-interface/.env
echo NEXT_PUBLIC_DEFAULT_CHAIN_ID=${{ vars.DEFAULT_CHAIN_ID }} >> yamawake-interface/.env
echo NEXT_PUBLIC_ENV="testnet" >> yamawake-interface/.env
echo NETWORK_NAME=${{ vars.NETWORK_NAME }} >> yamawake-interface/.env
echo TEST_TOKEN=${{ vars.TEST_TOKEN }} >> yamawake-interface/.env
echo NEXT_PUBLIC_WALLET_CONNECT_ID=${{ secrets.WALLET_CONNECT_ID }} >> yamawake-interface/.env
echo NEXT_PUBLIC_INFURA_API_TOKEN=${{ secrets.INFURA_API_TOKEN }} >> yamawake-interface/.env
echo _AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} >> yamawake-interface/.env
echo _AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} >> yamawake-interface/.env
echo _AWS_REGION=${{ secrets.AWS_REGION }} >> yamawake-interface/.env
echo _AWS_DYNAMO_TABLE_NAME=${{ secrets.AWS_DYNAMO_TABLE_NAME }} >> yamawake-interface/.env
echo NEXT_PUBLIC_SUBGRAPH_ENDPOINT_MAINNET=${{ vars.SUBGRAPH_ENDPOINT_MAINNET }} >> yamawake-interface/.env
echo NEXT_PUBLIC_SUBGRAPH_ENDPOINT_ARBITRUM=${{ vars.SUBGRAPH_ENDPOINT_ARBITRUM }} >> yamawake-interface/.env
echo NEXT_PUBLIC_SUBGRAPH_ENDPOINT_SEPOLIA=${{ vars.SUBGRAPH_ENDPOINT_SEPOLIA }} >> yamawake-interface/.env
echo NEXT_PUBLIC_SUBGRAPH_HARDHAT=${{ vars.SUBGRAPH_ENDPOINT_HARDHAT }} >> yamawake-interface/.env
echo NEXT_PUBLIC_LOCAL_FACTORY_ADDRESS=${{ vars.TEST_FACTORY_ADDRESS }} >> yamawake-interface/.env
echo NEXT_PUBLIC_LOCAL_DISTRIBUTOR_ADDRESS=${{ vars.TEST_DISTRIBUTOR_ADDRESS }} >> yamawake-interface/.env
echo NEXT_PUBLIC_LOCAL_YMWK_ADDRESS=${{ vars.TEST_YMWK_ADDRESS }} >> yamawake-interface/.env
echo TEST_PRIVATE_KEY=${{ secrets.PRIVATE_KEY }} >> yamawake-interface/.env
echo TEST_PROVIDER_ENDPOINT=http://localhost:8545 >> yamawake-interface/.env
echo TEST_FACTORY_ADDRESS=${{ vars.TEST_FACTORY_ADDRESS }} >> yamawake-interface/.env
echo IRON_SESSION_PASSWORD=complex_password_at_least_32_characters_long >> yamawake-interface/.env
echo IRON_SESSION_COOKIE_NAME=test_session >> yamawake-interface/.env
# # TODO: Use foundry instead of cloning Yamawake
# - name: Run e2e test
# # run: |
# # Xvfb :0 -screen 0 1024x768x24 -listen tcp -ac +extension RANDR &
# # fluxbox &
# # /root/.foundry/bin/anvil --fork-url ${{ secrets.FORK_URL }} &
# # cd yamawake-interface/apps/web
# # npx env-cmd -f ../../.env pnpm test:build
# run: |
# Xvfb :0 -screen 0 1024x768x24 -listen tcp -ac +extension RANDR &
# fluxbox &
# cd yamawake
# npx hardhat node --fork ${{ secrets.FORK_URL }} --no-deploy &
# cd ../yamawake-interface/apps/web
# npx env-cmd -f ../../.env pnpm test:build
# env:
# DISPLAY: :0.0
# CI: true
# - uses: actions/upload-artifact@v3
# if: failure()
# with:
# name: cypress videos
# path: ./yamawake-interface/apps/web/tests/e2e/videos
# - uses: actions/upload-artifact@v3
# if: failure()
# with:
# name: cypress screenshots
# path: ./yamawake-interface/apps/web/tests/e2e/screenshots