Jak zaplanować testy regresji sklepu w Playwright: koszyk, sesja, płatność i status zamówienia po błędzie?
Plan testów E2E ścieżki zakupu w sklepie internetowym: koszyk, sesja, płatność na symulowanych odpowiedziach dostawcy, powrót z bramki płatności i status zamówienia po błędzie, z ustawieniami Playwright do CI.
Regresja sklepu w Playwright powinna pilnować jednej rzeczy: czy klient może kupić i czy po każdym błędzie zamówienie ma poprawny status. Ten plan obejmuje pięć obszarów: koszyk, sesję, płatność na symulowanych odpowiedziach dostawcy, powrót z bramki płatności i status zamówienia po odmowie, przerwaniu albo opóźnionym powiadomieniu. Ekran płatności dostawcy sprawdza się ręcznie w sandboxie, a nie w CI. Każdy test zaczyna od czystego kontekstu przeglądarki i własnych danych po stronie serwera, a wynik płatności sprawdza po stronie serwera, nie tylko na stronie podziękowania.
Krótka odpowiedź
Źródła sprawdzone 10 listopada 2026, na dokumentacji Playwright i Stripe.
Ten poradnik jest dla CTO, lidera zespołu albo osoby odpowiedzialnej za jakość sklepu internetowego, która chce, żeby każde wdrożenie sprawdzało ścieżkę zakupu automatycznie. Nie porównuje narzędzi i nie omawia testów aplikacji mobilnych. Opisuje, które scenariusze sklepu warto objąć regresją i jak je ustawić w Playwright.
W skrócie: zacznij od pięciu obszarów, w których błąd kosztuje sprzedaż albo tworzy złe zamówienie. Płatności w CI testuj na symulowanych odpowiedziach dostawcy, a jego ekran płatności sprawdzaj ręcznie w sandboxie. Każdy scenariusz kończ sprawdzeniem stanu zamówienia po stronie serwera. Strona podziękowania mówi tylko, że przeglądarka dotarła pod adres powrotu, a nie że płatność została zaksięgowana.
1. Zakres regresji: pięć obszarów
Plan regresji to nie lista wszystkich możliwych testów, tylko zestaw, który musi przejść przed każdym wdrożeniem. W sklepie najważniejsza jest ścieżka od produktu do opłaconego zamówienia i jej zachowanie przy błędach.
Tabela pokazuje minimalny zakres. Każdy wiersz to kilka testów, a nie jeden długi scenariusz od strony głównej do potwierdzenia.
| Obszar | Co sprawdza | Wynik do potwierdzenia |
|---|---|---|
| Koszyk | Dodanie, zmiana ilości, usunięcie, zmiana ceny lub stanu | Suma i pozycje zgodne z serwerem |
| Sesja | Gość, logowanie w trakcie zakupu, wygasła sesja | Koszyk nie znika ani się nie dubluje |
| Płatność (symulowana) | Sukces, odmowa, brak środków, wymagane 3D Secure | Właściwy komunikat i stan płatności |
| Powrót z bramki | Powrót na stronę sklepu, utrata połączenia, powtórne odświeżenie | Jedno zamówienie, status z serwera |
| Status po błędzie | Odmowa, przerwane 3D Secure, opóźnione, zdublowane lub spóźnione starsze powiadomienie | Status zamówienia zgodny z regułą |
2. Środowisko i dane testowe
Regresja płatności działa tylko na środowisku testowym z kluczami trybu testowego dostawcy płatności. Na produkcji nie uruchamiaj testów płacących prawdziwą kartą ani tworzących prawdziwe zamówienia.
Playwright tworzy osobny kontekst przeglądarki dla każdego testu, więc każdy test ma własne ciasteczka i pamięć lokalną. Wykorzystaj to: test nie powinien zależeć od koszyka zostawionego przez poprzedni. Opis: izolacja kontekstów w Playwright.
Logowanie możesz wykonać raz w projekcie przygotowującym i zapisać stan sesji do pliku. Dokumentacja Playwright zaleca dodanie katalogu z tym plikiem do .gitignore i odradza trzymanie go w repozytorium. Gdy testy zmieniają stan po stronie serwera, na przykład koszyk zalogowanego klienta, dokumentacja proponuje osobne konto na każdy równoległy proces. Opis: uwierzytelnianie w Playwright.
- Produkty testowe: kilka produktów o znanej cenie i stanie, także jeden z niskim stanem i jeden z wariantami.
- Konta testowe: osobne konto dla każdego procesu równoległego, jeśli testy zmieniają koszyk zalogowanego klienta.
- Własne dane magazynu i katalogu: test, który zmienia cenę albo stan, używa produktów, z których nie korzysta żaden inny test.
- Reset po stronie serwera: każda próba, także ponowienie, tworzy lub czyści koszyk i potrzebne dane przez API przed startem. Osobny kontekst przeglądarki i osobne konto nie izolują danych współdzielonych na serwerze.
- Klucze testowe: tylko w zmiennych środowiskowych CI, nigdy w kodzie testów.
- Sprzątanie danych: zamówienia testowe oznaczaj tak, żeby dało się je odfiltrować w raportach.
3. Koszyk i sesja
Testy koszyka sprawdzają, czy to, co widzi klient, zgadza się z tym, co zapisał serwer. Po każdej akcji porównaj sumę na stronie z odpowiedzią API koszyka, a nie tylko z tekstem na ekranie.
Testy sesji sprawdzają przejścia między stanami: gość, zalogowany klient, wygasła sesja. Typowe błędy to zniknięcie koszyka po zalogowaniu, zdublowanie pozycji po połączeniu koszyka gościa z koszykiem konta i utrata danych dostawy po wygaśnięciu sesji.
- Dodanie i zmiana ilości: suma, rabat i koszt dostawy zgodne z serwerem.
- Zmiana ceny lub stanu w trakcie: zmień cenę albo wyzeruj stan przez API i sprawdź komunikat w koszyku i przy płatności.
- Odświeżenie strony: koszyk zostaje po przeładowaniu i po zamknięciu karty.
- Logowanie w trakcie zakupu: koszyk gościa łączy się z koszykiem konta bez dublowania pozycji.
- Wygasła sesja: po wygaśnięciu sesji klient wraca do koszyka z czytelnym komunikatem, a nie do pustej strony.
4. Płatność w trybie testowym
Stripe pisze, że interfejsy takie jak Stripe Checkout i Payment Element mają zabezpieczenia uniemożliwiające testy automatyczne, a do sprawdzania zachowania aplikacji zaleca symulowanie odpowiedzi danymi testowymi. Opis: testy automatyczne ze Stripe. Dlatego w CI Playwright sprawdza Twoją aplikację na symulowanych odpowiedziach dostawcy: sukces, odmowa, wymagane 3D Secure i powrót z bramki. Nie automatyzuje ekranu płatności dostawcy.
Ekran dostawcy sprawdzaj ręcznie w sandboxie, zwłaszcza po zmianach w płatnościach. Do tego służą dane testowe. Przykład Stripe: karta 4242 4242 4242 4242 przechodzi, 4000 0000 0000 0002 kończy się ogólną odmową, 4000 0000 0000 9995 odmową z powodu braku środków, a 4000 0027 6000 3184 zawsze wymaga uwierzytelnienia 3D Secure. Opis: dane testowe Stripe. Inni dostawcy mają własne tryby testowe i własne dane, więc sprawdź dokumentację swojego.
Stripe zaznacza, że stan karty z jednego testu może wpłynąć na kolejne testy używające tej samej karty, więc przy ręcznych sprawdzeniach używaj osobnej karty dla każdego niezależnego scenariusza. Osobna, rzadko uruchamiana kontrola kontraktu API może korzystać z sandboxa, z uwzględnieniem limitów zapytań.
Dla każdego wyniku płatności zapisz oczekiwany komunikat dla klienta i oczekiwany stan płatności po stronie sklepu. Test sprawdza oba.
5. Powrót z bramki płatności
Najczęściej pomijany scenariusz to sytuacja, w której płatność się udała, a przeglądarka nie wróciła do sklepu. Stripe pisze wprost, że nie można opierać realizacji zamówienia wyłącznie na stronie powrotu, bo klient może zapłacić i stracić połączenie, zanim ta strona się załaduje. Realizacja zamówienia wymaga obsługi webhooków. Opis: realizacja zamówień po płatności w Stripe.
Do symulacji tego przypadku w Playwright służy przechwytywanie żądań. Metoda page.route z route.abort pozwala przerwać ładowanie strony powrotu, a route.fulfill podstawić odpowiedź. Potwierdzenie płatności podaj wtedy jako symulowane zdarzenie dostawcy i sprawdź przez API albo panel, że zamówienie i tak ma status opłaconego. Opis: obsługa sieci w Playwright.
Stripe zaznacza też, że ten sam webhook może dotrzeć więcej niż raz, a kolejność zdarzeń nie jest gwarantowana. Opis: webhooki Stripe. Powtórzone zdarzenie sprawdzisz przez ponowną dostawę w sandboxie albo w teście integracyjnym z poprawnie podpisanym zdarzeniem testowym. Asercja dotyczy jednego skutku biznesowego: jednego zamówienia, jednej płatności i jednej rezerwacji.
Dodaj też dwa scenariusze kolejności. W pierwszym przeglądarka wraca przed webhookiem: strona powrotu pokazuje stan oczekujący, a zamówienie przechodzi na opłacone dopiero po potwierdzeniu płatności. W drugim starsze zdarzenie dociera po nowszym i nie cofa stanu zamówienia. Przy metodach płatności z opóźnionym wynikiem stan opłacony ustawia dopiero zdarzenie z ostatecznym wynikiem, w Stripe Checkout na przykład checkout.session.async_payment_succeeded.
6. Status zamówienia po błędzie
Ten obszar zamienia reguły biznesowe w testy. Zanim napiszesz test, zespół musi ustalić, jaki status ma mieć zamówienie w każdym przypadku. Jeśli tej reguły nie ma, test ją ujawni, ale nie powinien jej wymyślać.
Tabela pokazuje przykład reguły. Twoja platforma może używać innych nazw statusów; ważne, żeby każdy wiersz miał jeden oczekiwany wynik.
| Zdarzenie | Przykładowy oczekiwany stan | Co jeszcze sprawdzić |
|---|---|---|
| Odmowa karty | Brak opłaconego zamówienia, płatność odrzucona | Koszyk zachowany, klient może spróbować ponownie |
| Przerwane 3D Secure | Płatność niezakończona | Brak rezerwacji towaru po upływie przyjętego czasu |
| Płatność udana, brak powrotu do sklepu | Zamówienie opłacone | E-mail z potwierdzeniem wysłany |
| Zdublowany webhook | Jedno opłacone zamówienie | Jedna płatność, jedna rezerwacja |
| Powrót klienta przed webhookiem | Oczekujące, potem opłacone po potwierdzeniu | Strona powrotu nie pokazuje sukcesu przed potwierdzeniem |
| Starsze zdarzenie po nowszym | Stan bez zmian | Brak cofnięcia statusu i ponownej rezerwacji |
| Webhook przed powrotem klienta | Zamówienie opłacone | Strona powrotu pokazuje stan z serwera |
7. Uruchamianie w CI i niestabilne testy
Playwright domyślnie nie ponawia nieudanych testów. Po włączeniu ponowień test, który najpierw nie przeszedł, a potem przeszedł, jest oznaczany jako niestabilny. Opis: ponawianie testów w Playwright.
Dokumentacja Playwright zaleca w CI ustawienie trace na on-first-retry. Ślad rejestruje wtedy pierwsze ponowienie nieudanego testu, a nie pierwszą próbę. Ponowienie może przejść, więc ślad pokaże udany przebieg; porównaj go z logiem i zrzutem z pierwszej próby. Opis: przeglądarka śladów Playwright.
Niestabilny test płatności traktuj jako sygnał, a nie szum. Często oznacza wyścig między powrotem klienta a webhookiem, czyli dokładnie ten błąd, który może trafić na produkcję.
- Na każdy pull request: krótki zestaw koszyka i jednej udanej płatności na symulowanej odpowiedzi dostawcy.
- Przed wdrożeniem: pełny plan z odmowami, 3D Secure, powrotem z bramki i statusami po błędzie, na symulowanych odpowiedziach; przy zmianach w płatnościach także ręczne sprawdzenie ekranu dostawcy w sandboxie.
- Po wdrożeniu: monitorowanie ścieżki zakupu na produkcji, bez płatności testowych w produkcyjnych kluczach.
8. Czego ten plan nie obejmuje
Plan obejmuje przeglądarkową ścieżkę zakupu. Nie zastępuje testów jednostkowych logiki cen i rabatów, testów wydajności przed szczytem sprzedaży ani testów aplikacji mobilnej, które wymagają innych narzędzi.
Regresja przed wdrożeniem nie zastępuje też obserwacji produkcji. O tym, jak mierzyć ścieżkę zakupu w czasie szczytów, piszemy w poradniku o obserwowalności sklepu w szczycie sprzedaży.
Najczęstsze pytania
- Czy strona podziękowania wystarczy jako dowód udanej płatności w teście?
- Nie. Strona podziękowania pokazuje tylko, że przeglądarka wróciła pod adres powrotu. Test powinien sprawdzić stan zamówienia i płatności po stronie serwera, bo Stripe wymaga obsługi webhooków do realizacji zamówienia.
- Czy Playwright powinien klikać ekran płatności Stripe?
- Nie w CI. Stripe opisuje zabezpieczenia Checkout i Payment Element przed testami automatycznymi i zaleca symulowanie odpowiedzi. W CI testuj swoją aplikację na symulowanych wynikach, ekran dostawcy sprawdzaj ręcznie w sandboxie, a na produkcji nie płać testowo prawdziwą kartą.
- Jak przetestować zdublowany webhook?
- Użyj ponownej dostawy zdarzenia w sandboxie albo w teście integracyjnym wyślij dwa razy to samo, poprawnie podpisane zdarzenie testowe. Sprawdź jeden skutek biznesowy: jedno zamówienie, jedną płatność i jedną rezerwację towaru.
- Czym ten plan różni się od ogólnego opisu Playwright?
- Nie opisuje możliwości narzędzia, tylko konkretne scenariusze regresji sklepu: koszyk, sesję, płatność testową, powrót z bramki i status zamówienia po błędzie.
Sprawdź, które scenariusze zakupu Twój sklep już testuje
Treść zaktualizowano: 10 listopada 2026
Google Preferred Sources
Czytaj GMI częściej w Google
Dodaj gmi.software do preferowanych źródeł. Google może częściej wyróżniać nasze nowe materiały w Top Stories i obsługiwanych widokach AI.