Test Results
Bir ajanın test çalıştırmasını olduğu anda gösterin. Testler dosyalarına akar, ardından her hata açık kalacak şekilde “118 passed, 2 failed in 4.2s” özetine katlanır. Kelime düzeyinde Expected ve Received farkları, zaman aşımları ve snapshot'lar, Stack Trace'ten gelen stack'ler, filtreler, başarısızları yeniden çalıştırma ve düzeltmesini isteme, ayrıca Vitest, Jest, Playwright ve pytest için adaptörler.
Bir ajan testlerinizi çalıştırdığında sohbet, bir geliştiricinin aradığını göstermeli: ne kadar ilerlediği, neyin başarısız olduğu ve neden. Testler çalışırken Test Results, rakam rakam ilerleyen sayaçlar ve geçen, başarısız ve atlanan olarak bölünmüş bir çubukla canlı bir “Running tests · 42 of 120” satırı gösterir. Testler bittikçe dosyalarına akar ve çalışan dosya açık kalır.
Çalıştırma bittiğinde satır, “118 passed, 2 failed in 4.2s” gibi geçmiş zamanlı bir özete dönüşür. Temiz bir çalıştırma katlanır. Başarısız olan açık kalır; geçen dosyalar katlanır, başarısız dosyalar açık kalır, siz kendiniz açıp kapatmadıysanız. Her hata mesajını, kelime düzeyinde bir Expected ve Received diff’ini ve Stack Trace üzerinden stack’ini gösterir; önce sizin frame’leriniz gelir, framework frame’leri katlanır. Zaman aşımları ve snapshot uyuşmazlıkları kendi ifadelerini alır.
All, Failed, Skipped ya da Slow ile filtreleyin, bir hatayı metin olarak kopyalayın, frame’leri editörünüzde açın ve Ask to fix, Rerun failed, Rerun ile Update snapshot’ı ajana geri gönderin. fromVitestJson, fromJestJson, fromPlaywrightJson ve fromJUnitXml raporları bir çalıştırmaya dönüştürür, applyTestEvent de canlı olayları tek bir çalıştırmada toplar.
HextaUI Pro'yu alın
Tek bir ödeme, gelecekte eklenecekler dahil tüm blokların kilidini açar. Fiyatları görün.
Pro registry'yi components.json dosyasına ekleyin
components.json Token'ınızı ekleyin
Hesap sayfanızda bir token oluşturun ve
.env.localdosyasınaHEXTAUI_PRO_TOKENolarak ekleyin.Bloğu ekleyin
pnpm dlx shadcn@latest add @hextaui-pro/test-results
AI SDK ile
runTests’i, execute’u her reporter olayından sonra çalıştırmayı döndüren bir araç yapın; böylece her güncelleme ön çıktı olarak gelir. Testler başarısız olduğunda açık kalan bir ToolCall içinde gösterin ve Ask to fix ile Rerun failed’ı ajana mesaj olarak geri gönderin.
Kaydedilmiş bir rapordan
fromVitestJson ve fromJestJson, JSON reporter’ın çıktısını okur. Mutlak yolları kısaltmak için bir root, frame’leri Cursor ya da VS Code’da açmak için getEditorHref verin.
pytest ve JUnit XML
fromJUnitXml, pytest --junitxml ve diğer JUnit raporlarını okur. Test sınıfları describe bloklarına dönüşür, hata veren kaynak kod olarak görünür ve Rerun failed size node id’lerini verir.
Kendi olaylarınızdan
Herhangi bir runner’dan run-start, test-start, test-end, file-end ve run-end olayları gönderin ve bunları applyTestEvent ile birleştirin. Saf bir fonksiyon olduğu için bir reducer’da, bir store’da ya da sunucuda çalışır.
Yapı
Dıştan içe doğru birleştirdiğiniz parçalar.
| Parça | Açıklama |
|---|---|
TestResults | Çalıştırma: canlı başlık, ilerleme, filtre, eylemler ve dosyalar. |
ValueDiff | Değişen kelimeleri işaretlenmiş Expected ve Received. |
applyTestEvent, createTestRun | Akış hâlindeki olaylardan bir çalıştırma kuran saf yardımcılar. |
fromVitestJson, fromJestJson, fromPlaywrightJson, fromJUnitXml | Reporter çıktısını bir çalıştırmaya dönüştüren adaptörler. |
summarizeRun, formatFailures | Özet satırı ve bir prompt ya da pano için düz metin olarak hatalar. |
TestResults
children dışındaki tüm section prop’larını da kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
runBir adaptörden, applyTestEvent’ten ya da kendi verinizden gelen çalıştırma. | TestRun | – |
titleTestler çalışırken canlı etiket. | string | "Running tests" |
labelBölgenin erişilebilir adı. | string | "Test results" |
slowThresholdEn az bu kadar milisaniye süren testler yavaş sayılır. | number | 300 |
rootStack’lerdeki yollardan çıkarılan proje kökü. | string | – |
defaultOpenÇalıştırmanın açık olup olmadığını geçersiz kılar. Varsayılan olarak çalışırken ve bir şey başarısız olduğunda açık kalır. | boolean | – |
defaultFilterBaşlangıçtaki filtre. | "all" | "failed" | "skipped" | "slow" | "all" |
onAskToFixAsk to fix’i çalıştırmada ve her hatada gösterir. | (failed: FailedTest[]) => void | – |
onRerunFailedÇalıştırma hatalarla bittiğinde Rerun failed’ı gösterir. | (failed: FailedTest[]) => void | – |
onRerunTestHer hatada Rerun’ı gösterir. | (failed: FailedTest) => void | – |
onUpdateSnapshotSnapshot uyuşmazlıklarında Update snapshot’ı gösterir. | (failed: FailedTest) => void | – |
getFrameHrefStack frame’lerini, örneğin getEditorHref ile bağlantıya çevirir. | (frame: StackFrame) => string | undefined | – |
onFrameClickBir frame’e tıklandığında çağrılır. | (frame: StackFrame, event: MouseEvent) => void | – |
| Prop | Tür | Varsayılan |
|---|---|---|
statusTestlerin hâlâ çalışıp çalışmadığı. | "running" | "done" | "cancelled" | – |
filesBaşladıkları sıradaki dosyalar; her biri testleri, süresi ve yüklenemediyse bir hatayla. | TestFile[] | – |
total“42 of 120” için beklenen test sayısı. Varsayılan olarak dosya başına toplanan sayılar. | number | – |
durationÖzet için milisaniye. Verilmezse çalışırken ölçülür. | number | – |
startedAtCanlı zamanlayıcı için çalıştırmanın başladığı an, zaman damgası olarak. | number | – |
| Prop | Tür | Varsayılan |
|---|---|---|
nameTestin kendi adı. | string | – |
suiteOnu saran describe blokları, en dıştaki önce. | string[] | – |
statusTestin durumu. | "queued" | "running" | "passed" | "failed" | "skipped" | "todo" | – |
durationMilisaniye. | number | – |
retriesKaç kez yeniden denendiği. | number | – |
failureNeden başarısız olduğu. | TestFailure | – |
| Prop | Tür | Varsayılan |
|---|---|---|
kind“Timed out after 5s” ya da “Snapshot mismatch” gibi ifadeyi seçer. | "assertion" | "snapshot" | "timeout" | "error" | – |
messageExpected ve Received satırları olmadan doğrulama mesajı. | string | – |
expected, receivedKarşılaştırmanın iki tarafı; hatadan, bir diff’ten ya da mesajdan okunur. | string | – |
stackparseStackTrace için metin. Frame yoksa verilmez. | string | – |
detailspytest’in hata veren kaynak kodu gibi ek çıktı. | string | – |
rawCopy’nin kullandığı özgün metin. | string | – |
applyTestEvent(run, event)
Yeni bir çalıştırma döndürür. createTestRun() başlamak için boş bir tane verir.
| Prop | Tür | Varsayılan |
|---|---|---|
eventrun-start, file-start, test-start, test-end, file-end ve run-end olaylarından biri. Testler id ile ya da dosya, suite ve ad ile eşleşir. | TestEvent | – |
event.errorBir string ya da Vitest’in TestError’ı gibi message, stack, expected, actual ve diff içeren bir nesne. | TestErrorInput | – |
fromVitestJson(report, options)
fromJestJson aynı raporu alır. fromPlaywrightJson, Playwright’ın JSON reporter’ını okur; fromJUnitXml(xml, options) ise JUnit XML’ini okur.
| Prop | Tür | Varsayılan |
|---|---|---|
options.rootDosya yollarından çıkarılacak proje kökü. Olmadan, yollar src ya da tests gibi ilk klasörden başlar. | string | – |
| Tuş | Action |
|---|---|
| Tab | Çalıştırma başlığı, filtre, eylemler, her dosya ve her başarısız test arasında gezinir. |
| EnterSpace | Çalıştırmayı, bir dosyayı ya da bir hatayı açar veya kapatır. |
| ←→ | Filtreler arasında geçiş yapar. |
- Çalıştırma, testler çalışırken aria-busy taşıyan adlandırılmış bir bölgedir. Kibar bir canlı bölge son özeti yalnızca bir kez duyurur; böylece akan testler ve ilerleyen sayaçlar sessiz kalır.
- Çalıştırma başlığı, her dosya ve her başarısız test aria-expanded özellikli açılır düğmelerdir. Adları özeti, dosyanın sayılarını ya da testin durumunu ve adını okur.
- Filtre bir toggle grubudur. Ok tuşları seçenekler arasında gezinir ve boş filtreler devre dışıdır.
- Durum asla yalnızca renkle verilmez: her durumun kendi işareti vardır, ekran okuyucular her testten önce “Passed” ya da “Failed” duyar, Expected ve Received etiketlidir ve değişen kelimeler zorlanmış renklerde altı çizili görünür. Azaltılmış harekette satırlar ve işaretler kaymadan belirir.
Şunlarla geliştirildi
Test Results bloğunun yapıldığı ücretsiz HextaUI bileşenleri. Her biri tek başına yüklenir.
Kod
7 dosya, components/blocks/test-results konumuna eklendi.