Files
api_test/.github/workflows/api-tests.yml
T
kankys 7ec092a134 fix: update CI/CD to run bruno tests from collection root
Bruno CLI requires running from the collection root directory that contains opencollection.yml.
Changed test execution to cd into each collection directory before running tests.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-09-15 21:18:19 +02:00

93 lines
2.9 KiB
YAML

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 "=========================================="
# Přepnout do složky kolekce a spustit testy
cd "$dir"
if npx @usebruno/cli run -r; then
echo "✅ Testy pro $(basename $dir) prošly"
else
echo "❌ Testy pro $(basename $dir) selhaly"
ALL_PASSED=false
fi
cd ../..
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"