name: Test
on:
  workflow_dispatch:
  pull_request:
  push:
    branches: [main]

jobs:
  e2e-tests:
    name: Run end-to-end test suites

    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Run Immich Server E2E Test
        run: docker-compose -f ./docker/docker-compose.test.yml --env-file ./docker/.env.test up --abort-on-container-exit --exit-code-from immich-server-test

  server-unit-tests:
    name: Run server unit test suites and checks
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Run tests
        run: cd server && npm ci && npm run check:all

  web-unit-tests:
    name: Run web unit test suites and checks
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Run tests
        run: cd web && npm ci && npm run check:all