Cypress dodatki do frameworka cz. 2

Cypress IO

Loading

Cypress dodatki do frameworka cz. 2 – to wpis pokazujący w jaki sposób rozszerzyć możliwości Cypressa. Jeżeli jesteś zainteresowany innymi wpisami dotyczącymi Cypressa, zapraszamy do odpowiedniego działu.

Wprowadzenie

Tworząc testy automatyczne z wykorzystaniem Cypressa może spotkać się z sytuacjami, że będziemy potrzebowali dodatkowego wsparcia by napisać nasze testy. Czasami będzie to spowodowane faktem niemożności obsłużenia w inny sposób danego przypadku, czasami też po prostu skorzystanie z pluginów będzie dla nas łatwiejsze.

Jako Ambasador Cypressa mam na celu rozpowszechnianie wiedzy o tym narzędziu, promowanie wartości jakie nam przyświecają.

Instalacja

Elementy będziemy instalować poprzez npma, także zgodnie z dobrymi praktykami czytelnik winien mieć stworzony projekt za pośrednictwem npma (lub yarn).

cypress-cucumber-preprocessor

Jak nazwa wskazuje, dla fanów cucumbera – opcja do wykorzsytania z Cypressem.

npm install --save-dev cypress-cucumber-preprocessor

W pliku plugin dodajemy

const cucumber = require('cypress-cucumber-preprocessor').default

module.exports = (on, config) => {
  on('file:preprocessor', cucumber())
}

Cypress-allure-plugin

Kolejny po mochawesome reporterze plugin pozwalający na raportowanie w Cypressie.

yarn add -D @shelex/cypress-allure-plugin
npm i -D @shelex/cypress-allure-plugin

W pliku support dodajemy (do v. 9.7.0):

const allureWriter = require('@shelex/cypress-allure-plugin/writer');
// import allureWriter from "@shelex/cypress-allure-plugin/writer";

module.exports = (on, config) => {
    allureWriter(on, config);
    return config;
};

Lub w wersji 10+

const allureWriter = require('@shelex/cypress-allure-plugin/writer');
// import allureWriter from "@shelex/cypress-allure-plugin/writer";

module.exports = defineConfig({
    e2e: {
        setupNodeEvents(on, config) {
            allureWriter(on, config);
            return config;
        }
    }
});
Cypress-delete-downloads-folder

Narzędzie dzięki któremu możemy usuwać foldery – przydatne gdy testujemy pobieranie elementów – by nie zaśmiecać określonego miejsca.

npm i -D cypress-delete-downloads-folder

Wystarczy dodać require w postaci:

require('cypress-delete-downloads-folder').addCustomCommand();
Cypress-slack-reporter

Przedmiotowy dodatek to pomoc dla teamów korzystających ze Slacka chcących otrzymywać powiadomienia o procesie testów automatycznych.

npm install cypress-slack-reporter --save-dev
yarn add cypress-slack-reporter --dev

Wymagane stworzenie webhooków, co opisane jest na stronie npmjs.

Cypress ESLint Plugin

Ten dodatek służy dla osóch chcących dokonywać statycznej analizy kodu.

npm install eslint-plugin-cypress --save-dev
yarn add eslint-plugin-cypress --dev

Następnie dodaj plik .eslintrc.json

{
  "plugins": [
  "cypress"
 ]
}

Trzeba też dodać reguły

{
  "rules": {
    "cypress/no-assigning-return-values": "error",
    "cypress/no-unnecessary-waiting": "error",
    "cypress/assertion-before-screenshot": "warn",
    "cypress/no-force": "warn",
    "cypress/no-async-tests": "error",
    "cypress/no-pause": "error"
  }
}
Cypress-web-vitals

Dodawanie plików w naszych testach? Z Cypress file upload to nic trudnego.

$ yarn add -D cypress-web-vitals cypress-real-events
$ npm install --save-dev cypress-web-vitals cypress-real-events

Następnie w pliku commands.js.

import "cypress-web-vitals";
Cypress-gmail-tester

Chcesz korzystać z gmaila przy testach z CY – sprawdź ten dodatek.

npm install --save cypress-gmail-tester
Cypress-plugin-playwright

UWAGA – to tylko POC rozwiązania. W jakimś zakresie pozwala na uruchomienie testów Playwright w środowisku CY. Pamiętajcie o ograniczeniach – raczej to przetestowania. npm i cypress-plugin-playwright

npm install --save-dev cypress-cucumber-preprocessor

Dodatkowo w Cypress config js

// cypress.config.js


import {defineConfig} from 'cypress';
import playwrightPlugin from "cypress-plugin-playwright/playwrightPlugin.js";

export default defineConfig({
    // ...
    e2e: {
        setupNodeEvents(on, config) {
            // ...
            playwrightPlugin(on, config);
            // ...
        },
        // ...
    },
    // ...
});
Cypress-filters

Bardzo przydatny dodatek, jeżeli chcemy w inny sposób zarządzać i uruchamiać nasze testy automatyczne.

npm i cypress-filters --save-dev

Następnie w pliku e2e.js.

const CypressFilters = require('cypress-filters');
new CypressFilters().register();

Następnie dodanie tagu do testów

it('My super cool test @smoke @usability', () => {
    // ...
    // ... 
})

I uruchamianie testów

# run with 1 tag
cypress run --env filters="@smoke"

# run with 2 tags (OR condition)
cypress run --env filters="@smoke @usability"

# run with 2 tags (AND condition)
cypress run --env filters="@smoke+@usability"

# run with 3 tags (AND + OR condition)
cypress run --env filters="@smoke+@usability @regression"

# run with 4 tags (2x AND condition)
cypress run --env filters="@smoke+@usability @regression+@functional"
Cypress-testrail

Integracja z jednym z najpopularniejszych narzędzi

npm i cypress-testrail --save-dev

Cały opis znajduje się na stronie npmjs.com lub na oficjalnym githubie.

Podsumowanie

Cypress dodatki do frameworka cz. 2 – 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.