Jak podchodzicie do testowania kodu frontowego? Przyznam szczerze, że spotkałem się już z wieloma podejściami, ale chyba najbardziej podzielam to o których pisze twórca RTLa, czyli żeby test komponentu odzwierciedlał jego realne użycie przez end usera. Więc piszemy głównie testy integracyjne wspierając się tylko unitami.
@AntyKuc RTL i uzywasz zgodnie z accessibility czyli tak jak ta biblioteka zostala zaprojektowana. Jest kilka waznych zasad:
1. Nie testuj styli, jakis wizualnych aspektow - od tego sa visual testy 2. Nie uzywaj dataTestId - to dodaje smieciowy kod i wymusza implementacje - testy powinny dzialac praktycznie niezaleznie od implementacji ficzera, liczy sie efekt 3. Nie sprawdzaj czegos co jest juz testowane gdzie indziej - jezeli Twoj komponent renderuje inny komponent ktory ma
@xxx_JOBOL_PL_xxx: Np. test Forma - jest to jeden komponent, ale składa się pod spodem z wielu mniejszych komponentów, requestów do api, mapperów, stora itd. Więc testujesz większą całość - no to test integracyjny. Ale faktycznie na froncie to jest śliskie z tym czy test jest jednostkowy czy integracyjny.
@Pasterz30: Zgadzam się ze wszystkim co napisałeś, ale jednak czasami tego test-id trzeba dodać, bo po prostu nie masz innego wyboru. Zwłaszcza jeżeli w twoim korpo mają wywalone na accessibility XD
@Pasterz30: to czego używac? Mam np checkboxa który po kliknięciu dodaje input do forma (albo ukrywa po odkliknięciu) jak bys to przetestował bez data-testId na inpucie ? zakladając że takich elementów mam kilka i ciężko zgadnąc ID inputa
2. Nie uzywaj dataTestId - to dodaje smieciowy kod i wymusza implementacje - testy powinny dzialac praktycznie niezaleznie od implementacji ficzera, liczy sie efekt
@Nighthuntero: gosciu ale rozmawiamy o React Testing Library i unit testach a nie e2e @mirasKo-Kalwario wszystko jest do zrobienia tylko pokaz przyklad kodu bo moze to nie kwestia testu tylko Twojego kodu ktory nie jest optymalny. Ciezko gdybac bez przykladu
@Pasterz30: nie ma kodu, wymyslam przykład zeby zrozumieć bo dla mnie testId to pójscie na łatwizne która oszczędza czas. Wiadomo najlepiej testować PoV usera i próbować robić interakcje z elementami tak jak robi to user czyli szukac inputów po name, role, label itd ale jakos łatwiej mi zrobic po testId i sprawdzic czy element ma odpowiednie role, name, aria itd.
Może to i antypattern ale czy taki bardzo szkodliwy? Siedze
@mirasKo-Kalwario czy jest okej to jest kwestia do dluzszej dyskusji, napewno w unitach to nie jest okej (mozesz o tym poczytac nawet w ich dokumentacji) natomiast to ze wydaje Ci sie ze jest szybciej to jest miecz obosieczny bo wystarczy ze zmienisz lekko implementacje i test Ci wywali i ttzeba poprawiac i test i dodawac datatestid. Jezeli nie jestes w stanie inaczej tego zrobic to znaczy ze nie tyle test jest
#programista15k #programowanie #frontend #react #vuejs #angular
1. Nie testuj styli, jakis wizualnych aspektow - od tego sa visual testy
2. Nie uzywaj dataTestId - to dodaje smieciowy kod i wymusza implementacje - testy powinny dzialac praktycznie niezaleznie od implementacji ficzera, liczy sie efekt
3. Nie sprawdzaj czegos co jest juz testowane gdzie indziej - jezeli Twoj komponent renderuje inny komponent ktory ma
@Pasterz30: to czego używac? Mam np checkboxa który po kliknięciu dodaje input do forma (albo ukrywa po odkliknięciu) jak bys to przetestował bez data-testId na inpucie ? zakladając że takich elementów mam kilka i ciężko zgadnąc ID inputa
@Pasterz30: @AntyKuc @mirasKo-Kalwario
P---------e, właśnie jak najbardziej używa się testID, szczególnie jak masz wiele podobnych pół i i18n/localization do pokrycia
https://playwright.dev/docs/locators#locate-by-test-id
źródło: 1000023503
Pobierz@mirasKo-Kalwario wszystko jest do zrobienia tylko pokaz przyklad kodu bo moze to nie kwestia testu tylko Twojego kodu ktory nie jest optymalny. Ciezko gdybac bez przykladu
Może to i antypattern ale czy taki bardzo szkodliwy? Siedze