feat: run e2e tests on self-hosted #2145
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: e2e-ios | |
on: pull_request | |
env: | |
NO_FLIPPER: 1 | |
E2E_TESTS: 1 # build without transform-remove-console babel plugin | |
DEBUG: 'lnurl* lnurl server' | |
jobs: | |
e2e: | |
runs-on: self-hosted | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
# - name: Setup Buildcache | |
# uses: mikehardy/buildcache-action@v2 | |
# - name: Setup Docker Colima 1 | |
# uses: limpbrains/setup-docker-macos-action@e4216b347f8992aa26308d9a0a43216f4386b278 | |
# id: docker1 | |
# continue-on-error: true | |
# with: | |
# lima: v0.18.0 | |
# colima: v0.5.6 | |
# - name: Setup Docker Colima 2 | |
# if: steps.docker1.outcome != 'success' | |
# uses: limpbrains/setup-docker-macos-action@e4216b347f8992aa26308d9a0a43216f4386b278 | |
# id: docker2 | |
# continue-on-error: true | |
# with: | |
# lima: v0.18.0 | |
# colima: v0.5.6 | |
# - name: Setup Docker Default | |
# if: steps.docker1.outcome != 'success' && steps.docker2.outcome != 'success' | |
# uses: docker-practice/[email protected] | |
# timeout-minutes: 30 | |
- name: Run regtest setup | |
run: cd docker && mkdir lnd && chmod 777 lnd && docker-compose up --quiet-pull -d | |
- name: Install AppleSimulatorUtils | |
run: HOMEBREW_NO_AUTO_UPDATE=1 brew tap wix/brew && brew install applesimutils | |
- name: Wait for electrum server | |
timeout-minutes: 20 | |
run: | | |
while true | |
do | |
for i in {1..60}; do | |
nc -z '127.0.0.1' 60001 | |
if [ $? -eq 0 ]; then | |
echo "port is open" | |
exit 0 | |
fi | |
echo "port is closed, attempt $i" | |
sleep 1 | |
done | |
echo "colima restart" | |
colima restart | |
done | |
# - name: Wait for bitcoind | |
# timeout-minutes: 2 | |
# run: while ! nc -z '127.0.0.1' 43782; do sleep 1; done | |
# - name: Wait for electrum server | |
# timeout-minutes: 2 | |
# run: while ! nc -z '127.0.0.1' 60001; do sleep 1; done | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.17 | |
cache: 'yarn' # cache packages, but not node_modules | |
- name: Activate enviroment variables | |
run: cp .env.test.template .env | |
- name: Activate react-native-skia-stub | |
run: patch -p1 < .github/workflows/react-native-skia-stub.patch | |
- name: Detox Framework Cache | |
uses: actions/cache@v3 | |
with: | |
path: ~/Library/Detox/ios | |
key: detox-framework-cache-${{ hashFiles('**/yarn.lock') }} | |
- name: Yarn Install | |
run: yarn --no-audit --prefer-offline || yarn --no-audit --prefer-offline | |
env: | |
HUSKY: 0 | |
- name: Cache Pods | |
uses: actions/cache@v3 | |
id: podcache | |
with: | |
path: ios/Pods | |
key: pods-${{ hashFiles('**/Podfile.lock') }} | |
- name: Pod Install | |
run: pod install --project-directory=ios || pod install --project-directory=ios | |
- name: Build | |
run: yarn e2e:build:ios-release || yarn e2e:build:ios-release | |
- name: Test attempt 1 | |
continue-on-error: true | |
id: test1 | |
run: yarn e2e:test:ios-release --record-videos all --take-screenshots all --record-logs all | |
- name: Test attempt 2 | |
continue-on-error: true | |
id: test2 | |
if: steps.test1.outcome != 'success' | |
run: yarn e2e:test:ios-release --record-videos all --take-screenshots all --record-logs all | |
- name: Test attempt 3 | |
continue-on-error: true | |
id: test3 | |
if: steps.test1.outcome != 'success' && steps.test2.outcome != 'success' | |
run: yarn e2e:test:ios-release --record-videos all --take-screenshots all --record-logs all | |
- name: Restart docker before last attempt | |
if: steps.test1.outcome != 'success' && steps.test2.outcome != 'success' && steps.test3.outcome != 'success' | |
run: | | |
cd docker && docker-compose down -t 60 && docker-compose up --quiet-pull -d && cd .. | |
while ! nc -z '127.0.0.1' 60001; do sleep 1; done | |
- name: Test attempt 4 | |
id: test4 | |
if: steps.test1.outcome != 'success' && steps.test2.outcome != 'success' && steps.test3.outcome != 'success' | |
run: yarn e2e:test:ios-release --record-videos all --take-screenshots all --record-logs all | |
# - uses: mdelillo/ssh-server-action@73e3eb79c1a94eade0c179b2365419717f6ea8c9 | |
# if: failure() | |
# with: | |
# ngrok-authtoken: 'xxx' | |
# ssh-public-key: 'xxx' | |
- uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: e2e-test-videos | |
path: ./artifacts/ | |
- name: Dump docker logs on failure | |
if: failure() | |
uses: jwalton/gh-docker-logs@v2 |