Testowanie jednostkowe CSS za pomocą Jest
Testuj wyniki CSS-in-JS i twórz migawki stylizowanych komponentów za pomocą Jest oraz powiązanych matcherów.
Testowanie jednostkowe CSS za pomocą Jest to bezpłatna lekcja CSS Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CSS Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CSS Academy zawiera 4 lekcji w sumie.
Dlaczego testować CSS za pomocą Jest?
Testy jednostkowe CSS programowo weryfikują obliczone style, zastosowanie klas i zachowanie układu. Wykrywają regresje w logice CSS (zastosowanie niewłaściwej klasy, brak modyfikatora) bez konieczności wykonywania zrzutu ekranu w przeglądarce lub ręcznej kontroli wizualnej.
JSDOM i obsługa CSS
Jest domyślnie korzysta z JSDOM, który ma ograniczoną obsługę CSS — nie oblicza układu ani nie interpretuje złożonych selektorów. Do podstawowego testowania obecności klas i stylów wbudowanych JSDOM jest wystarczający; do testowania obliczonych właściwości należy użyć jest-environment-jsdom z atrapami modułów CSS.
Testowanie zastosowania klas
Należy wyrenderować komponent i sprawdzić, czy na podstawie właściwości lub stanu zastosowano prawidłowe klasy CSS. Weryfikuje to poprawność warunkowej logiki klas (active, disabled, wariant error) bez sprawdzania konkretnych wartości stylów.
<button class="btn-primary">Primary Button</button>
Moduły CSS w testach
Jest przekształca importy modułów CSS za pomocą identity-obj-proxy. Ten proxy zwraca ciąg znaków nazwy klasy dla każdej użytej właściwości: styles.primary zwraca "primary". Testy sprawdzają nazwy klas bez konieczności stosowania rzeczywistego CSS.
jest-styled-components
W projektach korzystających ze Styled Components pakiet jest-styled-components dodaje matcher toHaveStyleRule. Można za jego pomocą sprawdzić, czy stylizowany komponent stosuje właściwe wartości właściwości CSS na podstawie właściwości, bez konieczności obliczania stylów w prawdziwej przeglądarce.
<button class="btn">Enabled</button>
<button class="btn" disabled>Disabled (0.5 opacity)</button>
@testing-library/jest-dom
jest-dom rozszerza Jest o matchery specyficzne dla DOM: toHaveStyle (sprawdza styl wbudowany lub obliczony), toHaveClass (sprawdza listę klas), toBeVisible (sprawdza display/visibility/opacity). Dzięki nim asercje CSS są czytelne i wyrażają intencję testu.
Testowanie snapshotów nazw klas
Snapshoty komponentów przechwytują wyrenderowany kod znaczników wraz z nazwami klas. Zmiany nazw modułów CSS lub warunkowej logiki klas pojawiają się jako różnice w snapshotach. Jest to przydatne do szybkiego wykrywania niezamierzonych zmian klas, ale wymaga starannego procesu przeglądania snapshotów.
Ograniczenia testowania CSS w Jest
Jest nie potrafi obliczać układu (offsetWidth, getBoundingClientRect), interpretować zapytań media queries ani uruchamiać animacji CSS. Wymaga to prawdziwego środowiska przeglądarki za pośrednictwem Playwright lub Cypress. Testy CSS w Jest uzupełniają testy przeglądarkowe, ale ich nie zastępują.
Testowanie własnych właściwości CSS
W testach należy ustawić własne właściwości CSS na elemencie kontenera: element.style.setProperty("--color-primary", "red"). Obliczone wartości można odczytać za pomocą getComputedStyle(el).getPropertyValue("--color-primary"). JSDOM obsługuje odczytywanie własnych właściwości, ale nie obsługuje kaskady.
Testowanie klas animacji
Należy sprawdzić, czy klasy wyzwalające animację są dodawane i usuwane we właściwym czasie: przetestować, czy komponent modal dodaje klasę animate-enter podczas otwierania i klasę animate-exit przed odmontowaniem. Sam CSS animacji należy testować za pomocą VRT.
Pokrycie logiki CSS
Logika CSS znajduje się w JavaScript: warunkowe ciągi klas, wartości dostawcy motywu i generowanie obiektów stylów. Pokrycie kodu JavaScript przez Jest (Istanbul) obejmuje tę logikę CSS. Należy pisać testy obejmujące wszystkie rozgałęzienia, aby sprawdzić każdą kombinację wariantu i stanu.
Sprawdzenie wiedzy
Co robi identity-obj-proxy użyty z modułami CSS w Jest?
Podsumowanie
Testy jednostkowe CSS z użyciem Jest weryfikują logikę zastosowania klas, warunkowe stylowanie i działanie modułów CSS bez prawdziwej przeglądarki. Należy używać identity-obj-proxy dla modułów CSS, jest-styled-components dla Styled Components oraz matcherów jest-dom dla czytelnych asercji. W połączeniu z VRT zapewniają kompleksowe pokrycie jakości CSS.
Często zadawane pytania
Czy lekcja „Testowanie jednostkowe CSS za pomocą Jest” jest bezpłatna?
Tak — pełny tekst „Testowanie jednostkowe CSS za pomocą Jest” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CSS Academy, przejdź na CoddyKit PRO. Kurs CSS Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Testowanie jednostkowe CSS za pomocą Jest”?
Testuj wyniki CSS-in-JS i twórz migawki stylizowanych komponentów za pomocą Jest oraz powiązanych matcherów. Ćwiczysz CSS Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć CSS Academy?
Nie wymagamy żadnego doświadczenia. CSS Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Testowanie jednostkowe CSS za pomocą Jest”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji CSS Academy?
Tak. Każda lekcja CSS Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy testów regresji wizualnej
- Percy i Chromatic dla Storybook
- Testowanie jednostkowe CSS za pomocą Jest
- Testowanie dostępności: color-contrast i focus