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:
|
||||
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"
|
||||
@@ -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
|
||||
@@ -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 |
|
||||
@@ -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
|
||||
|
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"
|
||||
}
|
||||