❗Uwaga! W najnowszej wersji TypeScript doszły nowe reguły sprawdzające poprawność kodu!❗ Aktualnie wskazane jest inicjalizowanie zmiennych w konstruktorze. W naszym przypadku oznacza to, że inicjalizację lokatorów musimy przenieść do konstruktora☝ O tych zmianach poczytasz w lekcji na naszej stronie: jaktestowac.pl/lesson/pw1s03l03/ 😉
@Naqaraa24 күн бұрын
Cenna informacja. Zacząłem się głowić niedawno o co biega.
@jaktestowac24 күн бұрын
@@Naqaraa zmiany są kosmetyczne ale staramy się o nich informować, w razie kłopotów zapraszamy też na nasz Discord: Automatyzacja i Playwright Polska!
@TheTreborMedia4 ай бұрын
cool
@krzysiek33d9 ай бұрын
Nie mówi się "teście" tylko "teściowie" - wiem głupi komentarz, ale nie mogłem się powstrzymać xD
@jaktestowac9 ай бұрын
Szczególnie przy failującym teściu może nastapić potoczne odzwierciedlenie tego typu relacji😁
@pam8873 Жыл бұрын
Hej mam pytanie odnośnie zasady deklarownaia zmiennych w //Act. Dla zmiennej przechowującej dane loginu zadeklarowalismy sobie na poczatku testu const userLogin = loginData.loginId; - czyli pobieramy sobie wartosć z naszego pliku z danymi i w akcjach używamy już userLogin. Natomiast dla lokatora login input nie zadeklarowalismy zmiennej na poczatku testu i odnosimy się do niego w akcjach za pomoca loginPage.loginInput? Czy działamy tutaj wedle uznania, czy jest jakaś dobra praktyka, np. żeby na poczatku testu deklarowac wszystkie zmienne ktore uzywamy z klas lub plikow z danymi? Pozdrawiam!
@jaktestowac Жыл бұрын
Hej, Bardzo słuszna uwaga! 😁Zgodzie się z Tobą, że ta wartość lokatora powinna być wydzielona na początek, do sekcji // Act. Również to jest dobra praktyka i zazwyczaj wszystkie dane testowe i zmienne powinniśmy trzymać w // Arrange, a akcje na stronie w sekcji // Act. Nawiązując do nagrania - tutaj jest to świadome działanie. W kolejnych lekcjach dalej refaktoryzuje kod testów, i wtedy tą zmienną wydzielam do klasy reprezentującej daną stronę. Dzięki temu pozbywamy się z poziomu testu wszystkich lokatorów i selektorów😉
@pam8873 Жыл бұрын
@@jaktestowac dzięki za odpowiedź! A tak w ogóle to świetny material szkoleniowy :)
@jaktestowac Жыл бұрын
@@pam8873 Dzięki wielkie!😁
@BenShow-j8kКүн бұрын
jak rozwiazac taki problem, czesto mi blad asercji wystepuje, randomowo, niestabilne Error: Timed out 5000ms waiting for expect(locator).toHaveText(expected) Locator: locator('#show_messages') Expected string: "Doładowanie wykonane! 15,00PLN na numer 500 xxx xxx" Received string: "Brak wiadomości" Call log: - expect.toHaveText with timeout 5000ms - waiting for locator('#show_messages') 9 × locator resolved to Brak wiadomości - unexpected value "Brak wiadomości" 55 | 56 | // Assert > 57 | await expect(page.locator('#show_messages')).toHaveText(expectedMessage); | ^ 58 | 59 | }); 60 | at C:\Projects\demo-bank-tests\tests\pulpit.spec.ts:57:54
@BenShow-j8kКүн бұрын
co ciekawe, jezeli uzyje --headed to o wiele rzadsze repro
@jaktestowacКүн бұрын
@BenShow-j8k swietne pytanie! W tym przypadku testowana przez nas strona jest faktycznie niestabilna i raz na kilka wykonań testu pojawia się błąd z niepoprawną wiadomością. Ciężko powtórzyć ten przypadek (szczególnie manualnie!), dlatego jeszcze nie udało nam się go naprawić. Jednym z rozwiązań jest dodanie retry - czyli powtórzenia testu, gdy zakończy się niepowodzeniem. Jesli chcemy ustawić retry dla testów dla describe, możemy skorzystać z takiej konstrukcji: ``` test.describe.configure({ retries: 2 }); test('simple payment', async ({ page }) => { // Arrange ``` Plusem tego jest otrzymanie informacji, czy w ogóle ta funkcjonalność działa, a sam test zostanie odpowiednio oznaczony (jako flaky) i w przyszłości możemy wrócić do analizy przyczyny :) Jest to troche bardziej zaawansowana technika związana z zarządzaniem testami i wynikami i powinna być stosowana z rozwagą. Bo flaky testy oznaczają, że nasze testy albo aplikacja działają niestabilnie. Jednak w tym przypadku płatności - wiemy, że aplikacja jest niestabilna (możemy założyć, że "zostało to zgłoszone w projekcie") 😀 Daj prosze znac, czy to ustabilizowało ten test u Ciebie :)