refactor: restructure to monorepo with backends and apiTest

- Move web/backend to backends/potter-api
- Move web/frontend to backends/potter-api/frontend
- Add root package.json with npm workspaces
- Update README.md with monorepo navigation
- Update .github/workflows/api-tests.yml for dynamic test discovery
- Update bruno_test_scenario.md paths
- Fix .gitignore to allow JSON data files
- Add three new AI tests in apiTest/PotterAPI/AI/

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
kankys committed 2026-09-15 21:08:39 +02:00
1 parent 2e185b47ef
commit d0cdabbf11
57 files changed
+292 -35

No files matched your search

+56 -12
View File
@@ -22,25 +22,69 @@ jobs:
with:
node-version: 20
# 3. Krok: Spuštění backendu
- name: Create .env, Install dependencies and start Backend
# 3. Krok: Instalace závislostí v rootu
- name: Install root dependencies
run: |
cd web/backend
echo "PORT=3000" > .env
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 &
# 4. Krok: Vyčkání na server pomocí obyčejné smyčky s curl
- name: Wait for Backend server to be ready
# 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í serveru..."
echo "Čekám na naběhnutí PotterAPI serveru..."
until curl -s http://127.0.0.1:3000 > /dev/null; do
sleep 1
done
echo "Server běží a odpovídá!"
echo "PotterAPI server běží a odpovídá!"
# 5. Krok: Spustí Bruno testy
- name: Run Bruno API Tests
# 6. Krok: Spustí všechny Bruno testy v apiTest
- name: Run all Bruno API Tests
run: |
cd apiTest/PotterAPI
npx @usebruno/cli run -r
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"
+6 -5
View File
@@ -1,9 +1,10 @@
# Ignorování složky node_modules v celém projektu (i v podsloužkách jako apiTest)
node_modules/
# Ignorování vygenerovaných HTML a JSON reportů z testů
# Ignorování vygenerovaných HTML reportů z testů
*.html
*.json
!bruno.json
!package.json
!package-lock.json
!**/public/index.html
# Ignorování vygenerovaných JSON reportů z testů, ale ne datové soubory
report*.json
!*.json
+193 -14
View File
@@ -1,22 +1,201 @@
## Automated API Testing (Bruno)
# 🧪 API Test Playground
Automatické testování REST API je postaveno na nástroji [Bruno](https://www.usebruno.com/). Testovací kolekce je uložena přímo v repozitáři ve složce `apiTest/PotterAPI` a je verzována společně s kódovým základem.
**Monorepo pro testování různých API služeb pomocí [Bruno](https://www.usebruno.com/) a Vibe agentů.**
### Lokální spuštění testů
Tento projekt slouží jako **playground** pro vývoj, testování a výuku API testování. Obsahuje backendové služby, frontendové aplikace a komplexní testovací kolekce.
Testy lze spouštět přímo z grafického rozhraní aplikace Bruno, nebo přes příkazovou řádku (CLI).
---
#### 1. Pomocí Bruno GUI
1. Otevřete aplikaci Bruno.
2. Zvolte **Open Collection** a vyberte složku `apiTest/PotterAPI` v tomto repozitáři.
3. Spusťte jednotlivé požadavky nebo celou kolekci přes **Runner**.
## 🗺️ Rozcestník
#### 2. Pomocí Bruno CLI
Ujistěte se, že běží lokální server (standardně na `http://127.0.0.1:3000`), a spusťte:
| Služba | Backend | Frontend | Testy | Dokumentace |
|--------|---------|----------|-------|--------------|
| **PotterAPI** | [`backends/potter-api`](./backends/potter-api) | [`backends/potter-api/frontend`](./backends/potter-api/frontend) | [`apiTest/PotterAPI`](./apiTest/PotterAPI) | [bruno_test_scenario.md](./backends/potter-api/bruno_test_scenario.md) |
---
## 🚀 Rychlý start
### 1️⃣ Inicializace projektu
```bash
# Spuštění testů v terminálu
npx @usebruno/cli run apiTest/PotterAPI -r
# Klonování repozitáře
git clone <repo-url>
cd api_test
# Spuštění testů s vygenerováním HTML reportu
npx @usebruno/cli run apiTest/PotterAPI -r --reporter-html report.html
# Instalace všech závislostí (využívá npm workspaces)
npm run setup
```
### 2️⃣ Spuštění backendů
```bash
# Spuštění všech backendů
npm run start:backends
# Nebo jednotlivě
npm run start:potter-api
```
Backend PotterAPI bude dostupný na **`http://localhost:3000`**.
### 3️⃣ Spuštění frontendů
```bash
# Spuštění PotterAPI frontend (Vue.js)
npm run start:potter-fe
```
Frontend bude dostupný na **`http://localhost:8080`**.
### 4️⃣ Spuštění testů
```bash
# Spuštění všech testů
npm run test:all
# Spuštění pouze PotterAPI testů
npm run test:potter
# Spuštění testů s watch módem (automatické opakování)
npm run test:watch
```
---
## 📁 Struktura monorepa
```
api_test/
├── README.md # Tento soubor (rozcestník)
│
├── package.json # Root package.json (npm workspaces)
│
├── backends/ # Backendové služby
│ └── potter-api/ # PotterAPI
│ ├── app.js # Hlavní Express.js aplikace
│ ├── routes/ # API routy
│ ├── controllers/ # Kontrolery
│ ├── frontend/ # Frontend (Vue.js)
│ │ ├── public/ # Statické soubory
│ │ ├── src/ # Zdrojové kódy
│ │ └── package.json # Frontend závislosti
│ ├── bruno_test_scenario.md # Dokumentace pro Bruno
│ └── README.md # Dokumentace PotterAPI
│
├── apiTest/ # Testovací kolekce (Bruno)
│ └── PotterAPI/ # Testy pro PotterAPI
│ ├── GET/ # GET požadavky
│ ├── POST/ # POST požadavky
│ └── AI/ # AI-specifické testy
│
├── .github/ # GitHub konfigurace
│ └── workflows/ # CI/CD pipeline
│ └── api-tests.yml # Automativké testování
│
└── .vibe/ # Vibe agenti (budoucí)
└── agents/ # AI asistenti
```
---
## 🔧 Nástroje
### Bruno
**Moderní alternativa k Postmanu** – Open-source nástroj pro testování API.
- **GUI**: Otevřete `apiTest/` v Bruno aplikaci
- **CLI**: Použijte `npx @usebruno/cli run <cesta> -r`
- **Dokumentace**: [usebruno.com](https://www.usebruno.com/)
### Vibe CLI
**AI asistent pro vývoj** – Pomáhá s psaním testů, dokumentací a delegací úkolů.
---
## 🤖 Vibe Agenti *(plánováno)*
| Agent | Účel | Vyvolání |
|-------|-------|----------|
| **API Test Assistant** | Pomoc s psaním a spouštěním API testů | `/api-tester` |
| **Bruno Expert** | Specialista na Bruno CLI a testovací scénáře | `/bruno-expert` |
| **Learning Guide** | Výuka API testování pro nováčky | `/learning-guide` |
---
## 📝 Pridávání nové API služby
Chcete přidat novou API službu? Postupujte takto:
### 1. Vytvořte backend
```bash
mkdir -p backends/<nova-sluzba>
cd backends/<nova-sluzba>
npm init -y
# Přidejte svůj backend kód
```
### 2. Vytvořte testy
```bash
mkdir -p apiTest/<nova-sluzba>
# Přidejte Bruno testovací kolekce (.yml soubory)
```
### 3. Aktualizujte dokumentaci
- Přidejte řádek do tabulky v tomto README
- Vytvořte `backends/<nova-sluzba>/README.md`
- Případně vytvořte `backends/<nova-sluzba>/bruno_test_scenario.md`
### 4. Testujte
```bash
npm run test:all # Spustí všechny testy včetně nových
```
---
## 🔄 CI/CD Pipeline
**Automatické testování** při každém pushu na `main` nebo `master` větvi:
- ✅ Spuštění backendu
- ✅ Čekání na inicializaci serveru
- ✅ Spuštění všech Bruno testů
- ✅ Reportování výsledků
Soubor: [`.github/workflows/api-tests.yml`](./.github/workflows/api-tests.yml)
---
## 📄 Dokumentace
- [PotterAPI – Testovací scénáře](./backends/potter-api/bruno_test_scenario.md) – Detailní průvodce testováním PotterAPI
---
## 🤝 Přispívání
1. Forkněte repozitář
2. Vytvořte feature branch (`git checkout -b feature/nova-funkce`)
3. Commitněte změny (`git commit -m 'Přidána nová funkce'`)
4. Pushněte na větev (`git push origin feature/nova-funkce`)
5. Vytvořte Pull Request
---
## 📞 Kontakt & Podpora
- **Issues**: [GitHub Issues](https://github.com/kankys/api_test/issues)
- **Diskuse**: Použijte GitHub Discussions
---
## 🏆 Technologie
| Technologie | Účel |
|------------|-------|
| **Node.js** | Backend runtime |
| **Express.js** | Web framework pro PotterAPI |
| **Vue.js** | Frontend framework |
| **Bruno** | API testování |
| **npm Workspaces** | Správa monorepa |
| **GitHub Actions** | CI/CD |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -39,21 +39,21 @@ Backend je Express.js aplikace běžící na portu **3000**.
**Spuštění z kořenové složky projektu:**
```bash
cd web/backend
cd backends/potter-api
npm install # Nainstaluje závislosti (pokud ještě nejsou nainstalovány)
npm start # Spustí server pomocí nodemon (automaticky restartuje při změnách)
```
**Přímé spuštění bez nodemon:**
```bash
cd web/backend
cd backends/potter-api
node app.js
```
Server bude dostupný na `http://localhost:3000`.
> [!TIP]
> Pokud je port 3000 obsazen, je nutné jej uvolnit nebo změnit port přímo v souboru `web/backend/app.js` (řádek 9: `const port = 3000`).
> Pokud je port 3000 obsazen, je nutné jej uvolnit nebo změnit port přímo v souboru `backends/potter-api/app.js` (řádek 9: `const port = 3000`).
### Frontend (Vue.js Aplikace)
@@ -61,7 +61,7 @@ Frontend je Vue.js aplikace, kterou lze spustit pro vývojové účely.
**Spuštění z kořenové složky projektu:**
```bash
cd web/frontend
cd backends/potter-api/frontend
npm install # Nainstaluje závislosti (pokud ještě nejsou nainstalovány)
npm run serve # Spustí vývojový server (obvykle na portu 8080)
# nebo
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 169 KiB

File renamed without changes.
File renamed without changes.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 147 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+33
View File
@@ -0,0 +1,33 @@
{
"name": "api-test-playground",
"version": "1.0.0",
"description": "Monorepo for API testing playground with Bruno and Vibe agents",
"private": true,
"workspaces": [
"backends/*",
"backends/*/frontend",
"apiTest/*"
],
"scripts": {
"setup": "npm install",
"start:all": "concurrently \"npm run start:backends\" \"npm run test:watch\"",
"start:backends": "cd backends/potter-api && npm start",
"start:potter-api": "cd backends/potter-api && npm start",
"start:potter-fe": "cd backends/potter-api/frontend && npm run serve",
"test:all": "cd apiTest && npx @usebruno/cli run PotterAPI -r",
"test:potter": "cd apiTest/PotterAPI && npx @usebruno/cli run -r",
"test:watch": "cd apiTest && npx @usebruno/cli run PotterAPI -r --watch",
"lint": "echo \"Linting all workspaces\""
},
"devDependencies": {
"concurrently": "^8.2.2"
},
"keywords": [
"api-testing",
"bruno",
"monorepo",
"potter-api"
],
"author": "",
"license": "ISC"
}