Ana içeriğe geç

Performans Doğrulamaları (Core Web Vitals)

TestFly, Google'ın Core Web Vitals metriklerini (LCP, CLS) ve Navigation Timing metriklerini (FCP, FP, TTFB, DOMContentLoaded, tam sayfa yükleme) doğrudan Selenium testlerinizde doğrulamanıza olanak tanır — ekstra araç, proxy veya harici servis yok. open() işleminden sonra assertPerformance() çağırın ve her metrik için eşikler belirleyin. Bir metrik mevcut tarayıcıda ölçülemiyorsa (örneğin Chrome/Edge dışında LCP veya CLS), o doğrulama testi düşürmek yerine bir uyarı loglanarak atlanır.


Hızlı örnek​

public class HomepagePerformanceTest extends BaseTest {

@Test
public void homepage_meetsWebVitalThresholds() {
open("/");

assertPerformance()
.lcp().isBelow(2500) // Largest Contentful Paint < 2.5 s (Good)
.fcp().isBelow(1800) // First Contentful Paint < 1.8 s (Good)
.ttfb().isBelow(600) // Time To First Byte < 600 ms (Good)
.cls().isBelow(0.1); // Cumulative Layout Shift < 0.1 (Good)
}
}

Google Web Vitals eşikleri​

Metrikİyiİyileştirme GerekliKötü
LCP — Largest Contentful Paint< 2500 ms< 4000 ms≥ 4000 ms
FCP — First Contentful Paint< 1800 ms< 3000 ms≥ 3000 ms
CLS — Cumulative Layout Shift< 0.1< 0.25≥ 0.25
TTFB — Time To First Byte< 800 ms< 1800 ms≥ 1800 ms

API başvurusu​

assertPerformance()​

BaseTest ve BaseJUnit5Test içinde mevcuttur. Geçerli sayfadan metrikleri toplar ve akıcı bir PerformanceAssert oluşturucusu (builder) döndürür.

assertPerformance()
.lcp().isBelow(2500)
.fcp().isBelow(1800)
.ttfb().isBelow(600)
.cls().isBelow(0.1)
.domLoad().isBelow(3000) // DOMContentLoaded
.pageLoad().isBelow(5000); // window.load (tam sayfa)

isBelow(double threshold)​

Metriğin eşiğin kesinlikle altında olduğunu doğrular. Başarısızlıkta şöyle bir mesajla AssertionError fırlatır:

[Performance] LCP exceeded threshold: LCP = 3420ms (threshold: < 2500ms)

isBelow(double threshold, String message)​

Özel bir başarısızlık mesajıyla aynısı:

assertPerformance()
.lcp().isBelow(2500, "Homepage LCP regression after hero image update");

isAbove(double threshold)​

Bir alt sınırı doğrulamak için — gerçek sunucu gecikmesinin ölçülebilir olduğunu doğrulamak için yararlıdır:

assertPerformance()
.ttfb().isAbove(0); // gerçek bir HTTP gidiş-gelişinin oluştuğunu doğrular

collectPerformance()​

Özel doğrulamalar veya günlükleme için ham PerformanceMetrics döndürür:

PerformanceMetrics perf = collectPerformance();

System.out.println("LCP: " + perf.lcp() + "ms");
System.out.println("CLS: " + perf.cls());

assertPerformance().lcp().isBelow(3000);

Zincirleme​

Her isBelow() / isAbove() çağrısı üst PerformanceAssert nesnesini döndürür ve tam zincirlemeyi mümkün kılar:

assertPerformance()
.lcp().isBelow(2500)
.fcp().isBelow(1800)
.ttfb().isBelow(600)
.cls().isBelow(0.1);

Tarayıcıya göre metrik kullanılabilirliği​

MetrikChromeEdgeFirefoxSafari
LCP✅✅❌❌
FCP✅✅✅✅ (14.5+)
TTFB✅✅✅✅
CLS✅✅❌❌
DOMContentLoaded✅✅✅✅
Sayfa Yükleme✅✅✅✅

Bir metrik geçerli tarayıcıda kullanılamadığında (değer = -1), doğrulama sessizce atlanır — başarısız olmaz. Bu, her tarayıcıda ölçülebilen her metriği doğrulayan çapraz tarayıcı test paketleri yazmanıza olanak tanır.


HTML raporunda otomatik yakalama​

Başarılı her testten sonra otomatik toplamayı etkinleştirin:

testfly.yml
performance:
captureOnEveryTest: true

Etkinleştirildiğinde, HTML raporundaki test detay paneli, kullanılabilir her metrik için renk kodlu çipler içeren bir ⚡ Performance şeridi gösterir:

RenkAnlam
🟢 Yeşilİyi eşik karşılandı
🟡 Sarıİyileştirme gerekli
🔴 KırmızıKötü — eşiği aşıyor
Gri (italik)DOM yükleme / Sayfa yükleme (yalnızca bilgilendirme)

Ne zaman çağırmalı​

assertPerformance(), tarayıcının performans zaman çizelgesini çağrıldığı anda okur. En iyi sonuçlar için:

  • Sayfa tamamen yüklendikten sonra çağırın — geleneksel MPA sayfaları için open()'in hemen ardından yeterlidir
  • SPA'lar için, koleksiyondan önce rotanın oturmasını bekleyin: waitForAngular(), waitForReactHydration() veya önce bir açık öğe beklemesi kullanın
  • LCP, kullanıcı etkileşimi durduğunda kesinleşir — otomatik bir testte, doğru değeri almak için herhangi bir tıklamadan önce çağırın

Diğer doğrulamalarla birleştirme​

Performans doğrulamaları yalnızca normal TestNG / JUnit 5 doğrulamalarıdır — istediğiniz gibi birleştirin:

@Test
public void productPage_loadsQuicklyAndRendersCorrectly() {
open("/products/123");

// İşlevsel doğrulama
assertThat(By.cssSelector(".product-title")).isVisible();

// Performans doğrulaması
assertPerformance()
.lcp().isBelow(2500)
.cls().isBelow(0.1);

// İş doğrulaması
assertThat(By.cssSelector(".add-to-cart")).isEnabled();
}

Yapılandırma başvurusu​

testfly.yml
performance:
captureOnEveryTest: false # otomatik yakala ve HTML raporunda göster (varsayılan kapalı)
lcpWarnMs: 2500 # (gelecek) LCP bu değeri aştığında rapor uyarısı; 0 = devre dışı
fcpWarnMs: 1800
ttfbWarnMs: 800
clsWarn: 0.1