Test/lw 12373 firefox e2e support #8474
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: Continuous Integration | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review] | |
push: | |
branches: | |
- main | |
- 'release/**' | |
permissions: | |
pull-requests: write | |
actions: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
BUILD_ARTIFACT_NAME: 'lace-dev-${{ github.sha }}' | |
jobs: | |
prepare: | |
name: Prepare | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Collect Workflow Telemetry Build Packages | |
uses: catchpoint/workflow-telemetry-action@v2 | |
with: | |
comment_on_pr: false | |
- name: Setup Node.js and install dependencies | |
uses: ./.github/actions/install | |
with: | |
WALLET_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }} | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
- name: Build common | |
uses: ./.github/actions/build/package | |
with: | |
DIR: packages/common | |
NAME: packages-common | |
- name: Build cardano | |
uses: ./.github/actions/build/package | |
with: | |
DIR: packages/cardano | |
NAME: packages-cardano | |
- name: Build translation | |
uses: ./.github/actions/build/package | |
with: | |
DIR: packages/translation | |
NAME: packages-translation | |
- name: Build core | |
uses: ./.github/actions/build/package | |
with: | |
DIR: packages/core | |
NAME: packages-core | |
- name: Build staking | |
uses: ./.github/actions/build/package | |
with: | |
DIR: packages/staking | |
NAME: packages-staking | |
- name: Build nami | |
uses: ./.github/actions/build/package | |
with: | |
DIR: packages/nami | |
NAME: packages-nami | |
unitTests: | |
name: Unit tests | |
runs-on: ubuntu-22.04 | |
needs: prepare | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Node.js and install dependencies | |
uses: ./.github/actions/install | |
with: | |
WALLET_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }} | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
- name: Download packages-common | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-common | |
path: packages/common/dist | |
- name: Download packages-cardano | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-cardano | |
path: packages/cardano/dist | |
- name: Download packages-translation | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-translation | |
path: packages/translation/dist | |
- name: Download packages-core | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-core | |
path: packages/core/dist | |
- name: Download packages-staking | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-staking | |
path: packages/staking/dist | |
- name: Download packages-nami | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-nami | |
path: packages/nami/dist | |
- name: Collect Workflow Telemetry Unit Tests | |
uses: catchpoint/workflow-telemetry-action@v2 | |
with: | |
comment_on_pr: false | |
- name: Execute unit tests | |
uses: ./.github/actions/test/unit | |
release-pkg: | |
name: Release package | |
runs-on: ubuntu-22.04 | |
needs: prepare | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Node.js and install dependencies | |
uses: ./.github/actions/install | |
with: | |
WALLET_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }} | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
- name: Download packages-common | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-common | |
path: packages/common/dist | |
- name: Download packages-cardano | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-cardano | |
path: packages/cardano/dist | |
- name: Download packages-translation | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-translation | |
path: packages/translation/dist | |
- name: Download packages-core | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-core | |
path: packages/core/dist | |
- name: Download packages-staking | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-staking | |
path: packages/staking/dist | |
- name: Download packages-nami | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-nami | |
path: packages/nami/dist | |
- name: Collect Workflow Telemetry Smoke Tests | |
uses: catchpoint/workflow-telemetry-action@v2 | |
with: | |
comment_on_pr: false | |
- name: Build Lace browser extension | |
uses: ./.github/actions/build/app | |
with: | |
BLOCKFROST_PROJECT_ID_MAINNET: ${{ secrets.BLOCKFROST_PROJECT_ID_MAINNET }} | |
BLOCKFROST_PROJECT_ID_PREPROD: ${{ secrets.BLOCKFROST_PROJECT_ID_PREPROD }} | |
BLOCKFROST_PROJECT_ID_PREVIEW: ${{ secrets.BLOCKFROST_PROJECT_ID_PREVIEW }} | |
DIR: apps/browser-extension-wallet | |
NAME: lace-browser-extension | |
LACE_EXTENSION_KEY: ${{ secrets.MANIFEST_PUBLIC_KEY }} | |
POSTHOG_PRODUCTION_TOKEN: ${{ startsWith(github.ref, 'refs/heads/release') && secrets.POSTHOG_PRODUCTION_TOKEN || '' }} | |
PRODUCTION_MODE_TRACKING: ${{ startsWith(github.ref, 'refs/heads/release') && 'true' || 'false' }} | |
BANXA_LACE_URL: ${{ startsWith(github.ref, 'refs/heads/release') && 'https://lacewallet.banxa.com/' }} | |
SENTRY_AUTH_TOKEN: ${{ startsWith(github.ref, 'refs/heads/release') && secrets.SENTRY_AUTH_TOKEN || '' }} | |
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
SENTRY_ORG: ${{ startsWith(github.ref, 'refs/heads/release') && vars.SENTRY_ORG || '' }} | |
SENTRY_PROJECT: ${{ startsWith(github.ref, 'refs/heads/release') && vars.SENTRY_PROJECT || ''}} | |
SENTRY_ENVIRONMENT: 'production' | |
DAPP_RADAR_API_KEY: ${{ startsWith(github.ref, 'refs/heads/release') && secrets.DAPP_RADAR_API_KEY || '' }} | |
- name: Build Lace Firefox addon | |
uses: ./.github/actions/build/app | |
with: | |
BROWSER_TARGET: 'firefox' | |
BLOCKFROST_PROJECT_ID_MAINNET: ${{ secrets.BLOCKFROST_PROJECT_ID_MAINNET }} | |
BLOCKFROST_PROJECT_ID_PREPROD: ${{ secrets.BLOCKFROST_PROJECT_ID_PREPROD }} | |
BLOCKFROST_PROJECT_ID_PREVIEW: ${{ secrets.BLOCKFROST_PROJECT_ID_PREVIEW }} | |
DIR: apps/browser-extension-wallet | |
NAME: lace-firefox-addon | |
LACE_EXTENSION_KEY: ${{ secrets.MANIFEST_PUBLIC_KEY }} | |
POSTHOG_PRODUCTION_TOKEN: ${{ startsWith(github.ref, 'refs/heads/release') && secrets.POSTHOG_PRODUCTION_TOKEN || '' }} | |
PRODUCTION_MODE_TRACKING: ${{ startsWith(github.ref, 'refs/heads/release') && 'true' || 'false' }} | |
BANXA_LACE_URL: ${{ startsWith(github.ref, 'refs/heads/release') && 'https://lacewallet.banxa.com/' }} | |
SENTRY_AUTH_TOKEN: ${{ startsWith(github.ref, 'refs/heads/release') && secrets.SENTRY_AUTH_TOKEN || '' }} | |
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
SENTRY_ORG: ${{ startsWith(github.ref, 'refs/heads/release') && vars.SENTRY_ORG || '' }} | |
SENTRY_PROJECT: ${{ startsWith(github.ref, 'refs/heads/release') && vars.SENTRY_PROJECT || ''}} | |
SENTRY_ENVIRONMENT: 'production' | |
DAPP_RADAR_API_KEY: ${{ startsWith(github.ref, 'refs/heads/release') && secrets.DAPP_RADAR_API_KEY || '' }} | |
build: | |
name: Build Lace | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Build Lace chrome artifact | |
uses: ./.github/shared/build | |
with: | |
BROWSER_TARGET: 'chromium' | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
LACE_EXTENSION_KEY: ${{ secrets.MANIFEST_PUBLIC_KEY }} | |
BLOCKFROST_PROJECT_ID_MAINNET: ${{ secrets.BLOCKFROST_PROJECT_ID_MAINNET }} | |
BLOCKFROST_PROJECT_ID_PREPROD: ${{ secrets.BLOCKFROST_PROJECT_ID_PREPROD }} | |
BLOCKFROST_PROJECT_ID_PREVIEW: ${{ secrets.BLOCKFROST_PROJECT_ID_PREVIEW }} | |
BLOCKFROST_PROJECT_ID_SANCHONET: ${{ secrets.BLOCKFROST_PROJECT_ID_SANCHONET }} | |
SENTRY_AUTH_TOKEN: ${{ startsWith(github.ref, 'refs/heads/release') && secrets.SENTRY_AUTH_TOKEN || '' }} | |
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
SENTRY_ORG: ${{ startsWith(github.ref, 'refs/heads/release') && vars.SENTRY_ORG || '' }} | |
SENTRY_PROJECT: ${{ startsWith(github.ref, 'refs/heads/release') && vars.SENTRY_PROJECT || ''}} | |
SENTRY_ENVIRONMENT: 'smoke-tests' | |
WALLET_POLLING_INTERVAL_IN_SEC: 5 | |
- name: Upload chrome artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: '${{ env.BUILD_ARTIFACT_NAME }}-chrome' | |
path: ./apps/browser-extension-wallet/dist | |
- name: Build Lace firefox artifact | |
uses: ./.github/shared/build | |
with: | |
BROWSER_TARGET: 'firefox' | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
LACE_EXTENSION_KEY: ${{ secrets.MANIFEST_PUBLIC_KEY }} | |
BLOCKFROST_PROJECT_ID_MAINNET: ${{ secrets.BLOCKFROST_PROJECT_ID_MAINNET }} | |
BLOCKFROST_PROJECT_ID_PREPROD: ${{ secrets.BLOCKFROST_PROJECT_ID_PREPROD }} | |
BLOCKFROST_PROJECT_ID_PREVIEW: ${{ secrets.BLOCKFROST_PROJECT_ID_PREVIEW }} | |
BLOCKFROST_PROJECT_ID_SANCHONET: ${{ secrets.BLOCKFROST_PROJECT_ID_SANCHONET }} | |
SENTRY_AUTH_TOKEN: ${{ startsWith(github.ref, 'refs/heads/release') && secrets.SENTRY_AUTH_TOKEN || '' }} | |
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
SENTRY_ORG: ${{ startsWith(github.ref, 'refs/heads/release') && vars.SENTRY_ORG || '' }} | |
SENTRY_PROJECT: ${{ startsWith(github.ref, 'refs/heads/release') && vars.SENTRY_PROJECT || ''}} | |
SENTRY_ENVIRONMENT: 'smoke-tests' | |
WALLET_POLLING_INTERVAL_IN_SEC: 5 | |
- name: Upload firefox artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: '${{ env.BUILD_ARTIFACT_NAME }}-firefox' | |
path: ./apps/browser-extension-wallet/dist | |
smokeTests-chrome: | |
name: Smoke e2e tests - Chrome | |
runs-on: ubuntu-22.04 | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
batch: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Execute E2E tests | |
uses: ./.github/actions/test/smoke | |
with: | |
BROWSER: "chrome" | |
BATCH: ${{ matrix.batch }} | |
TEST_DAPP_URL: ${{ secrets.TEST_DAPP_URL }} | |
WALLET_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }} | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
processReports-chrome: | |
name: Process smoke e2e test reports - Chrome | |
runs-on: ubuntu-22.04 | |
needs: smokeTests-chrome | |
if: always() | |
steps: | |
- name: Call process reports workflow | |
uses: ./.github/actions/test/reports | |
with: | |
BROWSER: 'chrome' | |
SMOKE_TESTS_RESULT: ${{ needs.smokeTests-chrome.result }} | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
E2E_AWS_ACCESS_KEY_ID: ${{ secrets.E2E_AWS_ACCESS_KEY_ID }} | |
E2E_AWS_SECRET_ACCESS_KEY: ${{ secrets.E2E_AWS_SECRET_ACCESS_KEY }} | |
E2E_REPORTS_USER: ${{ secrets.E2E_REPORTS_USER }} | |
E2E_REPORTS_PASSWORD: ${{ secrets.E2E_REPORTS_PASSWORD }} | |
E2E_REPORTS_URL: ${{ secrets.E2E_REPORTS_URL }} | |
smokeTests-firefox: | |
name: Smoke e2e tests - Firefox | |
runs-on: ubuntu-22.04 | |
needs: smokeTests-chrome | |
strategy: | |
fail-fast: false | |
matrix: | |
batch: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Execute E2E tests | |
uses: ./.github/actions/test/smoke | |
with: | |
BROWSER: 'firefox' | |
BATCH: ${{ matrix.batch }} | |
TEST_DAPP_URL: ${{ secrets.TEST_DAPP_URL }} | |
WALLET_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }} | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
processReports-firefox: | |
name: Process smoke e2e test reports - Firefox | |
runs-on: ubuntu-22.04 | |
needs: smokeTests-firefox | |
if: always() | |
steps: | |
- name: Call process reports workflow | |
uses: ./.github/actions/test/reports | |
with: | |
BROWSER: 'firefox' | |
SMOKE_TESTS_RESULT: ${{ needs.smokeTests-firefox.result }} | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
E2E_AWS_ACCESS_KEY_ID: ${{ secrets.E2E_AWS_ACCESS_KEY_ID }} | |
E2E_AWS_SECRET_ACCESS_KEY: ${{ secrets.E2E_AWS_SECRET_ACCESS_KEY }} | |
E2E_REPORTS_USER: ${{ secrets.E2E_REPORTS_USER }} | |
E2E_REPORTS_PASSWORD: ${{ secrets.E2E_REPORTS_PASSWORD }} | |
E2E_REPORTS_URL: ${{ secrets.E2E_REPORTS_URL }} | |
if-core-changed: | |
name: When core changed | |
if: ${{ github.event.pull_request.draft == false }} | |
runs-on: ubuntu-22.04 | |
outputs: | |
requireChromaticCheck: ${{ steps.diffcheck.outputs.requireChromaticCheck }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- id: diffcheck | |
run: | | |
set +e | |
git diff --quiet ${{ github.event.pull_request.base.sha }}..${{ github.sha }} -- packages/core/** | |
echo "requireChromaticCheck=$?" >> "$GITHUB_OUTPUT" | |
cat $GITHUB_OUTPUT | |
set -e | |
chromaticCore: | |
name: > | |
Run Chromatic check: Core | |
runs-on: ubuntu-22.04 | |
needs: | |
- prepare | |
- if-core-changed | |
steps: | |
- name: Checkout repository | |
if: ${{ needs.if-core-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Node.js and install dependencies | |
if: ${{ needs.if-core-changed.outputs.requireChromaticCheck == 1 }} | |
uses: ./.github/actions/install | |
with: | |
WALLET_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }} | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
- name: Download packages-common | |
if: ${{ needs.if-core-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-common | |
path: packages/common/dist | |
- name: Download packages-cardano | |
if: ${{ needs.if-core-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-cardano | |
path: packages/cardano/dist | |
- name: Download packages-translation | |
if: ${{ needs.if-core-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-translation | |
path: packages/translation/dist | |
- name: Download packages-core | |
if: ${{ needs.if-core-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-core | |
path: packages/core/dist | |
- name: Chromatic packages-core | |
if: ${{ needs.if-core-changed.outputs.requireChromaticCheck == 1 }} | |
uses: ./.github/actions/chromatic | |
with: | |
DIR: packages/core | |
NAME: packages-core | |
TOKEN: ${{ secrets.CHROMATIC_LACE_CORE_TOKEN }} | |
- name: Skip | |
if: ${{ needs.if-core-changed.outputs.requireChromaticCheck == 0 }} | |
run: echo "Chromatic check for packages/core not needed" | |
exit 0 | |
if-staking-changed: | |
name: When staking change | |
if: ${{ github.event.pull_request.draft == false }} | |
runs-on: ubuntu-22.04 | |
outputs: | |
requireChromaticCheck: ${{ steps.diffcheck.outputs.requireChromaticCheck }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- id: diffcheck | |
run: | | |
set +e | |
git diff --quiet ${{ github.event.pull_request.base.sha }}..${{ github.sha }} -- packages/staking/** | |
echo "requireChromaticCheck=$?" >> "$GITHUB_OUTPUT" | |
cat $GITHUB_OUTPUT | |
set -e | |
chromaticStaking: | |
name: > | |
Run Chromatic check: Staking | |
runs-on: ubuntu-22.04 | |
needs: | |
- prepare | |
- if-staking-changed | |
steps: | |
- name: Checkout repository | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Node.js and install dependencies | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 1 }} | |
uses: ./.github/actions/install | |
with: | |
WALLET_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }} | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
- name: Download packages-common | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-common | |
path: packages/common/dist | |
- name: Download packages-cardano | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-cardano | |
path: packages/cardano/dist | |
- name: Download packages-translation | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-translation | |
path: packages/translation/dist | |
- name: Download packages-core | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-core | |
path: packages/core/dist | |
- name: Download packages-staking | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 1 }} | |
uses: actions/download-artifact@v4 | |
with: | |
name: packages-staking | |
path: packages/staking/dist | |
- name: Chromatic packages-staking | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 1 }} | |
uses: ./.github/actions/chromatic | |
with: | |
DIR: packages/staking | |
NAME: packages-staking | |
TOKEN: ${{ secrets.CHROMATIC_LACE_STAKING_TOKEN }} | |
- name: Skip | |
if: ${{ needs.if-staking-changed.outputs.requireChromaticCheck == 0 }} | |
run: echo "Chromatic check for packages/staking not needed" | |
exit 0 |