Spitfire

Sürüm: 0.31.0Bu dokümantasyon Spitfire 0.31.0 içindir.

Tarayıcı adımı (Web Vitals)

Tarayıcı adımı gerçek bir tarayıcıyla (headless Chromium) bir kullanıcı yolculuğu yapar ve kullanıcının gördüğünü ölçer: LCP (en büyük içeriğin görünmesi), CLS (sayfa kayması), INP (tıklamaya tepki), TTFB ve yükleme süresi. Amaç tarayıcıyla yük üretmek değil; protokol yükü (HTTP, gRPC…) sistemi zorlarken birkaç tarayıcı VU'suyla "kullanıcı yük altında ne görüyor?" sorusunu cevaplamaktır.

Ne zaman kullanılır

  • Yük testi sırasında sayfaların gerçekten yavaşlayıp yavaşlamadığını, ön yüzün (JavaScript, görseller, üçüncü taraf betikler) API'den ayrı olarak ne kadar etkilendiğini görmek için.
  • Bir sürümden sonra Web Vitals'ın bozulup bozulmadığını CI'da eşikle yakalamak için (browser_lcp p(90)<2500).

Runner gereksinimi

Tarayıcı adımı, içinde Chromium bulunan bir runner ister: algebransoft/spitfire:<sürüm>-browser imajı. Runner'lar → Runner ekle → Docker sekmesinde Tarayıcı adımları için kutusunu işaretleyin; komut bu imajı kullanır. Böyle bir runner kendini browser: chromium etiketiyle bildirir ve Spitfire tarayıcı adımı olan koşuları yalnızca bu runner'lara verir. Yeterli tarayıcılı runner yoksa koşu başlamaz ve nedeni yazılır. Docker'sız runner'larda Chromium kuruluysa SPITFIRE_CHROME ortam değişkeniyle yolunu verin.

Kapasite: tarayıcı VU'su pahalıdır: gerçek bir sayfada VU başına ~350 MB bellek ve bir çekirdeğin ~%20'si. 4 vCPU / 8 GB'lık bir runner yaklaşık 10 tarayıcı VU'su taşır. Protokol yükünü başka runner'lara vermek ölçümü daha güvenilir yapar.

Adım ekleme

  1. Adım ekle → Protokol: Tarayıcı.
  2. Eylemleri sırayla ekleyin; ilk eylem Sayfayı aç olmalıdır:
    • Sayfayı aç (URL; yükleme olayını bekler)
    • Tıkla (CSS seçici; öğe görünene kadar bekler)
    • Yaz (seçici ve metin; {{değişken}} kullanılabilir)
    • Görünene kadar bekle (seçici)
    • Metni doğrula (metin; seçici boşsa bütün sayfa) — metin süre içinde gelmezse adım başarısız olur
    • Bekle (okuma) (süre)
  3. Her eylemin zaman aşımı vardır (varsayılan 30s).

Her VU'nun kendi sekmesi ve çerezleri vardır (gizli pencere gibi); oturum adımlar ve iterasyonlar arasında korunur. Check'ler sayfanın metnini görür: Gövde içerir ile "Siparişiniz alındı" gibi bir metni doğrulayabilirsiniz.

json
{"id": "buy", "name": "Satın al", "protocol": "browser",
 "browser": {"actions": [
   {"do": "goto", "url": "{{base}}/sepet"},
   {"do": "type", "selector": "#email", "text": "{{email}}"},
   {"do": "click", "selector": "button[type=submit]"},
   {"do": "expect", "text": "Siparişiniz alındı", "timeout": "10s"}]}}

Ürettiği metrikler

Metrik Anlamı
req_duration Bütün yolculuk (eylemlerin toplam süresi)
browser_lcp Son sayfanın Largest Contentful Paint'i (ms)
browser_cls Son sayfanın Cumulative Layout Shift'i (birimsiz)
browser_inp Adımdaki en uzun etkileşim (Interaction to Next Paint, ms)
browser_ttfb, browser_load İlk bayt ve yükleme olayı (ms)
browser_lag Runner'ın kendi zamanlayıcısının gecikmesi (ms): runner'ın meşguliyeti

Koşu sayfasındaki Tarayıcı kartı her adımın p90 değerlerini Google'ın eşikleriyle renklendirir (LCP ≤ 2,5 sn iyi, > 4 sn zayıf; INP ≤ 200 ms iyi, > 500 ms zayıf; CLS ≤ 0,1 iyi, > 0,25 zayıf).

Ölçümün güvenilirliği: runner doyduğunda tarayıcı ölçümleri gerçekte olduğundan kötü görünür. browser_lag p95 100 ms'yi aşarsa kart bir uyarı gösterir: tarayıcı VU'larını azaltın ya da tarayıcı adımlarına ayrı runner verin.

Chrome'un tanımlarına dikkat: kullanıcı girdisi (tıklama, yazma) LCP ölçümünü durdurur ve girdiden sonraki 500 ms içindeki kaymalar CLS'ye sayılmaz. Düşük içerikli görseller (düz renk) LCP adayı değildir.

Lisans

Bir koşuda en fazla: ücretsiz sürümde 1, Growth planlarında 5, Scale'de 20 tarayıcı VU'su; Enterprise'da sınır yok. Sayılan, tarayıcı adımı olan senaryoların VU'larıdır.

Sık karşılaşılan sorunlar

Belirti: Koşu "browser steps need runners with a browser" ile başlamıyor. Neden: Seçilen ya da boştaki runner'larda tarayıcı yok. Çözüm: -browser imajıyla bir runner ekleyin; Runner'lar sayfasında browser etiketini görün.

Belirti: Tarayıcı ölçümleri koşudan koşuya çok oynuyor, kartta "runner meşguldü" uyarısı var. Neden: Runner'ın CPU'su yetmiyor. Çözüm: Tarayıcı VU'larını azaltın, runner'ı büyütün ya da protokol yükünü başka runner'lara verin.

İlgili sayfalar