Vizzuality/landgriffon

View on GitHub
.github/workflows/testing-api.yml

Summary

Maintainability
Test Coverage
name: API Tests

on:
  push:
    paths:
      - 'api/**'

  workflow_dispatch:

env:
  NODE_ENV: test
  DB_HOST: localhost
  DB_USERNAME: landgriffon
  DB_PASSWORD: landgriffon
  DB_DATABASE: landgriffon
  GMAPS_API_KEY: secretApiKey

jobs:
  testing-api-e2e:
    name: E2E Tests
    runs-on: ubuntu-22.04
    timeout-minutes: 30

    services:
      postgres:
        image: vizzuality/landgriffon-database:latest
        ports:
          - 5432:5432
        env:
          POSTGRES_USER: landgriffon
          POSTGRES_PASSWORD: landgriffon
          POSTGRES_DB: landgriffon

      redis:
        image: redis
        ports:
          - 6379:6379

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

      - name: Use Node.js 18.16
        uses: actions/setup-node@v3
        with:
          node-version: '18.16'

      - name: Install API dependencies
        working-directory: api
        run: yarn install

      - name: Prepare database
        working-directory: api
        run: yarn test:db-prepare

      - name: Run API tests + coverage
        working-directory: api
        run: yarn test:e2e

  #      - name: Generate API coverage artifact
  #        uses: actions/upload-artifact@v2
  #        with:
  #          name: api-report
  #          path: ${{github.workspace}}/api/coverage/lcov.info


  testing-api-integration:
    name: Integration Tests
    runs-on: ubuntu-22.04
    timeout-minutes: 30

    services:
      postgres:
        image: vizzuality/landgriffon-database:latest
        ports:
          - 5432:5432
        env:
          POSTGRES_USER: landgriffon
          POSTGRES_PASSWORD: landgriffon
          POSTGRES_DB: landgriffon

      redis:
        image: redis
        ports:
          - 6379:6379

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

      - name: Use Node.js 18.16
        uses: actions/setup-node@v3
        with:
          node-version: '18.16'

      - name: Install API dependencies
        working-directory: api
        run: yarn install

      - name: Prepare database
        working-directory: api
        run: yarn test:db-prepare

      - name: Run API tests + coverage
        working-directory: api
        run: yarn test:integration

  testing-api-unit:
    name: Unit Tests
    runs-on: ubuntu-22.04
    timeout-minutes: 30

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

      - name: Use Node.js 18.16
        uses: actions/setup-node@v3
        with:
          node-version: '18.16'

      - name: Install API dependencies
        working-directory: api
        run: yarn install

      - name: Run API tests + coverage
        working-directory: api
        run: yarn test:unit

#      - name: Generate API coverage artifact
#        uses: actions/upload-artifact@v2
#        with:
#          name: api-report
#          path: ${{github.workspace}}/api/coverage/lcov.info