Skip to content

add e2e test script about evm transaction #1021

add e2e test script about evm transaction

add e2e test script about evm transaction #1021

Workflow file for this run

name: Extension Build
on:
push:
jobs:
determine-env:
runs-on: ubuntu-latest
outputs:
env_name: ${{ steps.set_env.outputs.env_name }}
steps:
- id: set_env
run: |
ENV_NAME="${{ github.ref_type == 'tag' && 'production' || github.ref_name == 'master' && 'production' || github.ref_name == 'dev' && 'staging' || 'development' }}"
echo "env_name=$ENV_NAME" >> $GITHUB_OUTPUT
echo "Environment name: $ENV_NAME"
build:
needs: determine-env
runs-on: ubuntu-latest
environment: ${{ needs.determine-env.outputs.env_name }}
strategy:
matrix:
node-version: [22.x]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for tags
fetch-tags: true # Explicitly fetch all tags
- name: Get latest tag
id: latest_tag
run: |
LATEST_TAG=$(git tag --sort=-committerdate | head -n 1 || echo "v0.0.0")
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
echo "Latest tag: $LATEST_TAG"
- name: Get repository URL
id: repo_url
run: |
REPO_URL="https://github.com/${{ github.repository }}"
echo "REPO_URL=$REPO_URL" >> $GITHUB_ENV
echo "Repository URL: $REPO_URL"
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Create environment files
run: |
# Function to create environment file with given name
create_env_file() {
local file_name=$1
cat << EOF > $file_name
# Git info
COMMIT_SHA="${{ github.sha }}"
BRANCH_NAME="${{ github.ref_name }}"
PR_TITLE="${{ github.event.pull_request.title || '' }}"
PR_NUMBER="${{ github.event.pull_request.number || '' }}"
DEPLOYMENT_ENV="${{ needs.determine-env.outputs.env_name }}"
LATEST_TAG="${{ env.LATEST_TAG }}"
REPO_URL="${{ env.REPO_URL }}"
# Google drive
GD_BACKUP_NAME="${{ vars.GD_BACKUP_NAME }}"
GD_FOLDER="${{ vars.GD_FOLDER }}"
GD_AES_KEY="${{ secrets.GD_AES_KEY }}"
GD_IV="${{ secrets.GD_IV }}"
GOOGLE_API="${{ secrets.GOOGLE_API }}"
FB_TOKEN="${{ secrets.FB_TOKEN }}"
# firebase
FB_API_KEY="${{ secrets.FB_API_KEY }}"
FB_AUTH_DOMAIN="${{ secrets.FB_AUTH_DOMAIN }}"
FB_DATABASE_URL="${{ secrets.FB_DATABASE_URL }}"
FB_PROJECTID="${{ secrets.FB_PROJECTID }}"
FB_STORAGE_BUCKET="${{ secrets.FB_STORAGE_BUCKET }}"
FB_MESSAGING_SENDER_ID="${{ secrets.FB_MESSAGING_SENDER_ID }}"
FB_APP_ID="${{ secrets.FB_APP_ID }}"
FB_MEASUREMENT_ID="${{ secrets.FB_MEASUREMENT_ID }}"
FB_FUNCTIONS="${{ secrets.FB_FUNCTIONS }}"
API_NEWS_PATH="${{ vars.API_NEWS_PATH }}"
API_CONFIG_PATH="${{ vars.API_CONFIG_PATH }}"
API_BASE_URL="${{ vars.API_BASE_URL }}"
# manifest
MANIFEST_KEY="${{ secrets.MANIFEST_KEY }}"
OAUTH2_CLIENT_ID="${{ secrets.OAUTH2_CLIENT_ID }}"
OAUTH2_SCOPES="${{ vars.OAUTH2_SCOPES }}"
WC_PROJECTID="${{ secrets.WC_PROJECTID }}"
MIXPANEL_TOKEN="${{ secrets.MIXPANEL_TOKEN }}"
TEST_PASSWORD="${{ secrets.TEST_PASSWORD }}"
TEST_PK_P256="${{ secrets.TEST_PK_P256 }}"
TEST_PK_SECP256K1="${{ secrets.TEST_PK_SECP256K1 }}"
TEST_SEED_PHRASE_RECEIVER="${{ secrets.TEST_SEED_PHRASE_RECEIVER }}"
TEST_SEED_PHRASE_SENDER="${{ secrets.TEST_SEED_PHRASE_SENDER }}"
TEST_SENDER_ADDR="${{ secrets.TEST_SENDER_ADDR }}"
TEST_RECEIVER_ADDR="${{ secrets.TEST_RECEIVER_ADDR }}"
TEST_RECEIVER_EVM_ADDR="${{ secrets.TEST_RECEIVER_EVM_ADDR }}"
TEST_RECEIVER_METAMASK_EVM_ADDR="${{ secrets.TEST_RECEIVER_METAMASK_EVM_ADDR }}"
EOF
}
# Always create .env.pro
create_env_file ".env.pro"
# Create .env.dev if environment is development
if [[ "${{ needs.determine-env.outputs.env_name }}" == "development" ]]; then
create_env_file ".env.dev"
fi
- name: Run tests
run: pnpm test
- name: Build
run: |
if [[ "${{ needs.determine-env.outputs.env_name }}" == "development" ]]; then
pnpm run build:dev-ci
else
pnpm run build:ci
fi
env:
CI: true
COMMIT_SHA: ${{ github.sha }}
BRANCH_NAME: ${{ github.ref_name }}
PR_TITLE: ${{ github.event.pull_request.title || '' }}
PR_NUMBER: ${{ github.event.pull_request.number || '' }}
DEPLOYMENT_ENV: ${{ needs.determine-env.outputs.env_name }}
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: extension-build
path: dist/
- name: Check build size
run: |
echo "Build size:"
du -sh dist/
test:
needs: [determine-env, build]
runs-on: ubuntu-latest
concurrency:
group: tests-${{ github.workflow }}
cancel-in-progress: false
environment: ${{ needs.determine-env.outputs.env_name }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: extension-build
path: dist/
- name: Create .env.test file
run: |
cat << EOF > .env.test
# Test secrets
TEST_PASSWORD="${{ secrets.TEST_PASSWORD }}"
TEST_PK_P256="${{ secrets.TEST_PK_P256 }}"
TEST_PK_SECP256K1="${{ secrets.TEST_PK_SECP256K1 }}"
TEST_SEED_PHRASE_RECEIVER="${{ secrets.TEST_SEED_PHRASE_RECEIVER }}"
TEST_SEED_PHRASE_SENDER="${{ secrets.TEST_SEED_PHRASE_SENDER }}"
TEST_SENDER_ADDR="${{ secrets.TEST_SENDER_ADDR }}"
TEST_RECEIVER_ADDR="${{ secrets.TEST_RECEIVER_ADDR }}"
TEST_SENDER_EVM_ADDR="${{ secrets.TEST_SENDER_EVM_ADDR }}"
TEST_RECEIVER_EVM_ADDR="${{ secrets.TEST_RECEIVER_EVM_ADDR }}"
TEST_RECEIVER_METAMASK_EVM_ADDR="${{ secrets.TEST_RECEIVER_METAMASK_EVM_ADDR }}"
EOF
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Install dependencies
run: pnpm install
- name: Install Playwright Browsers
run: pnpm playwright install --with-deps chromium
- name: Run Playwright tests
run: pnpm test:e2e
env:
CI: true
HEADLESS: true
- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30