0Pricing
CSS Academy · Lekcja

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

  1. Podstawy testów regresji wizualnej
  2. Percy i Chromatic dla Storybook
  3. Testowanie jednostkowe CSS za pomocą Jest
  4. Testowanie dostępności: color-contrast i focus
← Powrót do CSS Academy