Jeśli pracowaliście już z testami regresji wizualnej, wiecie, że często w proces analizy trzeba zaangażować kilka osób, aby zdecydować, które zmiany są spodziewane, a które są błędami. Istnieją komercyjne narzędzia, takie jak SauceLabs, BrowserStack czy LambdaTest, które pomagają w testach wizualnych, ale ich koszt szybko rośnie – szczególnie, jeśli regresja wizualna nie jest priorytetem w projekcie.

W takich przypadkach świetną alternatywą jest rozwiązanie open-source – Visual Regression Tracker – które możemy zainstalować we własnej infrastrukturze i dzięki temu mieć pełną kontrolę nad środowiskiem testowym.

Kolejnym, bardziej zaawansowanym narzędziem open-source, które pozwala na wykrywanie potencjalnych regresji wizualnych przy użyciu Playwrighta, jest Visual Regression Tracker.

Visual Regression Tracker umożliwia skuteczne porównywanie zrzutów ekranu w celu identyfikacji zmian wizualnych i potencjalnych błędów. Jest to narzędzie, które można samodzielnie wdrożyć w swojej infrastrukturze, dzięki czemu mamy pełną kontrolę nad środowiskiem testowym.

testy wizualnej regresji logo vrt

Visual Regression Tracker to narzędzie open-source składające się z dwóch głównych elementów.

Pierwszym jest aplikacja do przechowywania wyników testów wizualnych, oferująca funkcje takie jak uwierzytelnianie użytkowników oraz oznaczanie ignorowanych obszarów w testowanych aplikacjach. Działa to podobnie jak maska w Playwright—gdzie maska również jest dostępna—jednak w tym przypadku ignorowane obszary można oznaczać bezpośrednio z poziomu aplikacji webowej. Możemy też decydować, co jest zatwierdzone dla każdej gałęzi, dzięki czemu cały zespół ma do tego dostęp poprzez aplikację webową, korzystając z własnych kont użytkowników.

Drugim elementem jest biblioteka, którą instalujemy w naszym frameworku do automatyzacji testów.

Visual Regression Tracker można zintegrować nie tylko z Playwright, ale także z innymi popularnymi frameworkami testowymi, takimi jak Robot Framework, Cypress czy CodeceptJS.

Dodatkowo instalacja zawiera REST API, które pozwala nam tworzyć własne integracje z Visual Regression Tracker, nawet jeśli korzystamy z narzędzia, które nie jest obecnie obsługiwane, np. frameworków do automatyzacji testów mobilnych.

Jak to działa?

Visual Regression Tracker korzysta z bazy danych PostgreSQL do przechowywania wyników testów. Alternatywnie obrazy można przechowywać w zewnętrznych storage’ach, np. Amazon S3. Drugi kontener odpowiada za frontend aplikacji, w którym mamy możliwość analizy i akceptacji/odrzucania wyników wizualnych.

Jak zainstalować to rozwiązanie?

Najprostszym sposobem na zainstalowanie Visual Regression Trackera jest skorzystanie ze skryptu instalacyjnego, który „pod spodem” pobiera i uruchamia odpowiednie kontenery Docker.

Robię to poprzez skorzystanie z komendy:

curl https://raw.githubusercontent.com/Visual-Regression-Tracker/Visual-Regression-Tracker/master/vrt-install.sh -o vrt-install.sh

chmod a+x vrt-install.sh

./vrt-install.sh

Podczas instalacji pobierane są wszystkie niezbędne pliki związane z kontenerami Dockera dla tego projektu. Ważne jest, aby przed uruchomieniem tego skryptu upewnić się, że Docker jest uruchomiony w systemie.

Po zakończeniu instalacji naszym oczom ukazuje się strona logowania do Visual Regression Trackera, który jest dostępny na porcie 8080. Aby się zalogować, musimy użyć danych użytkownika wygenerowanych podczas instalacji kontenerów Docker.

Oprócz zainstalowania Visual Regression Trackera za pomocą Dockera, konieczne jest również zainstalowanie biblioteki agent-playwright, która umożliwia integrację z naszymi testami automatycznymi.

Bibliotekę agen-playwright Instalujemy ją poprzez paczkę npm.

npm install @visual-regression-tracker/agent-playwright

Plik vrt.json

Jednym ze sposobów skonfigurowania lokalnej integracji z Visual Regression Trackerem jest użycie pliku konfiguracyjnego vrt.json. W tym pliku musimy ustawić apiKey, który można łatwo znaleźć podczas instalacji narzędzia.

Dodatkowo możemy skonfigurować opcję korzystania z tzw. miękkich asercji poprzez ustawienie parametru “enableSoftAssert”: true. Spowoduje to, że testy nie będą kończyły się błędem w przypadku wykrycia różnic wizualnych, a wszelkie błędy zostaną jedynie zalogowane w Visual Regression Trackerze.

Podejście do używania miękkich asercji może się różnić w zależności od zespołu i specyfiki projektu. Niektórzy preferują, aby testy zawsze przechodziły, a wyniki wizualnej regresji były sprawdzane ręcznie. Inni stosują bardziej restrykcyjne podejście, w którym każdy błąd powoduje niezaliczenie testu. Obydwa podejścia mają swoje zalety i wady – wybór zależy od kontekstu oraz specyfiki aplikacji.

Token api do skopiowania dostępny jest podczas instalacji  Visual Regression Trackera. Następnie token trzeba pobrać i wkleić w pliku vrt.json do parametru apiKey.

Opis pól:

  • apiUrl – adres instancji Visual Regression Trackera
  • project – nazwa projektu (domyślnie „Default project”)
  • apiKey – klucz API wygenerowany przy instalacji Dockera
  • ciBuildId – identyfikator buildu (np. commit SHA, numer joba w Jenkinsie)
  • branchName – nazwa gałęzi, której dotyczą testy
  • enableSoftAssert – jeśli true, testy nie failują, a różnice są tylko logowane

Oprócz klucza API do lokalnej instancji Visual Regression Trackera, w tym miejscu znajdziemy również informacje dotyczące wygenerowanego loginu i hasła. Jeśli domyślny sposób generowania tych danych nam nie odpowiada, możemy łatwo go zmienić, edytując plik seed.ts i modyfikując dwie zmienne (zaznaczone na czerwono).

https://github.com/Visual-Regression-Tracker/backend/blob/master/prisma/seed.ts

testy wizualnej regresji konfiguracja

Logowanie się do Visual Regression Trackera

Po zalogowaniu naszym oczom ukazują się domyślne szczegóły naszego projektu.

Obraz zawierający tekst, wizytówka, zrzut ekranu, Czcionka

Opis wygenerowany automatycznie

testy wizualnej regresji ustawienia

W tym miejscu możemy zmienić nazwę projektu, ustawić domyślny branch, a także skonfigurować podstawowe ustawienia związane z tzw. thresholdem (progiem akceptacji różnic wizualnych). Threshold określa, jak bardzo nasza strona może się różnić od wzorca. Zbyt niska wartość może powodować generowanie dużej liczby false positive – czyli sytuacji, w których test zgłasza błędy mimo braku istotnych zmian wizualnych. Natomiast zbyt wysoka wartość może skutkować niewykrywaniem istotnych zmian wizualnych.

Konfiguracja połączenia z Visual Regression Tracker

Aby połączyć się z naszym rozwiązaniem, musimy dodać klucz API, który umożliwi przesyłanie wyników naszych testów automatycznych do zainstalowanej instancji Visual Regression Trackera.

Dane te można ustawić za pomocą JavaScriptu lub pliku .json. Osobiście preferuję użycie pliku .json, ponieważ na CI (Continuous Integration) łatwo można podmieniać wartości w takim pliku lub mieć różne zestawy konfiguracji zapisane w oddzielnych plikach.

Jakie mamy możliwości ustawień?

Mamy możliwość zrobienia zrzut ekranu dla całej strony za pomocą metody trackPage lub poszczególnych elementów dzięki metodzie trackElementHandler.

Metoda trackPage

Umożliwia ona nie tylko nadanie nazwy zrzutowi ekranu, ale także wykorzystanie różnych parametrów, które decydują o sposobie wykonania testów wizualnych. Parametry te pozwalają na dostosowanie działania testów w zależności od potrzeb i specyfiki strony.

W tym miejscu możemy zdefiniować, czy chcemy wykluczyć animacje podczas robienia zrzutu ekranu, czy wykonać zrzut ekranu całej strony, a także skorzystać z maski oraz określić jakość generowanych zrzutów ekranu.

Dostępnych opcji konfiguracji jest więcej niż w domyślnym mechanizmie wykrywania regresji wizualnych dostępnym w Playwright zaraz po instalacji, co pozwala na bardziej precyzyjne dostosowanie testów do naszych potrzeb.

Zrobienie porównania elementów

Oprócz możliwości wykonywania testów dla całej strony, Visual Regression Tracker oferuje również opcję porównywania wybranych elementów na stronie. Może to być szczególnie przydatne w sytuacjach, gdy wiemy, że część strony jest dynamiczna i jej wygląd może się zmieniać, a mimo to chcemy sprawdzić poprawność wyświetlania określonych elementów – na przykład dla różnych systemów operacyjnych czy przeglądarek.

Zaczynamy pracę z Visual Test Regression ! Pierwszy test

Aby skorzystać z Visual Regression Trackera w naszych testach, musimy odpowiednio zdefiniować jego działanie w kodzie. Przechodzę do utworzenia nowego testu. Na początku należy użyć metody vrt.start(), która inicjalizuje działanie Visual Regression Trackera.

Następnie, warto od razu zdefiniować metodę vrt.stop(), która zatrzymuje działanie i umożliwia przesłanie wyników testów do zainstalowanej instancji Visual Regression Trackera.

testy wizualnej regresji test fixtures

Następnie przechodzę do zdefiniowania mojego testu

testy wizualnej regresji test

Wprowadziłem zmianę w teście poprzez zmianę adresu strony testowej strony dla naszego przykładu. Tak, aby przesunięcie elementów na stronie było widoczne.

testy wizualnej regresji przykład

Po uruchomieniu testu naszym oczom ukazuję się komunikat o błędzie. Również w Visual Regression Trackerze jest to widoczne.

testy wizualnej regresji przesunięcie

W tym miejscu możemy sami zdecydować, czy wykryta zmiana jest spodziewana – na przykład, gdy frontend developer wprowadził oczekiwaną modyfikację w interfejsie użytkownika. W takim przypadku możemy zatwierdzić najnowszy zrzut ekranu jako nowy baseline, klikając przycisk „approve”. Jeśli jednak uznamy, że zmiana jest nieprawidłowa, możemy ją odrzucić, oznaczając jako błąd.

Na potrzeby tego artykułu uznaję, że jest to błąd, dlatego w Visual Regression Trackerze test otrzymuje etykietę „failed”.

testy wizualnej regresji błąd

Podczas ponownego uruchamiania testu wystąpił błąd w IDE, a z punktu widzenia Visual Regression Trackera wynik został oznaczony jako „unresolved” (zamiast „failed”). Oznacza to, że – podobnie jak przy poprzednim uruchomieniu – musimy ręcznie zdecydować, czy zmiana jest błędem, czy spodziewaną modyfikacją. Visual Regression Tracker jedynie rejestruje, że nastąpiła zmiana, ale nie potrafi samodzielnie określić, czy jest ona poprawna.

Ustawienie parametru ?mode=random&pixel_shift=1200 powoduje, że obraz zmienia swoją pozycję w sposób pseudolosowy przy każdym uruchomieniu testu, co skutkuje takim samym wynikiem „unresolved”. Aby uzyskać bardziej przewidywalne rezultaty, wracam do podstawowego adresu URL tej strony, eliminując element losowości.

Jeśli planujecie korzystać z Visual Regression Trackera lub innego narzędzia do wykrywania potencjalnych zmian wizualnych, warto pracować na stabilnych środowiskach. Najlepiej porównywać dwa środowiska, np. staging (zawierające produkcyjną wersję strony) i develop (z wersją deweloperską), aby zminimalizować szum informacyjny i sprawić, by narzędzie faktycznie wspierało wykrywanie istotnych zmian, zamiast wprowadzać chaos.

Jak zrobić screenshot na podstawie jednego elementu

Żeby robić zrzut ekranu dla jednego elementu należy użyć metody trackElementHandle.

Aby zrobić zrzut ekranu dla pojedynczego elementu, najprostszym sposobem jest znalezienie elementu na podstawie selektora. Na poniższym przykładzie najpierw wyszukiwany jest element z selektorem h1, następnie wykonywany jest zrzut ekranu tego elementu, który zostaje przesłany do Visual Regression Trackera.

Metoda trackElementHandle oferuje wiele przydatnych opcji. Możemy określić, który element ma zostać użyty, czy zrzut ma być wykonany wraz z tłem, jaką nazwę ma mieć zrzut ekranu oraz skorzystać z innych dodatkowych parametrów.

Jeżeli mamy stronę, na której dany selektor występuje więcej niż raz, możemy rozważyć wykonanie zrzutu ekranu dla każdego z tych elementów, używając tej metody.

testy wizualnej regresji przejście do strony

Podsumowanie

W tym artykule przedstawiłem, jak możemy podejść do tematu visual regression w testach automatycznych z wykorzystaniem Playwright. Dzięki takiemu podejściu mamy możliwość wykrywania potencjalnych błędów wizualnych, które mogą pojawić się w aplikacji po wprowadzeniu zmian.

Jest to szczególnie przydatne w przypadku stron sprzedażowych, gdzie nawet drobne zmiany w interfejsie użytkownika mogą powodować problemy wpływające na konwersję i doświadczenie użytkownika.

See What’s On: Workshops & Consultations

Level up your skills — see current workshops!

Newsletter

Author

Michał Ślęzak

Michał Ślęzak (Michal Slezak) brings over 10 years of expertise in test automation, having led projects for prominent banks and contributed to aviation and other major industry initiatives. His experience spans from large enterprises to innovative startups, including ArtistGrowth and WhatClinic.com. Currently, as a Test Architect at Sii, Michal plays a key role in diverse projects and initiatives. He also shares his knowledge through his blog, testingplus.me, focused on test automation in Polish, and actively engaged in the testing community by delivering training sessions and speaking at renowned conferences like QA Global Summit, 4Developers, TestWarez, TestFest, ConSelenium, and TestCamp.

Related posts:

Playwright in Practice: Writing Better Tests for Beginners with Page Object Pattern, Fixtures (TS)

Recently, I’ve been writing about using AI tools with Playwright — for example, how to use Cursor with Playwright (link), Playwright MCP (link), and how AI can help generate simple page objects. In today’s post, I’ll walk you through a complete refactoring: taking tests that don’t use the Page Object pattern or other object-oriented principles ...

Read more

Smarter Slides with AI Presentation Tools: My Experiments with 4 Useful Tools

As you’ve probably noticed, AI hype is everywhere right now, and almost every tool comes with a bunch of AI features – or at least it’s written on the landing page. Companies keep emphasizing that they use AI, LLMs, or at least machine learning. In this article, I’ll review four AI presentation tools I personally ...

Read more

Jeśli pracowaliście już z testami regresji wizualnej, wiecie, że często w proces analizy trzeba zaangażować kilka osób, aby zdecydować, które zmiany są spodziewane, a które są błędami. Istnieją komercyjne narzędzia, takie jak SauceLabs, BrowserStack czy LambdaTest, które pomagają w testach wizualnych, ale ich koszt szybko rośnie – szczególnie, jeśli regresja wizualna nie jest priorytetem w projekcie.

W takich przypadkach świetną alternatywą jest rozwiązanie open-source – Visual Regression Tracker – które możemy zainstalować we własnej infrastrukturze i dzięki temu mieć pełną kontrolę nad środowiskiem testowym.

Kolejnym, bardziej zaawansowanym narzędziem open-source, które pozwala na wykrywanie potencjalnych regresji wizualnych przy użyciu Playwrighta, jest Visual Regression Tracker.

Visual Regression Tracker umożliwia skuteczne porównywanie zrzutów ekranu w celu identyfikacji zmian wizualnych i potencjalnych błędów. Jest to narzędzie, które można samodzielnie wdrożyć w swojej infrastrukturze, dzięki czemu mamy pełną kontrolę nad środowiskiem testowym.

testy wizualnej regresji logo vrt

Visual Regression Tracker to narzędzie open-source składające się z dwóch głównych elementów.

Pierwszym jest aplikacja do przechowywania wyników testów wizualnych, oferująca funkcje takie jak uwierzytelnianie użytkowników oraz oznaczanie ignorowanych obszarów w testowanych aplikacjach. Działa to podobnie jak maska w Playwright—gdzie maska również jest dostępna—jednak w tym przypadku ignorowane obszary można oznaczać bezpośrednio z poziomu aplikacji webowej. Możemy też decydować, co jest zatwierdzone dla każdej gałęzi, dzięki czemu cały zespół ma do tego dostęp poprzez aplikację webową, korzystając z własnych kont użytkowników.

Drugim elementem jest biblioteka, którą instalujemy w naszym frameworku do automatyzacji testów.

Visual Regression Tracker można zintegrować nie tylko z Playwright, ale także z innymi popularnymi frameworkami testowymi, takimi jak Robot Framework, Cypress czy CodeceptJS.

Dodatkowo instalacja zawiera REST API, które pozwala nam tworzyć własne integracje z Visual Regression Tracker, nawet jeśli korzystamy z narzędzia, które nie jest obecnie obsługiwane, np. frameworków do automatyzacji testów mobilnych.

Jak to działa?

Visual Regression Tracker korzysta z bazy danych PostgreSQL do przechowywania wyników testów. Alternatywnie obrazy można przechowywać w zewnętrznych storage’ach, np. Amazon S3. Drugi kontener odpowiada za frontend aplikacji, w którym mamy możliwość analizy i akceptacji/odrzucania wyników wizualnych.

Jak zainstalować to rozwiązanie?

Najprostszym sposobem na zainstalowanie Visual Regression Trackera jest skorzystanie ze skryptu instalacyjnego, który „pod spodem” pobiera i uruchamia odpowiednie kontenery Docker.

Robię to poprzez skorzystanie z komendy:

curl https://raw.githubusercontent.com/Visual-Regression-Tracker/Visual-Regression-Tracker/master/vrt-install.sh -o vrt-install.sh

chmod a+x vrt-install.sh

./vrt-install.sh

Podczas instalacji pobierane są wszystkie niezbędne pliki związane z kontenerami Dockera dla tego projektu. Ważne jest, aby przed uruchomieniem tego skryptu upewnić się, że Docker jest uruchomiony w systemie.

Po zakończeniu instalacji naszym oczom ukazuje się strona logowania do Visual Regression Trackera, który jest dostępny na porcie 8080. Aby się zalogować, musimy użyć danych użytkownika wygenerowanych podczas instalacji kontenerów Docker.

Oprócz zainstalowania Visual Regression Trackera za pomocą Dockera, konieczne jest również zainstalowanie biblioteki agent-playwright, która umożliwia integrację z naszymi testami automatycznymi.

Bibliotekę agen-playwright Instalujemy ją poprzez paczkę npm.

npm install @visual-regression-tracker/agent-playwright

Plik vrt.json

Jednym ze sposobów skonfigurowania lokalnej integracji z Visual Regression Trackerem jest użycie pliku konfiguracyjnego vrt.json. W tym pliku musimy ustawić apiKey, który można łatwo znaleźć podczas instalacji narzędzia.

Dodatkowo możemy skonfigurować opcję korzystania z tzw. miękkich asercji poprzez ustawienie parametru “enableSoftAssert”: true. Spowoduje to, że testy nie będą kończyły się błędem w przypadku wykrycia różnic wizualnych, a wszelkie błędy zostaną jedynie zalogowane w Visual Regression Trackerze.

Podejście do używania miękkich asercji może się różnić w zależności od zespołu i specyfiki projektu. Niektórzy preferują, aby testy zawsze przechodziły, a wyniki wizualnej regresji były sprawdzane ręcznie. Inni stosują bardziej restrykcyjne podejście, w którym każdy błąd powoduje niezaliczenie testu. Obydwa podejścia mają swoje zalety i wady – wybór zależy od kontekstu oraz specyfiki aplikacji.

Token api do skopiowania dostępny jest podczas instalacji  Visual Regression Trackera. Następnie token trzeba pobrać i wkleić w pliku vrt.json do parametru apiKey.

Opis pól:

  • apiUrl – adres instancji Visual Regression Trackera
  • project – nazwa projektu (domyślnie „Default project”)
  • apiKey – klucz API wygenerowany przy instalacji Dockera
  • ciBuildId – identyfikator buildu (np. commit SHA, numer joba w Jenkinsie)
  • branchName – nazwa gałęzi, której dotyczą testy
  • enableSoftAssert – jeśli true, testy nie failują, a różnice są tylko logowane

Oprócz klucza API do lokalnej instancji Visual Regression Trackera, w tym miejscu znajdziemy również informacje dotyczące wygenerowanego loginu i hasła. Jeśli domyślny sposób generowania tych danych nam nie odpowiada, możemy łatwo go zmienić, edytując plik seed.ts i modyfikując dwie zmienne (zaznaczone na czerwono).

https://github.com/Visual-Regression-Tracker/backend/blob/master/prisma/seed.ts

testy wizualnej regresji konfiguracja

Logowanie się do Visual Regression Trackera

Po zalogowaniu naszym oczom ukazują się domyślne szczegóły naszego projektu.

Obraz zawierający tekst, wizytówka, zrzut ekranu, Czcionka

Opis wygenerowany automatycznie

testy wizualnej regresji ustawienia

W tym miejscu możemy zmienić nazwę projektu, ustawić domyślny branch, a także skonfigurować podstawowe ustawienia związane z tzw. thresholdem (progiem akceptacji różnic wizualnych). Threshold określa, jak bardzo nasza strona może się różnić od wzorca. Zbyt niska wartość może powodować generowanie dużej liczby false positive – czyli sytuacji, w których test zgłasza błędy mimo braku istotnych zmian wizualnych. Natomiast zbyt wysoka wartość może skutkować niewykrywaniem istotnych zmian wizualnych.

Konfiguracja połączenia z Visual Regression Tracker

Aby połączyć się z naszym rozwiązaniem, musimy dodać klucz API, który umożliwi przesyłanie wyników naszych testów automatycznych do zainstalowanej instancji Visual Regression Trackera.

Dane te można ustawić za pomocą JavaScriptu lub pliku .json. Osobiście preferuję użycie pliku .json, ponieważ na CI (Continuous Integration) łatwo można podmieniać wartości w takim pliku lub mieć różne zestawy konfiguracji zapisane w oddzielnych plikach.

Jakie mamy możliwości ustawień?

Mamy możliwość zrobienia zrzut ekranu dla całej strony za pomocą metody trackPage lub poszczególnych elementów dzięki metodzie trackElementHandler.

Metoda trackPage

Umożliwia ona nie tylko nadanie nazwy zrzutowi ekranu, ale także wykorzystanie różnych parametrów, które decydują o sposobie wykonania testów wizualnych. Parametry te pozwalają na dostosowanie działania testów w zależności od potrzeb i specyfiki strony.

W tym miejscu możemy zdefiniować, czy chcemy wykluczyć animacje podczas robienia zrzutu ekranu, czy wykonać zrzut ekranu całej strony, a także skorzystać z maski oraz określić jakość generowanych zrzutów ekranu.

Dostępnych opcji konfiguracji jest więcej niż w domyślnym mechanizmie wykrywania regresji wizualnych dostępnym w Playwright zaraz po instalacji, co pozwala na bardziej precyzyjne dostosowanie testów do naszych potrzeb.

Zrobienie porównania elementów

Oprócz możliwości wykonywania testów dla całej strony, Visual Regression Tracker oferuje również opcję porównywania wybranych elementów na stronie. Może to być szczególnie przydatne w sytuacjach, gdy wiemy, że część strony jest dynamiczna i jej wygląd może się zmieniać, a mimo to chcemy sprawdzić poprawność wyświetlania określonych elementów – na przykład dla różnych systemów operacyjnych czy przeglądarek.

Zaczynamy pracę z Visual Test Regression ! Pierwszy test

Aby skorzystać z Visual Regression Trackera w naszych testach, musimy odpowiednio zdefiniować jego działanie w kodzie. Przechodzę do utworzenia nowego testu. Na początku należy użyć metody vrt.start(), która inicjalizuje działanie Visual Regression Trackera.

Następnie, warto od razu zdefiniować metodę vrt.stop(), która zatrzymuje działanie i umożliwia przesłanie wyników testów do zainstalowanej instancji Visual Regression Trackera.

testy wizualnej regresji test fixtures

Następnie przechodzę do zdefiniowania mojego testu

testy wizualnej regresji test

Wprowadziłem zmianę w teście poprzez zmianę adresu strony testowej strony dla naszego przykładu. Tak, aby przesunięcie elementów na stronie było widoczne.

testy wizualnej regresji przykład

Po uruchomieniu testu naszym oczom ukazuję się komunikat o błędzie. Również w Visual Regression Trackerze jest to widoczne.

testy wizualnej regresji przesunięcie

W tym miejscu możemy sami zdecydować, czy wykryta zmiana jest spodziewana – na przykład, gdy frontend developer wprowadził oczekiwaną modyfikację w interfejsie użytkownika. W takim przypadku możemy zatwierdzić najnowszy zrzut ekranu jako nowy baseline, klikając przycisk „approve”. Jeśli jednak uznamy, że zmiana jest nieprawidłowa, możemy ją odrzucić, oznaczając jako błąd.

Na potrzeby tego artykułu uznaję, że jest to błąd, dlatego w Visual Regression Trackerze test otrzymuje etykietę „failed”.

testy wizualnej regresji błąd

Podczas ponownego uruchamiania testu wystąpił błąd w IDE, a z punktu widzenia Visual Regression Trackera wynik został oznaczony jako „unresolved” (zamiast „failed”). Oznacza to, że – podobnie jak przy poprzednim uruchomieniu – musimy ręcznie zdecydować, czy zmiana jest błędem, czy spodziewaną modyfikacją. Visual Regression Tracker jedynie rejestruje, że nastąpiła zmiana, ale nie potrafi samodzielnie określić, czy jest ona poprawna.

Ustawienie parametru ?mode=random&pixel_shift=1200 powoduje, że obraz zmienia swoją pozycję w sposób pseudolosowy przy każdym uruchomieniu testu, co skutkuje takim samym wynikiem „unresolved”. Aby uzyskać bardziej przewidywalne rezultaty, wracam do podstawowego adresu URL tej strony, eliminując element losowości.

Jeśli planujecie korzystać z Visual Regression Trackera lub innego narzędzia do wykrywania potencjalnych zmian wizualnych, warto pracować na stabilnych środowiskach. Najlepiej porównywać dwa środowiska, np. staging (zawierające produkcyjną wersję strony) i develop (z wersją deweloperską), aby zminimalizować szum informacyjny i sprawić, by narzędzie faktycznie wspierało wykrywanie istotnych zmian, zamiast wprowadzać chaos.

Jak zrobić screenshot na podstawie jednego elementu

Żeby robić zrzut ekranu dla jednego elementu należy użyć metody trackElementHandle.

Aby zrobić zrzut ekranu dla pojedynczego elementu, najprostszym sposobem jest znalezienie elementu na podstawie selektora. Na poniższym przykładzie najpierw wyszukiwany jest element z selektorem h1, następnie wykonywany jest zrzut ekranu tego elementu, który zostaje przesłany do Visual Regression Trackera.

Metoda trackElementHandle oferuje wiele przydatnych opcji. Możemy określić, który element ma zostać użyty, czy zrzut ma być wykonany wraz z tłem, jaką nazwę ma mieć zrzut ekranu oraz skorzystać z innych dodatkowych parametrów.

Jeżeli mamy stronę, na której dany selektor występuje więcej niż raz, możemy rozważyć wykonanie zrzutu ekranu dla każdego z tych elementów, używając tej metody.

testy wizualnej regresji przejście do strony

Podsumowanie

W tym artykule przedstawiłem, jak możemy podejść do tematu visual regression w testach automatycznych z wykorzystaniem Playwright. Dzięki takiemu podejściu mamy możliwość wykrywania potencjalnych błędów wizualnych, które mogą pojawić się w aplikacji po wprowadzeniu zmian.

Jest to szczególnie przydatne w przypadku stron sprzedażowych, gdzie nawet drobne zmiany w interfejsie użytkownika mogą powodować problemy wpływające na konwersję i doświadczenie użytkownika.

Author

Michał Ślęzak

Michał Ślęzak posiada ponad 10 lat doświadczenia w automatyzacji testów, prowadząc projekty dla wiodących banków oraz współtworząc inicjatywy w branży lotniczej i innych kluczowych sektorach. Jego doświadczenie obejmuje zarówno duże korporacje, jak i innowacyjne startupy, takie jak ArtistGrowth czy WhatClinic.com. Obecnie, jako Architekt Testów w Sii, Michał odgrywa kluczową rolę w różnorodnych projektach i inicjatywach. Dzieli się także swoją wiedzą na blogu testingplus.me, poświęconym automatyzacji testów w języku polskim, oraz aktywnie uczestniczy w społeczności testerskiej, prowadząc szkolenia i występując na renomowanych konferencjach, takich jak QA Global Summit, 4Developers, TestWarez, TestFest, ConSelenium czy TestCamp.

Leave a Comment