name: Run Bruno API Tests # Pipeline se spustí při každém pushnutí nebo Pull Requestu do hlavní větvě on: push: branches: [ "main", "master" ] pull_request: branches: [ "main", "master" ] jobs: test: runs-on: ubuntu-latest steps: # 1. Krok: Stáhne kód z repozitáře do runneru - name: Checkout repository code uses: actions/checkout@v4 # 2. Krok: Připraví prostředí Node.js - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 # 3. Krok: Instalace závislostí v rootu - name: Install root dependencies run: | npm install # 4. Krok: Spuštění PotterAPI backendu - name: Start PotterAPI Backend run: | cd backends/potter-api npm install echo "PORT=3000" > .env node app.js > server.log 2>&1 & # 5. Krok: Vyčkání na server pomocí obyčejné smyčky s curl - name: Wait for PotterAPI server to be ready run: | echo "Čekám na naběhnutí PotterAPI serveru..." until curl -s http://127.0.0.1:3000 > /dev/null; do sleep 1 done echo "PotterAPI server běží a odpovídá!" # 6. Krok: Spustí všechny Bruno testy v apiTest - name: Run all Bruno API Tests run: | echo "Spouštím všechny testovací kolekce..." # Získat seznam všech složek v apiTest (kromě node_modules) TEST_DIRS=$(find apiTest -mindepth 1 -maxdepth 1 -type d ! -name "node_modules" ! -name ".git" | sort) echo "Nalezené testovací kolekce: ${TEST_DIRS}" # Spustit testy pro každou kolekci ALL_PASSED=true for dir in $TEST_DIRS; do echo "==========================================" echo "Spouštím testy pro: $dir" echo "==========================================" # Spust testy a zachyt výsledek if npx @usebruno/cli run "${dir#apiTest/}" -r; then echo "✅ Testy pro $(basename $dir) prošly" else echo "❌ Testy pro $(basename $dir) selhaly" ALL_PASSED=false fi done echo "==========================================" echo "Výsledek všech testů" echo "==========================================" if [ "$ALL_PASSED" = true ]; then echo "✅ Všechny testy prošly!" exit 0 else echo "❌ Některé testy selhaly" exit 1 fi # 7. Krok: Zobrazení server logů při selhání - name: Show server logs on failure if: failure() run: | echo "Server logs:" cat backends/potter-api/server.log || echo "Log soubor nebyl nalezen"