DF integrations - Ink, Mantle, Ronin, Sonic testnets #16610
Workflow file for this run
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: Test | |
on: [push, pull_request] | |
# Cancel any in-progress job or run | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
# Set default permissions as restrictive as possible | |
permissions: | |
actions: write # Required for upload-artifact | |
contents: read # Required for checkout and other read operations | |
checks: write # Required for test results | |
jobs: | |
# Setup job to install and cache dependencies | |
setup: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Setup Node.js | |
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: '20' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Only cache node_modules, let setup-node handle npm cache | |
- name: Cache node_modules | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
id: cache-node-modules | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
- name: Install Dependencies | |
if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
run: | | |
echo "Cache miss, installing dependencies..." | |
npm ci --prefer-offline --no-audit | |
# Job 1: Check Solidity Compilation and Solhint | |
solidity: | |
needs: setup | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Setup Node.js | |
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: '20' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Restore node_modules from setup job | |
- name: Restore node_modules | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-modules- | |
# Cache Solidity compilation artifacts | |
- name: Restore compilation caches | |
id: cache-solidity | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
with: | |
path: | | |
.test/artifacts | |
.test/cache | |
~/.cache/hardhat | |
typechain-types | |
key: ${{ runner.os }}-solidity-${{ hashFiles('public/samples/**/*.sol', 'hardhat.config.cts') }} | |
restore-keys: | | |
${{ runner.os }}-solidity- | |
- name: Check Solidity Compilation | |
run: | | |
echo "Running Solidity compilation with cache..." | |
npm run sol:compile | |
- name: Check Solidity Solhint | |
run: | | |
echo "Running Solhint..." | |
npm run lint-solc | |
# Job 2: Check ESLint | |
eslint: | |
needs: setup | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Setup Node.js | |
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: '20' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Restore node_modules from setup job | |
- name: Restore node_modules | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-modules- | |
- name: Check ESLint | |
run: | | |
echo "Running ESLint with cache..." | |
npm run lint -- --cache --cache-strategy content | |
- name: Check Formatting | |
run: | | |
echo "Running Prettier with cache..." | |
npm run format:check -- --cache | |
# Job 3: Check Internal Links | |
linkcheck-internal: | |
needs: setup | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Setup Node.js | |
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: '20' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Restore node_modules from setup job | |
- name: Restore node_modules | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-modules- | |
- name: Check Internal Links | |
run: npm run linkcheck-internal | |
# Job 4: Check Types | |
typecheck: | |
needs: [setup] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Setup Node.js | |
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: '20' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Restore node_modules from setup job | |
- name: Restore node_modules | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-modules- | |
- name: Generate Astro types | |
run: | | |
echo "Generating Astro types..." | |
npx astro sync | |
- name: Check Types | |
run: | | |
echo "Running type check..." | |
npm run typecheck | |
# Job 5: Run Jest Tests | |
jest: | |
needs: [setup] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20.x] | |
fail-fast: false | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Setup Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Restore node_modules from setup job | |
- name: Restore node_modules | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
with: | |
path: | | |
node_modules | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-modules- | |
- name: Run Jest Tests | |
run: npm test -- --coverage | |
- name: Upload Test Coverage | |
if: always() | |
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
with: | |
name: coverage-report-node-${{ matrix.node-version }} | |
path: coverage/ | |
retention-days: 30 |