Sweeper: sitenizin her sayfasında console hatası, kırık link ve 4xx/5xx arar
Sweeper, Spitfire'ın site tarama modülüdür. Sitenizi gerçek bir tarayıcıda (headless Chromium) başlangıç adresinden itibaren sayfa sayfa açar, linklerini izler (crawl) ve kullanıcının karşılaşacağı hataları tek bir raporda toplar. Varsayılan okuma modunda hiçbir şeye tıklamaz, form göndermez: canlı sitede güvenle koşar. Etkileşim modu ise staging'de her düğmeyi, select'i ve formu dener.
Ne bulur
Console hataları
Sayfanın console'una düşen hatalar, sayfa adresiyle birlikte.
Yakalanmamış exception'lar
JavaScript'in yakalanmadan fırlattığı hatalar: kullanıcı bunu çoğu zaman donmuş bir buton olarak görür.
4xx / 5xx yanıtlar
Sayfanın kendisi ve alt istekleri: 4xx/5xx dönen ya da yüklenmeyen script, görsel, stil ve XHR.
Kırık linkler
Hataya giden linkler ve onlara link veren sayfa; istenirse dış sitelere giden linkler de denenir.
Boş sayfalar
Yüklendi ama görünen bir şey yok: ne metin, ne görsel, ne canvas.
Yavaş sayfalar
Sınırınızdan (varsayılan 3 sn) yavaş yüklenen sayfalar; her sayfa için status, TTFB, yüklenme süresi ve LCP.
Nasıl çalışır
- Başlangıç adresini verin. Gerisi varsayılanlarla gelir: en fazla derinlik 3, aynı anda 2 sayfa, yavaş sayfa sınırı 3 sn. İsterseniz ek host'lar,
/blog/*gibi yalnızca bu yollar / bu yolları atla kalıpları, header ya da cookie eklersiniz. - Tarayıcılı runner gezer. Runner sayfaları açar, her sayfada status, TTFB, yüklenme süresi ve LCP'yi ölçer; console'u, exception'ları ve alt istekleri dinler, sayfadaki linkleri kapsam ve derinlik sınırları içinde sıraya ekler.
- Rapor ve karar. Koşu sayfası sayfaları ve her bulgu türünü sayar, bulgusu olan sayfaları ayrıntısıyla listeler. Eşiklerinize göre koşu geçer ya da geçmez; geçmeyen koşu CI'da işi düşürür ve isterseniz Slack, Teams, e-posta ya da webhook'a haber verir.
Okuma modu neden canlıda güvenli
- Sayfaları yalnızca GET isteğiyle açar; tıklamaz, yazı yazmaz, form göndermez.
- Logout benzeri yollar (
/logout,/signout,/cikis…) her zaman atlanır. - Yalnızca sizin host'larınızı gezer; dış sitelere giden linkler istenirse yalnızca denenir (HEAD ya da GET), crawl edilmez.
- Sayfa sayısı, derinlik ve eşzamanlılık sınırlıdır: aynı anda en fazla 4 sayfa açılır.
- Oturum header'ları ve cookie şifreli saklanır ve yalnızca taramanın host'larına gider.
CI ve zamanlama
Deploy'dan sonra pipeline'a tek satır eklenir: spitfire cloud sweep "Magaza". Eşikler aşılırsa komut 99 ile çıkar ve iş düşer. Sweeper modülüyle tarama cron ile de koşar (ör. 0 3 * * *, her gece 03:00, saat dilimiyle); geçmeyen koşu sweep.failed olayına abone bildirim kanallarına gider. CI kurulumunun ayrıntısı: CI/CD'de performans testi.
GitHub Actions'ta staging'e deploy, tarama ve ancak tarama geçerse canlıya deploy (token pipeline secret'ı SPITFIRE_TOKEN; CLI indirmeye gerek yok, Docker imajının içinde gelir):
# .github/workflows/deploy.yml
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: ./deploy.sh staging # your own deploy step
- name: Sweeper
env:
SPITFIRE_URL: https://spitfire.example.com
SPITFIRE_TOKEN: ${{ secrets.SPITFIRE_TOKEN }}
# exits 0 passed, 99 thresholds broken, 1 could not run: 99 and 1 stop the job here
run: docker run --rm -e SPITFIRE_URL -e SPITFIRE_TOKEN usespitfire/spitfire spitfire cloud sweep "Magaza" --timeout 30m
- run: ./deploy.sh production # only after a passed sweepEtkileşim modu (staging, Spitfire 1.4.3)
Okuma modu sayfalara yalnızca bakar. Etkileşim modu deploy'dan önce bir adım daha atar: staging'deki her sayfada her düğmeyi, menü öğesini, sekmeyi, checkbox ve radio'yu, select'i ve formu gerçek tarayıcıda tek tek dener ve her denemeden sonra sayfanın durumunu ölçer. Canlı izleme aracı değildir; release çıkmadan önce staging'de koşan bir testtir. Okuma modu varsayılan olarak kalır ve değişmez.
- Ne bulur: denemeden sonra çıkan console hatası ya da exception, sweep host'una giden bir istekte 4xx/5xx (ör.
POST /api/cart → 500), çöken ya da boşalan ekran, elemanına ulaşmayan bir tıklama. Her biri sayfa, elemanın etiketi, yapılan işlem (tıklama, seçme, gönderme) ve sonuçla raporlanır ve hata sayılır; aynı en fazla hata eşiği geçerlidir. - Neyi tıklamaz: silme gibi geri alınamayan işlemler ve ödeme benzeri düğmeler (öde, satın al, sipariş ver, checkout, subscribe…) atlanır; listeye kendi metinlerinizi ya da CSS seçicilerinizi eklersiniz. Logout yolları ve logout düğmeleri her zaman atlanır. Atlananlar raporda nedenleriyle listelenir.
- Dışarı çıkmaz: başka host'lara giden istekler ve form gönderimleri (ödeme sağlayıcısı, e-posta servisi…) engellenir; yalnızca sweep'in host'larına izin verilir ve engellenen istek raporda "dışarı gitmedi" diye görünür.
- Yalnızca staging: mod yalnızca sweep'te açıkça listelenen host'larda çalışır ve kaydederken "Bu adres bir staging/test ortamıdır" onayı istenir; onay sweep kaydına, kimin hangi host'ta başlattığı audit log'a yazılır.
- Formlar: alan adına, label'a ya da seçiciye göre örnek değerler verirsiniz (ör.
email → test@example.com); değer verilmeyen form olduğu gibi gönderilir ve sunucunun 5xx yerine doğrulama cevabı vermesi beklenir. - CI aynı:
spitfire cloud sweep "Magaza"değişmez, mod sweep tanımından gelir, çıkış kodları aynıdır (0 / 99 / 1). Yukarıdaki GitHub Actions örneği staging'e deploy, etkileşimli tarama, sonra canlıya deploy akışıdır. - Sınırlar: modül olmadan sayfa başına en fazla 20 etkileşim ve tarama başına 50 sayfa; Sweeper modülüyle sayfa başına en fazla 500 etkileşim.
Sınırlar, deneme ve fiyat
| Modül yokken | Sweeper modülü | |
|---|---|---|
| Tarama başına sayfa | en fazla 50 | 5.000'e kadar |
| Elle, CI'dan, API'den başlatma | ✓ | ✓ |
| Geçti / geçmedi eşikleri | ✓ | ✓ |
| Zamanlanmış tarama (cron) | — | ✓ |
| Etkileşim modu, sayfa başına etkileşim (1.4.3) | en fazla 20 | en fazla 500 |
Sweeper modülü: yılda ₺18.000 ya da ayda ₺2.000 (+ KDV). Enterprise planına dahildir; Growth ve Scale ile aynı siparişte ya da ücretsiz sürüme tek başına eklenir.
Ürün içinden 7 gün ücretsiz denenir: kurulum yöneticisi Sweeper ya da Lisans sayfasından bir kez başlatır. Deneme yalnızca kurulumunuzda tutulur; bitince taramalar silinmez, yeniden en fazla 50 sayfa açar ve zamanlamaları durur. Spitfire 1.4.2 veya üstü gerekir.
Yakında: bir Recorder kaydından başlayan tarama. Diğer planlar ve eklentiler: fiyatlar ve lisanslar.
Sık sorulanlar
Form gönderir mi?
Sweeper canlı sitede güvenli mi?
/logout, /signout, /cikis…) her zaman atlanır, böylece oturum açık bir tarama oturumda kalır. Başka siteleri crawl etmez: yalnızca başlangıç adresinin host'unu ve sizin yazdığınız ek host'ları gezer. Etkileşim modu ise canlı için değil, yalnızca staging içindir.Giriş gerektiren sayfaları tarayabilir mi?
Authorization: Bearer …) ya da cookie eklersiniz. Bunlar şifreli saklanır, bir daha gösterilmez ve yalnızca taramanın kendi host'larına gönderilir. Giriş formunu Sweeper doldurmaz; oturumu siz verirsiniz.Tarama hangi runner'da koşar?
usespitfire/spitfire:<sürüm>-browser imajından, browser etiketiyle bağlanan runner (içinde headless Chromium var). Her runner aynı anda bir tarama alır. Runner sizin ağınızda koştuğu için iç ağdaki bir siteyi taramak için onu internete açmanız gerekmez.CI'da çalışır mı?
spitfire cloud sweep "Magaza" taramayı başlatır ve bitmesini bekler. Tarama geçerse çıkış kodu 0, eşikler aşılırsa (izin verilenden fazla hata ya da yavaş sayfa) 99, tarama hiç koşamazsa (tarayıcılı runner yok, yanlış token) 1 olur; böylece kırık bir link ya da console hatası pipeline'ı düşürür. -o ile özet JSON olarak kaydedilir. Komut Docker imajının içinde de gelir; GitHub Actions örneği yukarıda. Aynısı REST API ile de yapılır.Veriler bir yere gönderiliyor mu?
Sweeper ile sentetik izleme arasındaki fark ne?
Modül olmadan Sweeper kullanılabilir mi?
Spitfire tek komutla Docker'a ya da Kubernetes'e kurulur; ücretsiz sürümde bütün test özellikleri ve protokoller açıktır.