Skip to content

Update package.json: get-starket => get-starknet #3

Update package.json: get-starket => get-starknet

Update package.json: get-starket => get-starknet #3

Workflow file for this run

name: Run all tests
on:
push:
branches:
- develop
pull_request:
jobs:
build-all-artifacts:
runs-on: ubuntu-latest
strategy:
matrix:
env: [prod, hydrogen]
extension_type: [chrome, firefox]
environment: ${{ matrix.env }}
env:
# FEATURE flags
FEATURE_PRIVACY_SETTINGS: "true"
FEATURE_EXPERIMENTAL_SETTINGS: "false"
FEATURE_BETA_FEATURES: "true"
FEATURE_BANXA: "true"
FEATURE_LAYERSWAP: "true"
FEATURE_ORBITER: "true"
FEATURE_VERIFIED_DAPPS: "true"
FEATURE_MULTISIG: "true"
# API URLs
ARGENT_API_BASE_URL: ${{ vars.ARGENT_API_BASE_URL }}
ARGENT_X_STATUS_URL: ${{ vars.ARGENT_X_STATUS_URL }}
# API ENVIRONMENT
ARGENT_X_ENVIRONMENT: ${{ matrix.env }}
# Sentry
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ENVIRONMENT: "staging"
# Misc
SEGMENT_WRITE_KEY: ${{ secrets.SEGMENT_WRITE_KEY }}
RAMP_API_KEY: ${{ secrets.RAMP_API_KEY }}
SAFE_ENV_VARS: false
MULTICALL_MAX_BATCH_SIZE: 20
# Refresh intervals
FAST: 20 # 20s
MEDIUM: 60 # 60s
SLOW: 60 * 5 # 5m
VERY_SLOW: 24 * 60 * 60 # 1d
steps:
# Setup Project
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- uses: actions/setup-node@v4
with:
node-version: "18.x"
cache: "pnpm"
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup project
run: pnpm run setup
- name: Build extension for ${{ matrix.extension_type }}
run: |
if [[ "${{ matrix.extension_type }}" == "firefox" ]]; then
MANIFEST_VERSION=v2 pnpm run build:extension
else
MANIFEST_VERSION=v3 pnpm run build:extension
fi
- name: Check bundlesize for ${{ matrix.extension_type }}
run: pnpm bundlewatch
- name: Use Cache
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-${{ matrix.extension_type }}-${{ matrix.env }}
- name: Set filename prefix
run: echo "FILENAME_PREFIX=$(echo argent-x-${{ matrix.env }}-${{ github.ref_name }} | tr / -)" >> $GITHUB_ENV
- name: Create ${{ matrix.extension_type }} zip
run: (cd ./packages/extension/dist && zip -r "../../../${{ env.FILENAME_PREFIX }}-${{ matrix.extension_type }}" .)
- name: Upload ${{ matrix.extension_type }} extension
uses: actions/upload-artifact@v3
with:
name: ${{ env.FILENAME_PREFIX }}-${{ matrix.extension_type }}
path: "*-${{ matrix.extension_type }}.zip"
retention-days: 3
test-unit:
runs-on: ubuntu-latest
needs: [build-all-artifacts]
environment: "hydrogen" # test-unit is always run against hydrogen
env:
ARGENT_API_BASE_URL: ${{ vars.ARGENT_API_BASE_URL }}
ARGENT_X_STATUS_URL: ${{ vars.ARGENT_X_STATUS_URL }}
ARGENT_X_ENVIRONMENT: "hydrogen"
services:
devnet:
image: shardlabs/starknet-devnet:latest-seed0
ports:
- 5050:5050
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- uses: actions/setup-node@v4
with:
node-version: "18.x"
cache: "pnpm"
- name: Restore pnpm cache
uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Restore cached build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-chrome-hydrogen # test-unit is always run against chrome-hydrogen build
- name: Lint
run: pnpm run lint
- name: Run tests
run: pnpm run test:ci
- name: SonarCloud Scan
# TODO replace with master as soon as sonarcloud fixes the issue with action https://community.sonarsource.com/t/sonarsource-sonarcloud-github-action-failing-with-node-js-12-error/89664/2
uses: SonarSource/[email protected]
with:
projectBaseDir: ./packages/extension
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
test-e2e:
runs-on: ubuntu-latest
needs: [build-all-artifacts]
strategy:
matrix:
project: [ArgentX]
shardIndex: [1, 2, 3, 4, 5, 6, 7, 8]
shardTotal: [8]
env:
ARGENT_X_ENVIRONMENT: "hydrogen"
E2E_TESTNET_SEED1: ${{ secrets.E2E_TESTNET_SEED1 }}
E2E_TESTNET_SEED2: ${{ secrets.E2E_TESTNET_SEED2 }}
E2E_TESTNET_SEED3: ${{ secrets.E2E_TESTNET_SEED3 }}
E2E_ACCOUNT_1_SEED2: ${{ secrets.E2E_ACCOUNT_1_SEED2 }}
E2E_ACCOUNT_1_SEED3: ${{ secrets.E2E_ACCOUNT_1_SEED3 }}
## BANK ACCOUNT, USED FOR FUND OTHER ACCOUNTS
E2E_SENDER_ADDRESS: ${{ secrets.E2E_SENDER_ADDRESS }}
E2E_SENDER_PRIVATEKEY: ${{ secrets.E2E_SENDER_PRIVATEKEY }}
E2E_SENDER_SEED: ${{ secrets.E2E_SENDER_SEED }}
STARKNET_TESTNET_URL: ${{ secrets.STARKNET_TESTNET_URL }}
STARKSCAN_TESTNET_URL: ${{ secrets.STARKSCAN_TESTNET_URL }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- uses: actions/setup-node@v4
with:
node-version: "18.x"
cache: "pnpm"
- name: Restore pnpm cache
uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Restore cached build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-chrome-${{ env.ARGENT_X_ENVIRONMENT }} # test-e2e is always run against chrome-hydrogen build
- name: Install Playwright Browsers
run: npx playwright install chromium
- name: Run e2e tests
run: xvfb-run --auto-servernum pnpm test:e2e:extension --project=${{ matrix.project }} --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
- name: Upload artifacts
uses: actions/upload-artifact@v3
if: always()
with:
name: test-artifacts
path: |
packages/e2e/artifacts/playwright/
retention-days: 5
- name: Upload blob report to GitHub Actions Artifacts
if: always()
uses: actions/upload-artifact@v3
with:
name: all-blob-reports
path: packages/e2e/blob-report/
retention-days: 5
merge-reports:
needs: [test-e2e, test-webwallet]
if: always()
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- uses: actions/setup-node@v4
with:
node-version: "16"
cache: "pnpm"
- name: Restore pnpm cache
uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Download blob reports from GitHub Actions Artifacts
uses: actions/download-artifact@v3
with:
name: all-blob-reports
path: all-blob-reports
- name: Merge into HTML Report
run: npx playwright merge-reports --reporter html ./all-blob-reports
- name: Upload HTML report
uses: actions/upload-artifact@v3
with:
name: html-report--attempt-${{ github.run_attempt }}
path: playwright-report
retention-days: 14
add_pr_comments:
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' && github.actor != 'dependabot[bot]'}} # Run only for pull requests and if not triggered by dependabot
needs: [build-all-artifacts, test-unit, test-e2e]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- uses: actions/setup-node@v4
with:
node-version: "18.x"
cache: "pnpm"
- name: Restore pnpm cache
uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Set GHA_BRANCH
run: echo "GHA_BRANCH=$(echo $GITHUB_REF | awk -F / '{print $3}')" >> $GITHUB_ENV
- name: Comment PR
continue-on-error: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh pr comment ${{ env.GHA_BRANCH }} --body "[Builds for local testing](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})"
create_sentry_release:
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' && github.actor != 'dependabot[bot]'}} # Run only for pull requests and if not triggered by dependabot
needs: [build-all-artifacts, test-unit, test-e2e]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- uses: actions/setup-node@v4
with:
node-version: "18.x"
cache: "pnpm"
- name: Restore cached build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}-chrome-hydrogen
- name: Get Extension version
id: package-version
run: |
PACKAGE_VERSION=$(cat ./packages/extension/package.json | jq -r '.version')
echo "current-version=${PACKAGE_VERSION}" >> $GITHUB_OUTPUT
- name: Check sourcemaps
run: |
ls -l ./packages/extension
if [ ! -d "./packages/extension/sourcemaps" ]; then
echo "No sourcemaps found"
exit 0
fi
- name: Create Sentry release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_LOG_LEVEL: debug
with:
environment: ${{ env.SENTRY_ENVIRONMENT }}
sourcemaps: "./packages/extension/dist ./packages/extension/sourcemaps"
url_prefix: "~/"
version: ${{ steps.package-version.outputs.current-version }}-rc__${{ github.sha }}
ignore_missing: true
test-webwallet:
runs-on: ubuntu-latest
needs: [build-all-artifacts]
continue-on-error: true
environment: hydrogen
env:
NEXT_PUBLIC_NETWORK: "testnet"
NEXT_PUBLIC_RAMP_API_KEY: ${{ secrets.RAMP_API_KEY }}
NEXT_PUBLIC_FEATURE_COSIGNER: "true"
NEXT_PUBLIC_ARGENT_API_BASE_URL: ${{ vars.ARGENT_API_BASE_URL }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- uses: actions/setup-node@v4
with:
node-version: "18.x"
cache: "pnpm"
- name: Restore cached build
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}
- name: Build webwallet
run: pnpm run build:web
- name: Install Playwright Browsers
run: pnpm playwright install --with-deps
- name: Run tests
run: |
pnpm run --filter @argent/web start:ci &
sleep 10 &&
curl http://localhost:3005 &&
pnpm run test:e2e:webwallet
- name: Upload artifacts
uses: actions/upload-artifact@v3
if: always()
with:
name: test-artifacts
path: |
packages/e2e/artifacts/playwright/
retention-days: 5
- name: Upload blob report to GitHub Actions Artifacts
if: always()
uses: actions/upload-artifact@v3
with:
name: all-blob-reports
path: packages/e2e/blob-report/
retention-days: 5
slack_notif:
runs-on: ubuntu-latest
if: always()
needs: [test-unit, test-e2e, test-webwallet]
steps:
- name: Send notification to Slack
uses: 8398a7/[email protected]
with:
status: custom
custom_payload: |
{
text: "*ArgentX* - ${{ env.BUILD_TYPE }} - ${{ env.BUILD_STATUS == 'good' && 'SUCCESS' || 'FAILED' }}",
attachments: [{
fallback: 'fallback',
color: '${{ env.BUILD_STATUS }}',
title: 'Artifacts for testing ${{ env.BUILD_TYPE }} <${{ github.server_url }}/${{ github.repository }}/pull/${{ github.event.number }}|${{ github.event.number }} ${{ github.event.pull_request.title }}>',
text: '<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts|Artifacts link>',
fields: [{},],
actions: [{}]}]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_TYPE: ${{ github.event_name == 'pull_request' && 'pull request' || 'develop' }}
BUILD_STATUS: ${{ needs.test-unit.result == 'success' && needs.test-e2e.result == 'success' && needs.test-webwallet.result == 'success' && 'good' || 'danger' }}