Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add faucet e2e tests #34

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/workflows/frontend:erc20-messaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,6 @@ jobs:
VITE_TOPOS_CORE_PROXY_CONTRACT_ADDRESS: ${{ env.TOPOS_CORE_PROXY_CONTRACT_ADDRESS }}
VITE_TOPOS_SUBNET_ENDPOINT_WS: ${{ vars.TOPOS_SUBNET_ENDPOINT_WS }}
VITE_TOPOS_SUBNET_ENDPOINT_HTTP: ${{ vars.TOPOS_SUBNET_ENDPOINT_HTTP }}
VITE_ELASTIC_APM_ENDPOINT: ${{ secrets.ELASTIC_APM_ENDPOINT }}
VITE_TRACING_SERVICE_NAME: ${{ vars.TRACING_SERVICE_NAME }}
VITE_TRACING_SERVICE_VERSION: ${{ vars.TRACING_SERVICE_VERSION }}

- name: Debug docker show infra containers
if: failure()
Expand Down
168 changes: 168 additions & 0 deletions .github/workflows/frontend:faucet.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
name: Frontend Faucet

on:
pull_request:
branches:
- main
workflow_dispatch:
inputs:
local-erc20-messaging-infra-ref:
description: "Git ref of local-erc20-messaging-infra"
required: false
faucet-ref:
description: "Git ref of faucet"
required: false
topos-docker-tag:
description: "Docker tag of topos"
required: false
topos-smart-contracts-docker-tag:
description: "Docker tag of topos-smart-contracts"
required: false

env:
TOPOS_DOCKER_TAG: ${{ inputs.topos-docker-tag || 'latest' }}
CONTRACTS_DOCKER_TAG: ${{ inputs.topos-smart-contracts-docker-tag || 'latest' }}

jobs:
infra-metadata:
uses: ./.github/workflows/util:get-latest-release.yml
with:
organization: topos-protocol
repository: local-erc20-messaging-infra

faucet-metadata:
uses: ./.github/workflows/util:get-latest-release.yml
with:
organization: topos-protocol
repository: faucet

e2e:
runs-on: ubuntu-latest-16-core
environment: devnet-1
env:
INFRA_REF: ${{ inputs.local-erc20-messaging-infra-ref || needs.infra-metadata.outputs.latest-release }}
FAUCET_REF: ${{ inputs.faucet-ref || needs.faucet-metadata.outputs.latest-release }}
needs:
- infra-metadata
- faucet-metadata
steps:
- name: Display stack component versions
run: |
echo "infra ref: ${{ env.INFRA_REF }}"
echo "faucet ref: ${{ env.FAUCET_REF }}"
echo "topos docker tag: ${{ env.TOPOS_DOCKER_TAG }}"
echo "contracts docker tag: ${{ env.CONTRACTS_DOCKER_TAG }}"

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-

- name: Checkout local-erc20-messaging-infra repo
uses: actions/checkout@v3
with:
repository: topos-protocol/local-erc20-messaging-infra
ref: ${{ env.INFRA_REF }}
path: infra

- name: Start local ERC20 messaging infra containers
run: >
cd infra &&
docker compose up -d
env:
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
TOKEN_DEPLOYER_SALT: ${{ secrets.TOKEN_DEPLOYER_SALT }}
TOPOS_CORE_SALT: ${{ secrets.TOPOS_CORE_SALT }}
TOPOS_CORE_PROXY_SALT: ${{ secrets.TOPOS_CORE_PROXY_SALT }}
ERC20_MESSAGING_SALT: ${{ secrets.ERC20_MESSAGING_SALT }}
SUBNET_REGISTRATOR_SALT: ${{ secrets.SUBNET_REGISTRATOR_SALT }}
TOPOS_VERSION: ${{ env.TOPOS_DOCKER_TAG }}
TOPOS_MESSAGING_PROTOCOL_CONTRACTS_VERSION: ${{ env.CONTRACTS_DOCKER_TAG }}

- name: Debug containers
if: failure()
run: docker inspect contracts-topos | grep Image && docker logs contracts-topos

- name: Get contracts .env file and expose contract addresses for faucet
run: |
mkdir ./contracts
docker cp contracts-topos:/contracts/.env ./contracts/.env
source ./contracts/.env
echo "SUBNET_REGISTRATOR_CONTRACT_ADDRESS=${SUBNET_REGISTRATOR_CONTRACT_ADDRESS}" >> $GITHUB_ENV
echo "TOPOS_CORE_PROXY_CONTRACT_ADDRESS=${TOPOS_CORE_PROXY_CONTRACT_ADDRESS}" >> $GITHUB_ENV

- name: Checkout faucet repo
uses: actions/checkout@v3
with:
repository: topos-protocol/faucet
ref: ${{ env.FAUCET_REF }}
path: faucet

- name: Install dependencies
working-directory: faucet
run: npm ci

- name: Build frontend
working-directory: faucet
run: npm run frontend:build
env:
VITE_RECAPTCHA_SITE_KEY: ${{ secrets.RECAPTCHA_SITE_KEY }}
VITE_SUBNET_REGISTRATOR_CONTRACT_ADDRESS: ${{ env.SUBNET_REGISTRATOR_CONTRACT_ADDRESS }}
VITE_TOPOS_CORE_PROXY_CONTRACT_ADDRESS: ${{ env.TOPOS_CORE_PROXY_CONTRACT_ADDRESS }}
VITE_TOPOS_SUBNET_ENDPOINT_HTTP: ${{ vars.TOPOS_SUBNET_ENDPOINT_HTTP }}
VITE_TOPOS_SUBNET_ENDPOINT_WS: ${{ vars.TOPOS_SUBNET_ENDPOINT_WS }}

- name: Run e2e tests
working-directory: faucet
run: npm run test:e2e
env:
CYPRESS_REMOTE_DEBUGGING_PORT: ${{ vars.CYPRESS_REMOTE_DEBUGGING_PORT }}
PORT: 3002
AUTH0_AUDIENCE: ${{ secrets.AUTH0_AUDIENCE }}
AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }}
AUTH0_CLIENT_SECRET: ${{ secrets.AUTH0_CLIENT_SECRET }}
AUTH0_ISSUER_URL: ${{ secrets.AUTH0_ISSUER_URL }}
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
THROTTLER_TTL_SECONDS: ${{ vars.THROTTLER_TTL_SECONDS }}


- name: Debug docker show infra containers
if: failure()
run: docker ps

- name: Debug sending sequencer
if: failure()
run: docker logs topos-sequencer

- name: Debug receiving sequencer
if: failure()
run: docker logs incal-sequencer

- name: Debug topos node 1
if: failure()
run: docker logs topos-node-1

- name: Debug topos node 2
if: failure()
run: docker logs topos-node-2

- name: Debug topos node 3
if: failure()
run: docker logs topos-node-3

- name: Debug topos node 4
if: failure()
run: docker logs topos-node-4

- name: Debug incal node 1
if: failure()
run: docker logs incal-node-1
2 changes: 1 addition & 1 deletion .github/workflows/util:get-latest-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
outputs:
latest-release: ${{ steps.script.outputs.result }}
steps:
- uses: actions/github-script@v6
- uses: actions/github-script@v7
id: script
with:
result-encoding: string
Expand Down
Loading