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>
No files matched your search
@@ -22,25 +22,69 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
|
|
||||||
# 3. Krok: Spuštění backendu
|
# 3. Krok: Instalace závislostí v rootu
|
||||||
- name: Create .env, Install dependencies and start Backend
|
- name: Install root dependencies
|
||||||
run: |
|
run: |
|
||||||
cd web/backend
|
|
||||||
echo "PORT=3000" > .env
|
|
||||||
npm install
|
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 &
|
node app.js > server.log 2>&1 &
|
||||||
|
|
||||||
# 4. Krok: Vyčkání na server pomocí obyčejné smyčky s curl
|
# 5. Krok: Vyčkání na server pomocí obyčejné smyčky s curl
|
||||||
- name: Wait for Backend server to be ready
|
- name: Wait for PotterAPI server to be ready
|
||||||
run: |
|
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
|
until curl -s http://127.0.0.1:3000 > /dev/null; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
echo "Server běží a odpovídá!"
|
echo "PotterAPI server běží a odpovídá!"
|
||||||
|
|
||||||
# 5. Krok: Spustí Bruno testy
|
# 6. Krok: Spustí všechny Bruno testy v apiTest
|
||||||
- name: Run Bruno API Tests
|
- name: Run all Bruno API Tests
|
||||||
run: |
|
run: |
|
||||||
cd apiTest/PotterAPI
|
echo "Spouštím všechny testovací kolekce..."
|
||||||
npx @usebruno/cli run -r
|
|
||||||
|
# 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"
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
# Ignorování složky node_modules v celém projektu (i v podsloužkách jako apiTest)
|
# Ignorování složky node_modules v celém projektu (i v podsloužkách jako apiTest)
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
# Ignorování vygenerovaných HTML a JSON reportů z testů
|
# Ignorování vygenerovaných HTML reportů z testů
|
||||||
*.html
|
*.html
|
||||||
*.json
|
!**/public/index.html
|
||||||
!bruno.json
|
|
||||||
!package.json
|
# Ignorování vygenerovaných JSON reportů z testů, ale ne datové soubory
|
||||||
!package-lock.json
|
report*.json
|
||||||
|
!*.json
|
||||||
@@ -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
|
## 🗺️ Rozcestník
|
||||||
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**.
|
|
||||||
|
|
||||||
#### 2. Pomocí Bruno CLI
|
| Služba | Backend | Frontend | Testy | Dokumentace |
|
||||||
Ujistěte se, že běží lokální server (standardně na `http://127.0.0.1:3000`), a spusťte:
|
|--------|---------|----------|-------|--------------|
|
||||||
|
| **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
|
```bash
|
||||||
# Spuštění testů v terminálu
|
# Klonování repozitáře
|
||||||
npx @usebruno/cli run apiTest/PotterAPI -r
|
git clone <repo-url>
|
||||||
|
cd api_test
|
||||||
|
|
||||||
# Spuštění testů s vygenerováním HTML reportu
|
# Instalace všech závislostí (využívá npm workspaces)
|
||||||
npx @usebruno/cli run apiTest/PotterAPI -r --reporter-html report.html
|
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 |
|
||||||
@@ -39,21 +39,21 @@ Backend je Express.js aplikace běžící na portu **3000**.
|
|||||||
|
|
||||||
**Spuštění z kořenové složky projektu:**
|
**Spuštění z kořenové složky projektu:**
|
||||||
```bash
|
```bash
|
||||||
cd web/backend
|
cd backends/potter-api
|
||||||
npm install # Nainstaluje závislosti (pokud ještě nejsou nainstalovány)
|
npm install # Nainstaluje závislosti (pokud ještě nejsou nainstalovány)
|
||||||
npm start # Spustí server pomocí nodemon (automaticky restartuje při změnách)
|
npm start # Spustí server pomocí nodemon (automaticky restartuje při změnách)
|
||||||
```
|
```
|
||||||
|
|
||||||
**Přímé spuštění bez nodemon:**
|
**Přímé spuštění bez nodemon:**
|
||||||
```bash
|
```bash
|
||||||
cd web/backend
|
cd backends/potter-api
|
||||||
node app.js
|
node app.js
|
||||||
```
|
```
|
||||||
|
|
||||||
Server bude dostupný na `http://localhost:3000`.
|
Server bude dostupný na `http://localhost:3000`.
|
||||||
|
|
||||||
> [!TIP]
|
> [!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)
|
### 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:**
|
**Spuštění z kořenové složky projektu:**
|
||||||
```bash
|
```bash
|
||||||
cd web/frontend
|
cd backends/potter-api/frontend
|
||||||
npm install # Nainstaluje závislosti (pokud ještě nejsou nainstalovány)
|
npm install # Nainstaluje závislosti (pokud ještě nejsou nainstalovány)
|
||||||
npm run serve # Spustí vývojový server (obvykle na portu 8080)
|
npm run serve # Spustí vývojový server (obvykle na portu 8080)
|
||||||
# nebo
|
# nebo
|
||||||
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 169 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
@@ -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"
|
||||||
|
}
|
||||||