Files
2026-07-13 13:08:41 +08:00

112 lines
2.6 KiB
YAML

name: Test All Applications
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
test-repository-tools:
name: Test repository tooling
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
- name: Install dependencies
run: npm ci
- name: Run repository tests
run: npm test
- name: Install presentation export runtime
run: npm run sync:presentation-export
- name: Verify presentation export runtime
run: npm run check:presentation-export
test-fastapi:
name: Test FastAPI
runs-on: ubuntu-latest
defaults:
run:
working-directory: servers/fastapi
env:
APP_DATA_DIRECTORY: /tmp/presenton-app-data
TEMP_DIRECTORY: /tmp/presenton-temp
DATABASE_URL: sqlite+aiosqlite:////tmp/presenton-test.db
DISABLE_ANONYMOUS_TRACKING: "true"
DISABLE_IMAGE_GENERATION: "true"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: servers/fastapi/uv.lock
- name: Install locked dependencies
run: uv sync --locked --dev
- name: Create test directories
run: mkdir -p "$APP_DATA_DIRECTORY" "$TEMP_DIRECTORY"
- name: Run all pytest tests
run: uv run --locked python -m pytest --verbose --tb=short
test-nextjs:
name: Test Next.js
runs-on: ubuntu-latest
defaults:
run:
working-directory: servers/nextjs
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
cache-dependency-path: servers/nextjs/package-lock.json
- name: Install dependencies
run: npm ci
- name: Run Node.js tests
run: npm test
- name: Run ESLint
run: npm run lint
- name: Build application
env:
NEXT_PUBLIC_FAST_API: http://localhost:8000
NEXT_PUBLIC_URL: http://localhost:3000
run: npm run build
- name: Run Cypress component tests
run: npx cypress run --component --browser electron