{"id":10709,"date":"2021-07-12T13:14:20","date_gmt":"2021-07-12T11:14:20","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=10709"},"modified":"2023-03-29T12:11:59","modified_gmt":"2023-03-29T10:11:59","slug":"cypress-dlaczego-warto-zainteresowac-sie-tym-frameworkiem","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/cypress-dlaczego-warto-zainteresowac-sie-tym-frameworkiem\/","title":{"rendered":"Cypress \u2013 dlaczego warto zainteresowa\u0107 si\u0119 tym frameworkiem?"},"content":{"rendered":"\n<p>Cypress jest narz\u0119dziem wykorzystywanym <strong>do automatyzacji test\u00f3w<\/strong>. Pozwala automatyzowa\u0107 testy interfejsu u\u017cytkownika, umo\u017cliwia automatyzowanie test\u00f3w integracyjnych, a tak\u017ce \u0142\u0105czy oba podej\u015bcia np. tworz\u0105c dane testowe poprzez API i sprawdzaj\u0105c, czy poprawne dane wy\u015bwietlaj\u0105 si\u0119 u\u017cytkownikowi na interfejsie graficznym.<\/p>\n\n\n\n<p>Od jakiego\u015b czasu coraz cz\u0119\u015bciej mo\u017cna spotka\u0107 Cypressa w\u015br\u00f3d narz\u0119dzi wymaganych przez pracodawc\u00f3w w og\u0142oszeniach o prac\u0119. Wynika to z faktu, \u017ce wi\u0119cej zespo\u0142\u00f3w i firm nie tylko przygl\u0105da si\u0119 temu narz\u0119dziu, ale tak\u017ce korzysta z niego na co dzie\u0144, dzi\u0119ki czemu jego popularno\u015b\u0107 ro\u015bnie bardzo szybko.<\/p>\n\n\n\n<p>W dzisiejszym wpisie poka\u017c\u0119 Ci, <strong>dlaczego warto nim si\u0119 zainteresowa\u0107<\/strong>. Opowiem o jego <strong>zaletach i wadach<\/strong>, a tak\u017ce przedstawi\u0119, <strong>jak wygl\u0105da przyk\u0142adowy test<\/strong>. Po przeczytaniu poni\u017cszego artyku\u0142u b\u0119dziesz mia\u0142 wi\u0119ksze rozeznanie, czy to narz\u0119dzie mo\u017ce si\u0119 u Ciebie sprawdzi\u0107 i mam nadziej\u0119, zach\u0119ci Ci\u0119 do jego wypr\u00f3bowania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Jak dzia\u0142a Cypress?<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-1-8.png\"><img decoding=\"async\" width=\"1024\" height=\"424\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-1-8-1024x424.png\" alt=\"Jak dzia\u0142a Cypress?\" class=\"wp-image-16557\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-1-8-1024x424.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-1-8-300x124.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-1-8-768x318.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-1-8.png 1426w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc. 1 <a href=\"https:\/\/www.cypress.io\/\" rel=\"nofollow\" >Jak dzia\u0142a Cypress?<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>Tw\u00f3rcy narz\u0119dzia wyszli z za\u0142o\u017cenia, \u017ce Cypress ma by\u0107 frameworkiem zawieraj\u0105cym wszystkie komponenty potrzebne do sprawnego pisania test\u00f3w automatycznych. Zamiast instalacji kilku r\u00f3\u017cnych bibliotek, tak ja w przypadku <a href=\"https:\/\/sii.pl\/blog\/selenium-ide-czyli-jak-zarobic-wiecej-robiac-mniej\/?category=testowanie&amp;tag=selenium-ide,testng\">Selenium<\/a>, Cypress oferuje rozwi\u0105zanie, kt\u00f3re od zainstalowania jest w pe\u0142ni funkcjonalne i nie wymaga dodatkowych komponent\u00f3w.<\/p>\n\n\n\n<p>Oczywi\u015bcie istnieje mo\u017cliwo\u015b\u0107 rozszerzania Cypressa np. poprzez u\u017cycie r\u00f3\u017cnego rodzaju plugin\u00f3w, kt\u00f3re pozwalaj\u0105 na realizacj\u0119 dodatkowych zada\u0144 m.in. dokonywanie podczas test\u00f3w wizualnej regresji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rosn\u0105ca popularno\u015b\u0107 i rozw\u00f3j narz\u0119dzia<\/strong><\/h2>\n\n\n\n<p>Wa\u017cnym czynnikiem przy doborze nowego narz\u0119dzia do projektu jest sprawdzenie, czy istniej\u0105 organizacje, kt\u00f3re obecnie korzystaj\u0105 z tego narz\u0119dzia komercyjnie. Jest to kluczowy aspekt zw\u0142aszcza w kwestii nowych narz\u0119dzi, dlatego wymaga weryfikacji. Im wi\u0119cej podmiot\u00f3w korzysta z danego narz\u0119dzia, tym jego rozw\u00f3j okazuje si\u0119 bardziej stabilny.<\/p>\n\n\n\n<p>Lista firm, kt\u00f3re korzystaj\u0105 z Cypressa w spos\u00f3b komercyjny,<strong> stale powi\u0119ksza si\u0119<\/strong>. Na poni\u017cszej grafice znajduje si\u0119 kilka z nich.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-2-7.png\"><img decoding=\"async\" width=\"1024\" height=\"250\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-2-7-1024x250.png\" alt=\"Kto korzysta z Cypressa? \" class=\"wp-image-16559\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-2-7-1024x250.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-2-7-300x73.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-2-7-768x188.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-2-7-1536x376.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-2-7.png 1542w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc. 2 <a href=\"https:\/\/www.cypress.io\/\" rel=\"nofollow\" >Kto korzysta z Cypressa?<\/a>&nbsp;<\/figcaption><\/figure><\/div>\n\n\n\n<p>Informacje pochodz\u0105ce z GitHuba pozwalaj\u0105 dostrzec, \u017ce wok\u00f3\u0142 Cypressa gromadzi si\u0119 bardzo <strong>liczna i aktywna spo\u0142eczno\u015b\u0107.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-3-7.png\"><img decoding=\"async\" width=\"1024\" height=\"451\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-3-7-1024x451.png\" alt=\"Rosn\u0105ca spo\u0142eczno\u015b\u0107 Cypressa \" class=\"wp-image-16561\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-3-7-1024x451.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-3-7-300x132.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-3-7-768x338.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-3-7-370x162.png 370w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-3-7.png 1405w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc. 3 <a href=\"https:\/\/www.crunchbase.com\/organization\/cypress-io\" rel=\"nofollow\" >Rosn\u0105ca spo\u0142eczno\u015b\u0107 Cypressa<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>Kolejnym wa\u017cnym aspektem, kt\u00f3ry decyduje, czy dane narz\u0119dzie warto bra\u0107 pod uwag\u0119, jest jego <strong>rozw\u00f3j komercyjny<\/strong>. Pod koniec 2020 roku Cypress otrzyma\u0142 finansowanie w wysoko\u015bci 40 milion\u00f3w dolar\u00f3w. Wybieraj\u0105c narz\u0119dzie, zw\u0142aszcza typu open source, warto zwr\u00f3ci\u0107 uwag\u0119 na to, czy narz\u0119dzie jest dost\u0119pne w poszerzonej (p\u0142atnej) wersji oraz czy posiada finansowanie. Dlaczego to jest tak wa\u017cne? Rozw\u00f3j narz\u0119dzi jest bardzo kosztowny, a brak finansowania z funduszy b\u0105d\u017a od klient\u00f3w uniemo\u017cliwi jego rozw\u00f3j i utrzymanie. Oczywi\u015bcie nasze prognozy nie musz\u0105 si\u0119 zawsze sprawdzi\u0107. Warto jednak zdawa\u0107 sobie spraw\u0119 z potencjalnego zagro\u017cenia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Jakie przegl\u0105darki s\u0105 wspierane?<\/strong><\/h2>\n\n\n\n<p>Od pocz\u0105tku dzia\u0142ania, Cypress oferowa\u0142 wsparcie tylko i wy\u0142\u0105cznie dla Chrome&#8217;a. Z czasem jednak, zacz\u0105\u0142 wspiera\u0107 r\u00f3wnie\u017c inne popularne przegl\u0105darki, w tym Firefoxa, co jest najwa\u017cniejsz\u0105 zmian\u0105. Dzi\u0119ki temu, \u017ce Cypress pokrywa Firefoxa, Chrome&#8217;a oraz Edge&#8217;a <strong>mo\u017cemy automatyzowa\u0107 testy dla oko\u0142o 84% u\u017cytkownik\u00f3w w Polsce<\/strong>. Odsetek pokrycia rynku mo\u017ce si\u0119 r\u00f3\u017cni\u0107 pomi\u0119dzy krajami, jednak warto\u015bci oscyluj\u0105 w okolicy 85% i obejmuje r\u00f3wnie\u017c Electrona, Brave\u2019a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Zalety Cypressa<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Jasna dokumentacja i aktywna spo\u0142eczno\u015b\u0107<\/strong><\/h3>\n\n\n\n<p>Wa\u017cnym czynnikiem, na kt\u00f3ry warto zwr\u00f3ci\u0107 uwag\u0119 jest to, \u017ce Cypress ma bardzo jasno opisan\u0105 dokumentacj\u0119 u\u017cycia tego narz\u0119dzia. Du\u017ca liczba przyk\u0142ad\u00f3w, kt\u00f3re pokrywaj\u0105 realne, komercyjne sytuacje, pomagaj\u0105 szybciej wdro\u017cy\u0107 si\u0119 i zrozumie\u0107, jak korzysta\u0107 z narz\u0119dzia. Dodatkowo spo\u0142eczno\u015b\u0107 Cypressa jest aktywna, czego efektem jest m.in. stworzenie do\u015b\u0107 zaawansowanego projektu&nbsp;do nauki automatyzacji, kt\u00f3ry znajduje si\u0119 na <a href=\"https:\/\/github.com\/cypress-io\/cypress-realworld-app\" rel=\"nofollow\" >Githubie<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Przyja\u017aniejsza obs\u0142uga Wait\u00f3w<\/strong><\/h3>\n\n\n\n<p>Cypress posiada mechanizm, obs\u0142uguj\u0105cy dynamiczne czekanie (waity) na elementy, akcje znajduj\u0105ce si\u0119 na stronie, kt\u00f3r\u0105 testujemy. W wi\u0119kszo\u015bci sytuacji jest to mechanizm, kt\u00f3ry z sukcesem spe\u0142nia swoj\u0105 rol\u0119. Dost\u0119pne s\u0105 r\u00f3wnie\u017c metody, kt\u00f3re pozwalaj\u0105 nam wskaza\u0107 okre\u015blone warunki, gdy z jakiego\u015b powodu potrzebujemy poczeka\u0107 na element lub akcj\u0119.<\/p>\n\n\n\n<p>Istnieje mo\u017cliwo\u015b\u0107 ustawienia globalnego maksymalnego czasu oczekiwania na okre\u015blone elementy, domy\u015blnie s\u0105 to 4 sekundy. Nie b\u0119dzie to czekanie&nbsp;\u201ena sztywno\u201d, ale czekanie dynamiczne, w zale\u017cno\u015bci od tego, jak strona b\u0119dzie si\u0119 \u0142adowa\u0107. Poza domy\u015blnym waitem mamy mo\u017cliwo\u015b\u0107 na poczekanie np. na to jak okre\u015blone zapytanie si\u0119 zako\u0144czy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Obs\u0142uga zapyta\u0144 HTTP<\/strong><\/h3>\n\n\n\n<p>Cypress pozwala na obs\u0142ug\u0119 zapyta\u0144 HTTP podczas naszej pracy. Funkcjonalno\u015bci pozwalaj\u0105 na modyfikacj\u0119 zapytania, pobieranie danych, dodawanie mock\u00f3w i stub\u00f3w, a nawet na op\u00f3\u017anianie okre\u015blonych odpowiedzi. Jest to bardzo przydatne, gdy\u017c podczas wykonywania test\u00f3w, mo\u017cemy&nbsp;korzysta\u0107 z API, strony czy np. generowa\u0107 potrzebne dane testowe z API, a nie przy pomocy UI.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Raporty z test\u00f3w \u2013 zrzuty ekranu \/ Video \/ Logi<\/strong><\/h3>\n\n\n\n<p>Cypress dostarcza kilku mechanizm\u00f3w, pozwalaj\u0105cych na wyb\u00f3r sposobu logowania akcji, podczas uruchamiania naszych test\u00f3w. Mamy mo\u017cliwo\u015b\u0107 dodawania zrzut\u00f3w ekran\u00f3w z test\u00f3w. Co wi\u0119cej, w uruchamianym te\u015bcie zrzut ekranu zawiera informacje na temat wykonanych akcji do momentu jego utworzenia.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-4-5.png\"><img decoding=\"async\" width=\"1024\" height=\"398\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-4-5-1024x398.png\" alt=\"Raporty z test\u00f3w Cypress\" class=\"wp-image-16563\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-4-5-1024x398.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-4-5-300x117.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-4-5-768x299.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-4-5-1536x598.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-4-5.png 1910w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc. 4 Raporty z test\u00f3w Cypress<\/figcaption><\/figure><\/div>\n\n\n\n<p>Poza zrzutem ekranu, kt\u00f3ry zawiera wi\u0119cej informacji ni\u017c standardowy zrzut ekranu np. z Selenium, istnieje mo\u017cliwo\u015b\u0107 nagrywania wideo z test\u00f3w. Cypress oferuje sw\u00f3j Cypress Dashboard, w kt\u00f3rym logi i rezultaty z test\u00f3w mog\u0105 by\u0107 prezentowane. Jest to <strong>funkcjonalno\u015b\u0107 dost\u0119pna w komercyjnej cz\u0119\u015bci Cypressa<\/strong>. Przy darmowym koncie dost\u0119p do dashboardu jest w wersji okrojonej (obowi\u0105zuj\u0105 limity na u\u017cytkowanie narz\u0119dzia).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wady Cypressa<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Utrudnienia z Iframe&#8217;ami<\/strong><\/h3>\n\n\n\n<p>Praca z iframe\u2019ami rzeczywi\u015bcie jest utrudniona. Cypress ma znacznie wi\u0119cej problem\u00f3w ni\u017c Selenium. Mamy mo\u017cliwo\u015b\u0107 skorzystania z dodatkowych bibliotek, kt\u00f3re pomagaj\u0105 w pracy z iframe\u2019mi np. &#8222;cypress-iframe&#8221;, jednak nie zawsze te rozwi\u0105zania dzia\u0142aj\u0105 prawid\u0142owo.<\/p>\n\n\n\n<p>Sam automatyzowa\u0142em&nbsp;jeden z element\u00f3w w WordPressie poprzez Cypressa i Selenium. W Cypressie by\u0142o to znacznie bardziej skomplikowane, jednak potrafi\u0142em znale\u017a\u0107 rozwi\u0105zanie. Sam <a href=\"https:\/\/github.com\/cypress-io\/cypress\/issues\/136\" rel=\"nofollow\" >problem z iframemami poruszony jest w tym w\u0105tku na githubie.<\/a><\/p>\n\n\n\n<p>Zach\u0119cam do \u015bledzenia tego forum, je\u017celi sami automatyzujecie aplikacj\u0119, kt\u00f3ra korzysta z iframe&#8217;a. Problem nie jest oficjalnie rozwi\u0105zany, a w tym w\u0105tku wiele os\u00f3b dzieli si\u0119 swoimi sposobami na poradzenie sobie z t\u0105 kontrolk\u0105.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wsparcie tylko dla JS\/TS<\/strong><\/h3>\n\n\n\n<p>Nie dla ka\u017cdego jest to wada. Ja umieszczam to jako wad\u0119 dlatego, \u017ce Selenium WebDriver&nbsp;wspiera praktycznie wszystkie j\u0119zyki programowania. Inn\u0105 rzecz\u0105 wart\u0105 wspomnienia jest to, \u017ce cz\u0119sto JS jest trudniejszym j\u0119zykiem programowania dla os\u00f3b pocz\u0105tkuj\u0105cych. Z innej strony to, \u017ce JS\/TS jest u\u017cywany mo\u017ce r\u00f3wnie\u017c by\u0107 odebrane jako zaleta, a to dlatego, \u017ce wi\u0119kszo\u015b\u0107 full stack developer\u00f3w korzysta z tych j\u0119zyk\u00f3w programowania na co dzie\u0144 i skorzystanie z ich pomocy b\u0119dzie jak najbardziej mo\u017cliwe. Innym trendem jest to, \u017ce to w\u0142a\u015bnie programi\u015bci pisz\u0105 testy w Cypressie z powodu znajomo\u015bci w\u0142a\u015bnie JS lub TS. Reasumuj\u0105c, dla jednych mo\u017ce by\u0107 to wada, a dla jeszcze innych zaleta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Instalacja Cypressa<\/strong><\/h2>\n\n\n\n<p>Do instalacji Cypressa potrzebujemy npm lub yarna i node js. Podczas tworzenia tego artyku\u0142u mia\u0142em nast\u0119puj\u0105c\u0105 wersj\u0119:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"122\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-5-3-1024x122.png\" alt=\"\" class=\"wp-image-16565\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-5-3-1024x122.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-5-3-300x36.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-5-3-768x92.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-5-3.png 1046w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Zawsze zach\u0119cam w miar\u0119 mo\u017cliwo\u015bci do korzystania z najnowszej, aktualnie dost\u0119pnej wersji.<\/p>\n\n\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-10724\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2021\/06\/aZM3Vv1CGY.gif\" alt=\"\" width=\"1920\" height=\"1030\"><\/p>\n<pre style=\"text-align: center;\">npm install cypress --save-dev<\/pre>\n<p>Po zainstalowaniu Cypressa przechodzimy do folderu \u201eintegration\\examples\u201d, kt\u00f3ry zawiera kilkana\u015bcie przyk\u0142ad\u00f3w, prezentuj\u0105cych mo\u017cliwo\u015bci korzystania z Cypressa.<\/p>\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-6-4.png\"><img decoding=\"async\" width=\"372\" height=\"478\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-6-4.png\" alt=\"Mo\u017cliwo\u015bci korzystania z Cypressa\" class=\"wp-image-16567\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-6-4.png 372w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-6-4-233x300.png 233w\" sizes=\"(max-width: 372px) 100vw, 372px\" \/><\/a><figcaption>Ryc. 6 Mo\u017cliwo\u015bci korzystania z Cypressa<\/figcaption><\/figure><\/div>\n\n\n\n<p>W tym miejscu znajduj\u0105 si\u0119 przyk\u0142ady, kt\u00f3re pokrywaj\u0105 wi\u0119kszo\u015b\u0107 standardowych, codziennych akcji, kt\u00f3re potrzebujemy obs\u0142u\u017cy\u0107 podczas automatyzacji test\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Uruchamianie Cypressa<\/strong><\/h2>\n\n\n\n<p>\u017beby uruchomi\u0107 Cypressa, korzystamy z nast\u0119puj\u0105cej komendy: .\/node_modules\/.bin\/cypress open<\/p>\n\n\n\n<p>Po tym kroku, uka\u017ce si\u0119 nam okno pozwalaj\u0105ce r\u00f3wnie\u017c na r\u0119czne uruchamianie test\u00f3w. Naturalnie, istnieje r\u00f3wnie\u017c mo\u017cliwo\u015b\u0107 uruchomienia test\u00f3w wprost z konsoli np. w Jenkinsie, czy podczas codziennej pracy, gdy nie chcemy korzysta\u0107 z okienkowego sposobu uruchamiania test\u00f3w.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-7-1.png\"><img decoding=\"async\" width=\"965\" height=\"637\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-7-1.png\" alt=\"Uruchamianie Cypressa\" class=\"wp-image-16569\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-7-1.png 965w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-7-1-300x198.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-7-1-768x507.png 768w\" sizes=\"(max-width: 965px) 100vw, 965px\" \/><\/a><figcaption>Ryc. 7 Uruchamianie Cypressa<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-8-1.png\"><img decoding=\"async\" width=\"1024\" height=\"548\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-8-1-1024x548.png\" alt=\"Cypress first demo\" class=\"wp-image-16571\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-8-1-1024x548.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-8-1-300x160.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-8-1-768x411.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-8-1-1536x822.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-8-1.png 1916w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc. 8 Cypress first demo<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pierwszy test<\/strong><\/h2>\n\n\n\n<p>Zaczn\u0119 od om\u00f3wienia dosy\u0107 prostego przyk\u0142adu, kt\u00f3ry znajduje si\u0119 w pliku actions.spec.js.&nbsp;Zawiera on test,&nbsp;kt\u00f3ry wype\u0142nia formularz i go wysy\u0142a. Na ko\u0144cu test sprawdza, czy komunikat, kt\u00f3rego si\u0119 spodziewali\u015bmy, pojawi\u0142 si\u0119.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-9-1.png\"><img decoding=\"async\" width=\"1024\" height=\"602\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-9-1-1024x602.png\" alt=\"fragment kodu\" class=\"wp-image-16573\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-9-1-1024x602.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-9-1-300x176.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-9-1-768x452.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-9-1.png 1112w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Na potrzeby artyku\u0142u, usun\u0105\u0142em pozosta\u0142e przyk\u0142ady z tego pliku, \u017ceby m\u00f3c na jednym zrzucie ekranu, zaprezentowa\u0107 ca\u0142y dzia\u0142aj\u0105cy test.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Plik zaczyna si\u0119 od&nbsp; \/\/\/&nbsp;&lt;reference&nbsp;types=\u201dcypress\u201d&nbsp;\/&gt; \u2013 pozwala uzyskiwa\u0107 podpowiedzi w kodzie w trakcie jego pisania.<\/li><li>Test w Cypressie zaczyna si\u0119 od it(\u2018\u2019)&nbsp;\u2013 jest to notacja, kt\u00f3ra wynika z tego, \u017ce Cypress pod spodem korzysta z test runnera \u2013 Mocha. S\u0142owo \u201eonly\u201d dodawane jest przez Visual Studio Code, by uruchamia\u0107 jeden test w danym momencie.<\/li><li>Cy.get(\u2018.action-form\u2019) \u2013 umo\u017cliwia obs\u0142ug\u0119 elementu na podstawie selectora, kt\u00f3ry przekazywany jest jako parametr w metodzie.<\/li><li>Submit() \u2013 pozwala wys\u0142a\u0107 okre\u015blony formularz.<\/li><li>.find() \u2013 pozwala na wyszukanie konkretnego elementu z listy dost\u0119pnych element\u00f3w.&nbsp;Opr\u00f3cz tego, je\u017celi nasza strona korzysta z Shadom DOMa, to mamy mo\u017cliwo\u015b\u0107 wyszukania takich element\u00f3w.<\/li><li>.type() \u2013 pozwala wpisywa\u0107 okre\u015blony ci\u0105g znak\u00f3w w dany element.<\/li><li>.should() \u2013 s\u0142u\u017cy w tym miejscu jako asercja do testu, kt\u00f3ra pozwala na sprawdzenie czy tekst walidacji w tym miejscu zawiera oczekiwany tekst. Rzecz jasna, poza tego typu asercj\u0105 wyst\u0119puje mo\u017cliwo\u015b\u0107 skorzystania z innych asercji. Cypress ma to dobrze opisane w swojej&nbsp;<a href=\"https:\/\/docs.cypress.io\/guides\/references\/assertions\" target=\"_blank\" rel=\"noreferrer noopener\" rel=\"nofollow\" >dokumentacji<\/a>.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-10-1.png\"><img decoding=\"async\" width=\"1024\" height=\"398\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-10-1-1024x398.png\" alt=\"Przyk\u0142ad testu w Cypress\" class=\"wp-image-16575\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-10-1-1024x398.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-10-1-300x117.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-10-1-768x299.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-10-1-1536x598.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-10-1.png 1910w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc. 9 Przyk\u0142ad testu w Cypress<\/figcaption><\/figure><\/div>\n\n\n\n<p>Po uruchomieniu testu, w lewej cz\u0119\u015bci strony widzimy wszystkie akcje, kt\u00f3re zosta\u0142y wykonywane podczas testu. Jest to przydatna funkcjonalno\u015b\u0107, kt\u00f3ra pozwala sprawdzi\u0107, czy wszystko odbywa\u0142o si\u0119 tak, jak oczekiwali\u015bmy. Je\u017celi test zawiera jak\u0105\u015b asercj\u0119,&nbsp;to informacja wy\u015bwietla si\u0119 na zielono. Gdy do testu wprowadzi\u0142em celowo b\u0142\u0105d w asercji, to komunikat co posz\u0142o nie tak, wy\u015bwietla si\u0119 na czerwono. R\u00f3wnie\u017c w tym miejscu pokazany jest kod, w kt\u00f3rym b\u0142\u0105d wyst\u0105pi\u0142.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-11-1.png\"><img decoding=\"async\" width=\"1024\" height=\"534\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-11-1-1024x534.png\" alt=\"Akcje wykonane podczas test\u00f3w w Cypressie\" class=\"wp-image-16577\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-11-1-1024x534.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-11-1-300x157.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-11-1-768x401.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-11-1-1536x802.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2022\/10\/Ryc.-11-1.png 1876w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc. 10 Akcje wykonane podczas test\u00f3w w Cypressie<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>W dzisiejszym artykule przedstawi\u0142em, czym jest Cypress oraz jakie s\u0105 jego zalety i wady. Zach\u0119cam do sprawdzenia tego narz\u0119dzia osobi\u015bcie.<\/p>\n\n\n\n<p>Je\u017celi my\u015blisz o u\u017cyciu Cypressa komercyjnie, zwr\u00f3\u0107 uwag\u0119 na wady, charakterystyczne dla frameworku, szczeg\u00f3lnie je\u017celi masz aplikacje, kt\u00f3ra korzysta w du\u017cej ilo\u015bci z kontrolek typu iframe. Warto sprawdzi\u0107, czy Cypress poradzi sobie w tej sytuacji.<\/p>\n\n\n\n<p>Je\u017celi natomiast uwa\u017casz, \u017ce nie masz potrzeby wprowadzenia nowego narz\u0119dzia do projektu, to zastan\u00f3w si\u0119, czy nie warto pomy\u015ble\u0107 o nauce tego narz\u0119dzia, w celu poszerzenia swoich umiej\u0119tno\u015bci.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Je\u015bli chcesz wiedzie\u0107, dlaczego rozw\u00f3j i nauka nowych j\u0119zyk\u00f3w oprogramowania przydaj\u0105 si\u0119 na stanowisku Test Architecta oraz co Micha\u0142 ceni w pracy, obejrzyj koniecznie jego nagranie:<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Automatyzacja test\u00f3w oczami Test Architecta #PowerPeopleAtWork\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/2l5uI2sLgqQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;10709&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;21&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;4.6&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;4.6\\\/5 ( votes: 21)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Cypress \u2013 dlaczego warto zainteresowa\u0107 si\u0119 tym frameworkiem?&quot;,&quot;width&quot;:&quot;127.9&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 127.9px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            4.6\/5 ( votes: 21)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Cypress jest narz\u0119dziem wykorzystywanym do automatyzacji test\u00f3w. Pozwala automatyzowa\u0107 testy interfejsu u\u017cytkownika, umo\u017cliwia automatyzowanie test\u00f3w integracyjnych, a tak\u017ce \u0142\u0105czy oba &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/cypress-dlaczego-warto-zainteresowac-sie-tym-frameworkiem\/\">Continued<\/a><\/p>\n","protected":false},"author":215,"featured_media":11025,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":7,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1317],"tags":[1554,1512,1051],"class_list":["post-10709","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-zalety-i-wady","tag-poradnik","tag-cypress"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2021\/06\/cypress.png","category_names":["Testowanie"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/10709"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/215"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=10709"}],"version-history":[{"count":3,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/10709\/revisions"}],"predecessor-version":[{"id":20641,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/10709\/revisions\/20641"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/11025"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=10709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=10709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=10709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}