Doğrulama API'si
Vitest, varsayılan olarak geniş bir DOM doğrulama yelpazesi sunmak için @testing-library/jest-dom kütüphanesini içerir. Ayrıntılı belgeler için jest-dom readme belgesini inceleyebilirsiniz:
toBeDisabledtoBeEnabledtoBeEmptyDOMElementtoBeInTheDocumenttoBeInvalidtoBeRequiredtoBeValidtoBeVisibletoContainElementtoContainHTMLtoHaveAccessibleDescriptiontoHaveAccessibleErrorMessagetoHaveAccessibleNametoHaveAttributetoHaveClasstoHaveFocustoHaveFormValuestoHaveStyletoHaveTextContenttoHaveValuetoHaveDisplayValuetoBeCheckedtoBePartiallyCheckedtoHaveRoletoHaveErrorMessage
TypeScript kullanıyorsanız veya expect içinde doğru tür ipuçlarına sahip olmak istiyorsanız, kullandığınız sağlayıcıya bağlı olarak tsconfig dosyanızda @vitest/browser/providers/playwright veya @vitest/browser/providers/webdriverio tanımladığınızdan emin olun. Varsayılan preview sağlayıcısını kullanıyorsanız, bunun yerine @vitest/browser/matchers tanımlayabilirsiniz.
{
"compilerOptions": {
"types": ["@vitest/browser/matchers"]
}
}{
"compilerOptions": {
"types": ["@vitest/browser/providers/playwright"]
}
}{
"compilerOptions": {
"types": ["@vitest/browser/providers/webdriverio"]
}
}Tarayıcıdaki testler, eşzamansız yapıları nedeniyle bazen beklenmedik şekilde başarısız olabilir. Bu nedenle, koşul gecikse bile (örneğin bir zaman aşımı, ağ isteği veya animasyon nedeniyle) doğrulamaların başarılı olmasını sağlamak önemlidir. Bu amaçla Vitest, varsayılan olarak expect.poll ve expect.element API'leri aracılığıyla yeniden denenebilir doğrulamalar sunar:
import { expect, test } from 'vitest';
import { page } from '@vitest/browser/context';
test('error banner is rendered', async () => {
triggerError();
// @testing-library, dahili yeniden deneme mekanizmasına sahip sorgular sağlar
// Afişi oluşturulana kadar bulmaya çalışacaktır
const banner = page.getByRole('alert', {
name: /error/i,
});
// Vitest, dahili yeniden deneme mekanizmasına sahip `expect.element` sağlar
// `element.textContent` değeri "Error!" olana kadar kontrol edecektir
await expect.element(banner).toHaveTextContent('Error!');
});TIP
expect.element, expect.poll(() => element)'in bir kısaltmasıdır ve tamamen aynı şekilde işlev görür.
toHaveTextContent ve diğer tüm @testing-library/jest-dom doğrulamaları, dahili yeniden deneme mekanizması bulunmayan standart bir expect ile hala kullanılabilir:
// .textContent değeri `'Error!'` değilse hemen başarısız olur
expect(banner).toHaveTextContent('Error!');