Integration Tests - MocStepan/pdo GitHub Wiki

Implementace integračních testů s matrix strategy

Jednoduchý tutoriál krok za krokem, jak nastavit GitHub Actions workflow se spuštěním npm test na macOS, Windows a Linux, včetně samostatného kroku pro matrix strategy i varianty s hotovým container image.


Krok 1: Otevření workflow souboru

Otevři ve svém repozitáři soubor:

.github/workflows/pull-request.yaml

Krok 2: Definice názvu workflow

Na začátek souboru přidej:

name: CI Test

Krok 3: Nastavení triggeru (on)

Urči, kdy se workflow spustí:

on:
  pull_request:
    branches: [main]

Krok 4: Definice jobu test-app

Vytvoř job, který poběží na runneru podle matrix:

jobs:
  test-app:
    runs-on: ${{ matrix.os }}

Krok 5: Konfigurace matrix strategy

Přidej blok strategy.matrix, aby se job spouštěl na třech OS:

strategy:
  matrix:
    os: [ubuntu-latest, windows-latest, macos-latest]

Krok 6: Přidání kroků (steps)

Doplníme standardní kroky pro checkout, instalaci a spuštění testů:

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

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
          node-version: '18'

    - name: Install dependencies
      run: npm ci

    - name: Run tests
      run: npm test

Krok 7: Použití container image (volitelně)

Místo instalačních kroků můžeš využít hotový Docker image s Node.js. Přidej do jobu:

container:
  image: node:18

A pak stačí jednoduché kroky:

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

    - name: Install & test
      run: |
          npm ci
          npm test

Kompletní ukázka YAML s container image

name: CI Test
on:
  pull_request:
    branches: [main]

jobs:
  test-app:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]

    # Volitelně, pokud chceš použít Docker container
    container:
      image: node:18

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

        - name: Install & test
          run: |
              npm ci
              npm test