0Pricing
HTML Academy · Lekcja

Testowanie migawkowe HTML

Wykrywanie niezamierzonych zmian HTML za pomocą testów migawek

Testowanie migawkowe HTML to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 4 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 HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.

Czym są testy snapshot

Testy snapshot zapisują wynik renderowania komponentu lub strony podczas pierwszego uruchomienia, a podczas kolejnych uruchomień porównują nowy wynik z zapisanym snapshotem. Każda zmiana w wyniku HTML powoduje niepowodzenie testu do momentu celowej aktualizacji snapshotu.

Testy snapshot w Jest

Matcher toMatchSnapshot() w Jest serializuje wartość (w tym JSX wyrenderowany do HTML) i porównuje ją z zapisanym plikiem. npx jest -u aktualizuje snapshoty, gdy zachodzą zamierzone zmiany. Testy pełnią funkcję siatki bezpieczeństwa chroniącej przed niezamierzonymi zmianami renderowania.

import { render } from "@testing-library/react";
import Button from "./Button";

test("Button renders consistently", () => {
  const { container } = render(<Button>Save</Button>);
  expect(container.innerHTML).toMatchSnapshot();
});

Storybook Test Runner

Storybook Test Runner uruchamia każdą historyjkę i tworzy snapshoty jej wyniku za pomocą axe (dostępność) oraz serializacji DOM. W połączeniu z Chromatic dodaje do tego regresję wizualną — różnice na poziomie pikseli oprócz różnic w DOM.

Regresja wizualna z Percy lub Chromatic

Percy i Chromatic zapisują wyrenderowane strony jako obrazy i pokazują różnice wizualne. Wykrywają regresje CSS, których snapshoty DOM nie wykrywają (zmianę czcionki, modyfikację marginesu, zmianę koloru). Snapshoty DOM (tanie i szybkie) należy łączyć ze snapshotami wizualnymi (droższymi i kompleksowymi).

Utrzymanie snapshotów

Snapshoty, które zmieniają się „zbyt łatwo”, stają się źródłem szumu. Należy unikać tworzenia snapshotów dla niestabilnych wartości (dat, identyfikatorów, losowych kluczy). W przypadku pól, które zgodnie z założeniami różnią się między uruchomieniami, należy używać matcherów właściwości Jest (expect.any(String)). Snapshoty powinny być małe i skoncentrowane.

Przegląd kodu dla snapshotów

Różnice w plikach snapshotów w pull requestach są pełnoprawnym materiałem do przeglądu. Osoby dokonujące przeglądu sprawdzają, czy zmiany w DOM są zamierzone i pożądane, wykrywając przypadkowe skutki kaskadowe „prostej” zmiany CSS. Różnice w snapshotach należy traktować tak samo jak każdą inną różnicę.

Nie twórz snapshotów dla wszystkiego

Tworzenie snapshotów rozbudowanych renderów całych stron jest kruche — każda drobna zmiana prowadzi do ogromnego diffa. Twórz snapshoty na poziomie komponentów: każdego Buttona, każdej Card i każdego FormField. Renderowanie na poziomie strony lepiej pokryć testami regresji wizualnej.

Serializacja snapshotów

Wybierz sposób serializacji: pełny HTML, uproszczony DOM, tylko propsy albo drzewo dostępności. Każdy format wykrywa inne regresje. W przypadku komponentów UI pełny HTML zapewnia najdokładniejsze sprawdzenie; w przypadku logiki sterowanej przez propsy wariant obejmujący tylko propsy jest tańszy i rzadko powoduje fałszywe alarmy.

Gdy snapshoty się psują

Najczęstszą przyczyną jest refaktoryzacja, która generuje równoważny, ale inaczej zbudowany HTML. Sprawdź diff: jeśli zmiana jest zamierzona i poprawna, zaktualizuj snapshot. Jeśli jest nieoczekiwana, napraw kod, który leży u jej podstaw. Nigdy nie uruchamiaj bez sprawdzenia jest -u.

Snapshoty między przeglądarkami

Narzędzia do testów regresji wizualnej renderują widoki w wielu przeglądarkach i zgłaszają różnice charakterystyczne dla konkretnych przeglądarek. Wykorzystaj je do wykrywania CSS-u, który renderuje się inaczej w Safari niż w Chrome — to częsty problem w przypadku nowych funkcji układu na wczesnym etapie ich wdrażania. Bez snapshotów między przeglądarkami takie regresje są wykrywane dopiero podczas ręcznych testów QA.

Łączenie z innymi testami

Testy snapshotowe są niezbędne, ale niewystarczające. Wykrywają niezamierzone zmiany w renderowaniu, ale nie wykrywają błędów logiki (na przykład tego, że kliknięcie przycisku nie wykonuje właściwej czynności). Połącz je z testami jednostkowymi sprawdzającymi zachowanie oraz testami end-to-end dla ścieżek użytkownika — każda warstwa wykrywa inne rodzaje błędów.

Wydajność

Testy snapshotowe są szybkie — porównują ciągi znaków lub pliki. Testy regresji wizualnej są wolniejsze (renderują piksele i porównują obrazy, często w wielu przeglądarkach). Uruchamiaj snapshoty przy każdym buildzie CI; testy regresji wizualnej uruchamiaj przy każdym PR-ze, ale zależnie od budżetu CI być może nie przy każdym commicie.

Sprawdzenie wiedzy

Dlaczego testy snapshotowe DOM-u zwykle uzupełnia się testami regresji wizualnej, takimi jak Percy lub Chromatic?

Podsumowanie

Testowanie snapshotowe zapisuje wyrenderowany HTML przy pierwszym uruchomieniu i sygnalizuje każdą zmianę przy kolejnych uruchomieniach. Używaj Jestu toMatchSnapshot dla DOM-u komponentów, Storybook Test Runner dla stories oraz Percy/Chromatic do regresji wizualnej na poziomie pojedynczych pikseli. Twórz snapshoty na poziomie komponentów, a nie całych stron, wykluczaj niestabilne wartości i dokładnie analizuj diffy w PR-ach. Łącz te testy z testami jednostkowymi i end-to-end, aby uzyskać pełne pokrycie.

Często zadawane pytania

Czy lekcja „Testowanie migawkowe HTML” jest bezpłatna?

Tak — pełny tekst „Testowanie migawkowe HTML” 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 HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Testowanie migawkowe HTML”?

Wykrywanie niezamierzonych zmian HTML za pomocą testów migawek Ćwiczysz HTML 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ąć HTML Academy?

Nie wymagamy żadnego doświadczenia. HTML 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 4 z 4.

Ile czasu zajmuje lekcja „Testowanie migawkowe HTML”?

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 HTML Academy?

Tak. Każda lekcja HTML 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. Walidator znaczników W3C
  2. Audyt HTML w Lighthouse
  3. pa11y i axe do testowania dostępności
  4. Testowanie migawkowe HTML
← Powrót do HTML Academy