Cypress konfiguracja cypress.json

Cypress IO

Loading

Cypress konfiguracja cypress.json – to krótki wpis pokazujący Wam możliwości przeniesienia pewnych elementów do tego pliku w celu tworzenia globalnych zmian.

Wstęp

Każdy korzystający z Cypressa chce by jego kod był czysty i aby nie trzeba było dodawać podobnych komend. Warto zajrzeć do pliku cypress.json gdzie konfigurujemy nasz projekt testowy by później wykorzystywać te informacje globalnie. Rozważając dwie rzeczy – czy wyrzucić wpis do kosza, czy jednak pozostawić go – nawet jako wskazówkę, uznałem, że warto podzielić się tym co zostało sporządzone wcześniej.

Aktualizacja

Wpis dotyczy projektów w wersji do 9.7.0. W zakresie wersji 10+ zostanie wydany odrębny wpis w tym zakresie. Wiele ze wskazanych elementów będzie można w łatwy i szybki sposób przetransferować do cypress.config.js w Cypressie 10+. Z racji sytuacji, że są jeszcze pewne rzecz które nie są stabilne w wersjach 10+ po początkowym uznaniu, że post nie będzie publikowany, uznałem, że jednak na obecnym etapie warto podzielić się tymi informacjami.

Konfiguracja

Przejdźmy do meritum czyli do konfiguracji tego pliku. Dzięki kilku ustawieniom możemy w łatwy i szybki sposób globalnie korzystać z naszych ustawień i nie martwić się by ustalać coś – per klasa testowa.

I. Adres url

Dzięki wpisaniu w tym miejscu adresu naszej strony, na każdej kolejnej klasie testowej będziemy ją wywoływać poprzez cy.visit(’/’)

{
  "baseUrl" : "https://www.dlatesterow.pl"
}
II. Rozmiar ekranu

Jeżeli chcemy testować na jednym określonym rozmiarze ekranu, możemy wpisać jego rozmiary we wskazanym pliku:

  "viewportWidth": 1920,
  "viewportHeight": 1080,
III. Timeouty

Warto też mieć zapisane różnego rodzaju timeouty, które mogą nam się przydać w trakcie testowania aplikacji. Takie podejście pozwoli nam na unikanie wdrażania wielu sleepów.

  „defaultCommandTimeout”: 20000,
  „execTimeout”: 250000,
  „requestTimeout”:25000,
  „defalutTimeout”: 250000,
  „pageLoadTimeout”: 30000,
IV. Powtarzanie

W ramach testów, możemy mieć konieczność powtórzenia testu – np. aplikacja jest jeszcze niestabilna i wolniej się ładuje, tudzież z innych przyczyn potrzeba jest powtórzyć jakiś przypadek mimo faila. Podajecie tylko komendę i za każdym razem test Wam wykonuje ponownie Wasz przypadek.

"retries": 4,
V. experimentalSessionAndOrigin
  "experimentalSessionAndOrigin": true,

Polecenie to zastąpiło od wersji 9.6.0 polecenie experimentalSessionSupport. Pozwala to np. na wykorzystanie zapisywania sesji logowania by co test się nie logować a wykorzystywać już to że użytkownik jest zalogowany – co skraca proces wykonania testów.

VI. Zapisywanie video

Podczas wykonywania testów – gdy uruchamiasz testy w trybie headlees – możemy zapisywać video gdzie będziemy mieli faila. To pomoże w późniejszym debugu i weryfikacji gdzie i jakie problemy napotkał test.

  "video": true,
  "videosFolder": "cypress/videos",
  "videoUploadOnPasses": false,
VII. Raporty

Gdy zainstalujemy Mochawesome-Reporter i chcemy by nasze raporty tworzyły się po testach, ważne jest by umieścić taki wpis w pliku cypress.json.

  „reporter”: „cypress-mochawesome-reporter”,
  „reporterOptions”: {
    „reportDir”: „cypress/report/”,
    „charts”: true,
    „reportPageTitle”: „Title of our tests project”
  }
}
VIII. Chrome Web Security
"chromeWebSecurity": false/true

Polecenie potrzebne gdy potrzebujemy skorzystać np. z wykorzystywania iframe na stronach i konieczności dostania się tam i wykonania testów.

IX. Nie śledź zmian po zapisie
"watchForFileChanges" : false,

Standardowo przy zapisie klasy testowej którą mamy uruchomioną – test ze zmianami uruchamia się automatycznie. Wpisując taką zmianę, zatrzymujemy taką możliwość.

X. Zapisywanie ScreenShotów

Podczas wykonywania testów – gdy uruchamiasz testy w trybie headlees – możemy zapisywać zdjęcia gdzie będziemy mieli faila. To pomoże w późniejszym debugu i weryfikacji gdzie i jakie problemy napotkał test.

  "screenshotsFolder": "cypress/videos",
  "screenshotOnRunFailure": true,
XI. ShadowDom

Jeżeli mamy styczność z ShadowDom – warto jest dodać wartość do naszego pliku cypress.json.

 "includeShadowDom": true
XII. Usuwanie plików przed testem

Jeżeli mamy konieczność czyszczenia folderów ze zdjęciami, video czy pobranymi plikami wpisz.

 "trashAssetsBeforeRuns": true,
XIII. User Agent

W przypadku gdy potrzebujemy ustawić sobie określonego agenta, możemy zrobić to w ramach pliku cypress.json.

XIV. Ignore test file

Gdy chcemy pomijać jakieś testy w uruchomionym przez nas cyklu, możemy to zdefiniować poprzez dodanie komendy

"ignoreTestFiles":"/Test.js",
XV. Limit redirectów

Zdarzać się może że strona przekierowuje nas i później jest wykonywana seria testów. Jeżeli chcemy mierzyć czy nie występują redirecty, wykorzystaj:

"redirectionLimit": 20,
Jeżeli wpis przypadnie Wam do gusty, w kolejnym wpisie, możemy szerzej opisać zasady działania tego pliku, dodać inne przykłady, by przedstawić Wam to w sposób jeszcze bardziej kompleksowy.

cypress.config.js

Dla szybkiego przedstawienia Wam, jak wygląda to na chwilę obecną, tak można wykorzystać nasze dane z pliku cypress.json w nowych wersjach.

const { defineConfig } = require("cypress");

module.exports = defineConfig({
defaultCommandTimeout: 25000,
execTimeout: 60000,
requestTimeout: 6000,
defalutTimeout: 8000,
pageLoadTimeout: 45000,
viewportWidth: 1920,
viewportHeight: 1080,
retries: 3,

video: true,
videoUploadOnPasses: false,
reporter: "cypress-mochawesome-reporter",

reporterOptions: {
reportDir: "cypress/report/",
charts: true,
reportPageTitle: "dlaTesterow.PL E2E Test",
},

e2e: {
setupNodeEvents(on, config) {
// implement node event listeners here
},
baseUrl: 'https://www.dlatesterow.pl'
},

});

Podsumowanie

Cypress konfiguracja cypress.json to kolejny wpis mający zachęcić Was do instalacji i sprawdzenia narzędzia. Z racji popularyzacji narzędzia i dużego wsparcia które otrzymał Cypress na rozwój, będziemy poszerzać wpisy na ten temat. Wszelkie artykuły związane z Cypress IO znajdziecie w dedykowanym dziale.