Skip to content

πŸ’„ app: add haptic feedback to card actions #11314

πŸ’„ app: add haptic feedback to card actions

πŸ’„ app: add haptic feedback to card actions #11314

Workflow file for this run

name: test
on:
push:
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
env:
NX_DAEMON: false
BASE_RPC_URL: ${{ secrets.BASE_RPC_URL }}
ETHEREUM_RPC_URL: ${{ secrets.ETHEREUM_RPC_URL }}
OPTIMISM_RPC_URL: ${{ secrets.OPTIMISM_RPC_URL }}
OPTIMISM_SEPOLIA_RPC_URL: ${{ secrets.OPTIMISM_SEPOLIA_RPC_URL }}
POLYGON_RPC_URL: ${{ secrets.POLYGON_RPC_URL }}
steps:
- uses: actions/checkout@v6
with: { fetch-depth: 0, fetch-tags: true }
- uses: actions/setup-node@v6
with: { node-version: "^24.14.1" }
- uses: foundry-rs/foundry-toolchain@v1
with: { version: v1.5.1 }
- uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: pip
cache-dependency-path: contracts/requirements.txt
- uses: actions/cache@v5
with:
path: .nx/cache
key: nx-${{ runner.os }}-${{ github.sha }}
restore-keys: nx-${{ runner.os }}-
- run: pip install -r contracts/requirements.txt
- run: |
mkdir -p $HOME/.local/bin && cd $HOME/.local/bin
streamingfast=""
for source in firehose-ethereum:latest substreams:latest substreams-sink-sql:latest; do
repo="${source%%:*}"
release="${source#*:}"
curl --retry 5 --retry-all-errors --retry-delay 2 -L "$(curl --retry 5 --retry-all-errors --retry-delay 2 -sH 'Authorization: token ${{ github.token }}' https://api.github.com/repos/streamingfast/$repo/releases/$release | jq --arg arch "$(uname -m | sed 's/aarch64/arm64/')" -r '.assets[] | select(.browser_download_url | test("linux_" + $arch)) | .browser_download_url')" | tar zxf - &
streamingfast="$streamingfast $!"
done
for pid in $streamingfast; do wait "$pid" || exit 1; done
- run: echo ::add-matcher::.github/matcher.json
- run: corepack enable
- run: pnpm install --frozen-lockfile
- run: pnpm nx run-many -t test
- uses: codecov/codecov-action@v6
if: ${{ !cancelled() }}
with:
token: ${{ secrets.CODECOV_TOKEN }}
name: test
- uses: codecov/codecov-action@v6
if: ${{ !cancelled() }}
with:
report_type: test_results
files: server/coverage/junit.xml
token: ${{ secrets.CODECOV_TOKEN }}
name: test
- uses: actions/upload-artifact@v7
if: ${{ !cancelled() }}
with:
name: server-artifacts
path: server/node_modules/@exactly/.*
include-hidden-files: true
e2e:
runs-on: ubuntu-latest
timeout-minutes: 30
env:
NX_DAEMON: false
CHAIN_ID: "31337"
EXPO_PUBLIC_E2E_MNEMONIC: ${{ secrets.EXPO_PUBLIC_E2E_MNEMONIC }}
steps:
- uses: actions/checkout@v6
with: { fetch-depth: 0, fetch-tags: true }
- uses: actions/setup-node@v6
with: { node-version: "^24.14.1" }
- uses: foundry-rs/foundry-toolchain@v1
with: { version: v1.5.1 }
- uses: actions/cache@v5
with:
path: .nx/cache
key: nx-${{ runner.os }}-${{ github.sha }}
restore-keys: nx-${{ runner.os }}-
- uses: actions/setup-java@v5
with: { distribution: zulu, java-version: "17" }
- run: |
set -o pipefail
mkdir -p $HOME/.local/bin && cd $HOME/.local/bin
streamingfast=""
for source in firehose-ethereum:latest substreams:latest substreams-sink-sql:latest; do
repo="${source%%:*}"
release="${source#*:}"
curl --retry 5 --retry-all-errors --retry-delay 2 -L "$(curl --retry 5 --retry-all-errors --retry-delay 2 -sH 'Authorization: token ${{ github.token }}' https://api.github.com/repos/streamingfast/$repo/releases/$release | jq --arg arch "$(uname -m | sed 's/aarch64/arm64/')" -r '.assets[] | select(.browser_download_url | test("linux_" + $arch)) | .browser_download_url')" | tar zxf - &
streamingfast="$streamingfast $!"
done
for pid in $streamingfast; do wait "$pid" || exit 1; done
for attempt in {1..5}; do
curl -fsSL "https://get.maestro.mobile.dev" | bash || true
[ -x $HOME/.maestro/bin/maestro ] && $HOME/.maestro/bin/maestro --version && echo $HOME/.maestro/bin >> "$GITHUB_PATH" && break
[ "$attempt" -eq 5 ] && echo "maestro install failed after 5 attempts" && exit 1
rm -rf $HOME/.maestro $HOME/.maestro.tmp
sleep 2
done
- run: echo ::add-matcher::.github/matcher.json
- run: corepack enable
- run: pnpm install --frozen-lockfile
- run: |
pnpm nx run-many -t build -p mobile e2e
pnpm nx generate:app server
pnpm nx e2e server > server.log 2>&1 &
pnpm dlx serve server/app -l 8081 -snL &
for i in {1..420}; do
curl -f http://localhost:3000/api/auth/authentication > /dev/null 2>&1 && break
[ $i -eq 420 ] && cat server.log && exit 1
sleep 1
done
CHROME_LOG_FILE=$PWD/chrome.log xvfb-run maestro test .maestro/flows/web.yaml --format junit --output .maestro/junit.xml
env: { APP_DOMAIN: localhost, EXPO_PUBLIC_ENV: e2e }
- if: always()
run: |
curl -X POST http://localhost:3000/e2e/shutdown || true
for i in {1..60}; do [ -f server/coverage/lcov.info ] && break; sleep 1; done
- uses: codecov/codecov-action@v6
if: ${{ !cancelled() }}
with:
files: server/coverage/lcov.info,server/coverage/app.json
token: ${{ secrets.CODECOV_TOKEN }}
flags: e2e
name: web
- uses: codecov/codecov-action@v6
if: ${{ !cancelled() }}
with:
report_type: test_results
files: .maestro/junit.xml
token: ${{ secrets.CODECOV_TOKEN }}
flags: e2e
name: web
- uses: actions/upload-artifact@v7
if: ${{ !cancelled() }}
with:
name: e2e-artifacts
path: |
chrome.log
server.log
server/coverage
server/node_modules/@exactly/.*
~/.maestro/tests
.maestro/screenshots
include-hidden-files: true