Skip to content

15 feature setup UI and theme #11

15 feature setup UI and theme

15 feature setup UI and theme #11

Workflow file for this run

name: Test Suite
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.12.4
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run linting
run: pnpm lint
- name: Run type checking
run: pnpm build --dry-run || echo "Type checking completed"
- name: Run unit tests
run: pnpm test --coverage --watchAll=false
- name: Upload coverage reports
uses: codecov/codecov-action@v4
if: always()
with:
file: ./coverage/lcov.info
flags: unit-tests
name: unit-tests-coverage
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
e2e-tests:
name: E2E Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-playwright-
- name: Install Playwright browsers
run: pnpm exec playwright install --with-deps
- name: Run e2e tests
run: pnpm test:e2e
env:
CI: true
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET || 'test-secret-key-for-ci' }}
NEXTAUTH_URL: http://localhost:3000
- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: e2e-test-results
path: test-results/
retention-days: 7
build-check:
name: Build Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build application
run: pnpm build
env:
NEXTAUTH_SECRET: test-secret-key-for-build-check
NEXTAUTH_URL: http://localhost:3000
test-summary:
name: Test Summary
runs-on: ubuntu-latest
needs: [unit-tests, e2e-tests, build-check]
if: always()
steps:
- name: Check test results
run: |
if [[ "${{ needs.unit-tests.result }}" == "success" && \
"${{ needs.e2e-tests.result }}" == "success" && \
"${{ needs.build-check.result }}" == "success" ]]; then
echo "✅ All tests passed!"
exit 0
else
echo "❌ Some tests failed:"
echo "Unit tests: ${{ needs.unit-tests.result }}"
echo "E2E tests: ${{ needs.e2e-tests.result }}"
echo "Build check: ${{ needs.build-check.result }}"
exit 1
fi