User story / Problem statement
Every push and PR should automatically validate that contracts compile and tests pass, and that the frontend has no type errors or lint violations. No broken code should land in main.
Proposed solution
# .github/workflows/ci.yml
on: [push, pull_request]
jobs:
contracts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@<sha> # pin to SHA
- uses: pnpm/action-setup@<sha>
- run: pnpm install
- run: cd packages/hardhat && pnpm lint # solhint
- run: cd packages/hardhat && pnpm test # hardhat + @fhevm/mock-utils
- run: cd packages/hardhat && pnpm coverage # solidity-coverage
frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@<sha>
- uses: pnpm/action-setup@<sha>
- run: pnpm install
- run: cd packages/nextjs && pnpm check-types # tsc --noEmit
- run: cd packages/nextjs && pnpm lint # oxlint
- run: cd packages/nextjs && pnpm test # vitest
Acceptance criteria
Technical notes
- Use
@fhevm/mock-utils 0.4.2 for contract tests — no live network needed
- GitHub Actions linted with
actionlint locally before commit
- Reference: docs/PRD.md §14.5, §14.6
Dependencies
Part of Epic #15 — Infra
User story / Problem statement
Every push and PR should automatically validate that contracts compile and tests pass, and that the frontend has no type errors or lint violations. No broken code should land in main.
Proposed solution
Acceptance criteria
contractsjob: solhint + hardhat test + coverage passfrontendjob: tsc + oxlint + vitest passprek installpre-commit hooks configured (.prek.ymlat repo root)Technical notes
@fhevm/mock-utils 0.4.2for contract tests — no live network neededactionlintlocally before commitDependencies
Part of Epic #15 — Infra