Skip to content

Milestone 5/4: Add real-time email updates via WebSockets #34

Milestone 5/4: Add real-time email updates via WebSockets

Milestone 5/4: Add real-time email updates via WebSockets #34

Workflow file for this run

name: CI
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
backend-checks:
name: Backend (Go)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25.3'
cache-dependency-path: backend/go.sum
- name: Cache Go modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('backend/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Check gofmt
run: ./scripts/check.sh --check gofmt
env:
GOTOOLCHAIN: auto
- name: Check go mod tidy
run: ./scripts/check.sh --check go-mod-tidy
env:
GOTOOLCHAIN: auto
- name: Run govulncheck
run: ./scripts/check.sh --check govulncheck
env:
GOTOOLCHAIN: auto
- name: Run go vet
run: ./scripts/check.sh --check go-vet
env:
GOTOOLCHAIN: auto
- name: Run staticcheck
run: ./scripts/check.sh --check staticcheck
env:
GOTOOLCHAIN: auto
- name: Run ineffassign
run: ./scripts/check.sh --check ineffassign
env:
GOTOOLCHAIN: auto
- name: Run misspell
run: ./scripts/check.sh --check misspell
env:
GOTOOLCHAIN: auto
- name: Run gocyclo
run: ./scripts/check.sh --check gocyclo
env:
GOTOOLCHAIN: auto
- name: Run nilaway
run: ./scripts/check.sh --check nilaway
env:
GOTOOLCHAIN: auto
- name: Run backend tests
run: ./scripts/check.sh --check backend-tests
env:
GOTOOLCHAIN: auto
frontend-checks:
name: Frontend (TypeScript)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '25'
cache: 'pnpm'
cache-dependency-path: ./frontend/pnpm-lock.yaml
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./frontend
- name: Check Prettier
run: ./scripts/check.sh --check prettier
- name: Run ESLint
run: ./scripts/check.sh --check eslint
- name: Run frontend tests
run: ./scripts/check.sh --check frontend-tests
e2e-tests:
name: E2E Tests (Playwright)
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '25'
cache: 'pnpm'
cache-dependency-path: ./frontend/pnpm-lock.yaml
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./frontend
- name: Install Playwright browsers
run: pnpm exec playwright install --with-deps chromium
working-directory: ./frontend
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25.3'
cache-dependency-path: backend/go.sum
- name: Cache Go modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('backend/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Run E2E tests
run: pnpm test:e2e
working-directory: ./frontend
env:
VMAIL_TEST_MODE: 'true'
GOTOOLCHAIN: auto
PLAYWRIGHT: '1'