diff --git a/README.md b/README.md index b4ee31e..82e603b 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ - **Korumalı Endpoint'ler**: JWT middleware ile korunan API endpoint'leri - **Environment Security**: Hassas bilgilerin güvenli .env dosyasında saklanması -### 📊 Job Yönetim Sistemi +### 🧪 Test Yönetim Sistemi - **Repository Otomasyonu**: Otomatik git clone/pull işlemleri - **Zaman Tabanlı Çalıştırma**: Dakika/saat/gün bazında otomatik test çalıştırma - **Real-time Durum Güncellemesi**: Socket.io ile anlık durum takibi @@ -38,7 +38,7 @@ ### ⚡ Gerçek Zamanlı İletişim - **WebSocket Bağlantısı**: Socket.io ile sürekli iletişim - **Sayaç Yayınınlaması**: Global sayaç ve işlemler -- **Canlı Güncellemeler**: Job durumlarının anlık bildirilmesi +- **Canlı Güncellemeler**: Test durumlarının anlık bildirilmesi - **Ping/Pong**: Bağlantı kontrolü ### 🎨 Modern Arayüz @@ -202,24 +202,24 @@ docker compose up -d --build - **Şifre**: `supersecret` 3. Giriş yap butonuna tıklayın -### Job Yönetimi +### Test Yönetimi -#### Yeni Job Oluşturma -1. **Dashboard** menüsünden **Jobs** sayfasına gidin -2. **Yeni Job** butonuna tıklayın -3. Job bilgilerini girin: - - **Job Adı**: Tanımlayıcı bir isim +#### Yeni Test Oluşturma +1. **Dashboard** menüsünden **Tests** sayfasına gidin +2. **Yeni Test** butonuna tıklayın +3. Test bilgilerini girin: + - **Test Adı**: Tanımlayıcı bir isim - **Repository URL**: GitHub repository adresi - **Test Komutu**: Çalıştırılacak komut (örn: `npm test`) - **Kontrol Aralığı**: Test sıklığı (dakika/saat/gün) - **Kontrol Değeri**: Sayısal değer 4. Kaydet butonuna tıklayın -#### Job İzleme -- **Jobs Listesi**: Tüm job'ların durumunu gösterir +#### Test İzleme +- **Tests Listesi**: Tüm test'lerin durumunu gösterir - **Real-time Durum**: Socket.io ile anlık güncellemeler - **Log Akışı**: Test çıktılarını canlı izleme -- **Manuel Çalıştırma**: Job'u anında tetikleme +- **Manuel Çalıştırma**: Test'i anında tetikleme ### Deployment Yönetimi 1. **Deployments** sayfasına gidin @@ -250,7 +250,7 @@ docker compose up -d --build ### 📖 API Referansı - **Authentication API'leri**: `/auth/login`, `/auth/me` -- **Job Yönetim API'leri**: CRUD operasyonları, manuel çalıştırma +- **Test Yönetim API'leri**: CRUD operasyonları, manuel çalıştırma - **Deployment API'leri**: `/deployments`, `/deployments/:id`, `/deployments/scan`, `/deployments/branches` - **Webhook Endpoint**: `/api/deployments/webhook/:token` - **WebSocket Olayları**: Real-time iletişim ve durum güncellemeleri @@ -393,12 +393,12 @@ docker compose logs mongo ### Mevcut Durum (v1.0) - ✅ Temel CI/CD platformu -- ✅ Real-time job yönetimi +- ✅ Real-time test yönetimi - ✅ Modern web arayüzü - ✅ Konteyner orkestrasyonu ### Gelecek Planlar -- 🔄 **Multi-branch Support**: Farklı branch'ler için job yönetimi +- 🔄 **Multi-branch Support**: Farklı branch'ler için test yönetimi - 🔔 **Bildirim Sistemi**: E-posta ve Slack bildirimleri - 📊 **Dashboard İstatistikleri**: Performans ve kullanım metrikleri - 🛡️ **Güvenlik İyileştirmeleri**: 2FA ve rate limiting @@ -406,7 +406,7 @@ docker compose logs mongo - 📝 **Custom Test Commands**: Esnek test komutu yapılandırması ### E-post Listesi -- 📊 **Dashboard İstatistikleri**: Job performans grafikleri +- 📊 **Dashboard İstatistikleri**: Test performans grafikleri - 🔔 **Bildirim Kanalları**: Slack, Discord, Teams entegrasyonu - 🔄 **Pipeline Integration**: GitHub Actions, GitLab CI entegrasyonu - 🏗️ **Template System**: Hazır proje şablonları diff --git a/frontend/src/components/DashboardLayout.tsx b/frontend/src/components/DashboardLayout.tsx index 92f9414..9f9ec56 100644 --- a/frontend/src/components/DashboardLayout.tsx +++ b/frontend/src/components/DashboardLayout.tsx @@ -22,7 +22,7 @@ export function DashboardLayout() { const navigation = useMemo( () => [ { label: "Home", to: "/home", icon: faHouse }, - { label: "Jobs", to: "/jobs", icon: faFlaskVial }, + { label: "Tests", to: "/jobs", icon: faFlaskVial }, { label: "Deployments", to: "/deployments", icon: faRocket }, { label: "Settings", to: "/settings", icon: faGear } ], diff --git a/frontend/src/pages/HomePage.tsx b/frontend/src/pages/HomePage.tsx index 76474f6..f25f6a3 100644 --- a/frontend/src/pages/HomePage.tsx +++ b/frontend/src/pages/HomePage.tsx @@ -54,7 +54,7 @@ export function HomePage() { recentRuns: [], totals: { successRate: 0, totalRuns: 0 } }); - setError("Job metrikleri alınamadı"); + setError("Test metrikleri alınamadı"); } if (deployResult.status === "fulfilled") { diff --git a/frontend/src/pages/JobDetailPage.tsx b/frontend/src/pages/JobDetailPage.tsx index d3164c4..95ed8ca 100644 --- a/frontend/src/pages/JobDetailPage.tsx +++ b/frontend/src/pages/JobDetailPage.tsx @@ -79,7 +79,7 @@ export function JobDetailPage() { checkUnit: data.job.checkUnit }); }) - .catch(() => setError("Job bulunamadı")) + .catch(() => setError("Test bulunamadı")) .finally(() => setLoading(false)); }, [id]); @@ -174,14 +174,14 @@ export function JobDetailPage() { const handleDelete = async () => { if (!job?._id) return; - const ok = window.confirm("Bu job'ı silmek istediğinize emin misiniz?"); + const ok = window.confirm("Bu testi silmek istediğinize emin misiniz?"); if (!ok) return; try { await deleteJob(job._id); - toast.success("Job silindi"); + toast.success("Test silindi"); navigate("/jobs", { replace: true }); } catch (err) { - toast.error("Job silinemedi"); + toast.error("Test silinemedi"); } }; @@ -203,7 +203,7 @@ export function JobDetailPage() { return; } await updateJob(job._id, payload); - toast.success("Job güncellendi"); + toast.success("Test güncellendi"); setJob((prev) => prev ? { @@ -281,8 +281,8 @@ export function JobDetailPage() { className="h-10 w-10 transition hover:bg-emerald-100" onClick={handleEdit} disabled={!job} - title="Job'ı düzenle" - aria-label="Job'ı düzenle" + title="Testi düzenle" + aria-label="Testi düzenle" > @@ -292,8 +292,8 @@ export function JobDetailPage() { className="h-10 w-10 transition hover:bg-red-100" onClick={handleDelete} disabled={!job} - title="Job'ı sil" - aria-label="Job'ı sil" + title="Testi sil" + aria-label="Testi sil" > @@ -317,7 +317,7 @@ export function JobDetailPage() { )}
- {job?.name || "Job Detayı"} + {job?.name || "Test Detayı"} {runCount} test @@ -368,7 +368,7 @@ export function JobDetailPage() {
-
Job Güncelle
+
Test Güncelle
Değişiklikler kaydedildiğinde test yeniden tetiklenecek.
- + [{ ...created, runCount: created.runCount ?? 0 }, ...prev]); - toast.success("Job oluşturuldu"); + toast.success("Test oluşturuldu"); } setModalOpen(false); } catch (err) { @@ -163,9 +163,9 @@ export function JobsPage() { setRunningId(id); try { await runJob(id); - toast.success("Job çalıştırılıyor"); + toast.success("Test çalıştırılıyor"); } catch { - toast.error("Job çalıştırılamadı"); + toast.error("Test çalıştırılamadı"); } finally { setRunningId(null); } @@ -185,18 +185,18 @@ export function JobsPage() { <>
-

Jobs

+

Tests

{loading && (
- Jobs yükleniyor... + Testler yükleniyor...
)} {!loading && jobs.length === 0 && ( @@ -280,9 +280,9 @@ export function JobsPage() {
-
{isEdit ? "Job Güncelle" : "Yeni Job"}
+
{isEdit ? "Test Güncelle" : "Yeni Test"}
- Detayları girin, Jobs listesi canlı olarak güncellenecek. + Detayları girin, Tests listesi canlı olarak güncellenecek.
- +