16.1.2023

Cypress Sessions

Cypress Sessions sind eine Möglichkeit, um den Zustand von Tests zwischen mehreren Sitzungen zu speichern und wiederherzustellen. Dies kann nützlich sein, wenn Tests ausführt werden müssen, die sich über mehrere Seitenläufe erstrecken, oder wenn man den Zustand des Browsers zwischen den Tests aufrechterhalten möchten.

Cypress bietet mehrere Möglichkeiten, um Sessions zu verwalten. Eine davon ist die Verwendung der Cypress-Eigenschaft "cy.clock()", die es ermöglicht, die Uhrzeit des Browsers zu manipulieren. Mit "cy.clock()" kann die Uhrzeit zurückgesetzt werden, um einen bestimmten Zeitpunkt festzulegen, oder um eine bestimmte Anzahl von Millisekunden erhöhen oder verringern. Dies kann nützlich sein, um Tests durchzuführen, die von der aktuellen Uhrzeit abhängig sind, oder um die Auswirkungen von Zeitverzögerungen zu simulieren.

Eine andere Möglichkeit, Cypress Sessions zu verwalten, ist die Verwendung der Cypress-Funktion "cy.tick()". Mit "cy.tick()" ist es möglich das Ablaufdatum von Cookies und Local Storage-Einträgen zu simulieren. Cookies und Local Storage-Einträge können sowohl vorverlegt als auch verlängert werden. Dies kann nützlich sein, um Tests durchzuführen, die von Cookies oder Local Storage-Einträgen abhängig sind, oder um die Auswirkungen von Ablaufzeiten zu simulieren.

Ein weiterer Weg Cypress Sessions zu verwalten ist das Speichern des Zustand des Browsers mittels bzw. des localStorage. das ermöglicht es, den Inhalt von localStorage zwischen Tests zu speichern und wiederherzustellen.

Es ist wichtig zu beachten, dass die Verwendung von Cypress Sessions erfordert, dass die Tests entsprechend strukturiert sind. Außerdem sollten man darauf achten, dass jeder Test eine saubere Umgebung hat, indem man vor jedem Test den Zustand des Browsers auf den Ausgangszustand zurücksetzt.

const login = (sessionName: string) => {
        cy.session(sessionName, () => {
            cy.createUser();
            sessionStorage.setItem('DIALOG_CLOSED', 'true');
        });
    };

describe('Cool Feature', () => {

   beforeEach(() => {
       login('adminUser');
   });
   // Tests...
});
Dennis

Softwareentwickler

Gitlab
Zur Übersicht

Standort Hannover

newcubator GmbH
Bödekerstraße 22
30161 Hannover

Standort Dortmund

newcubator GmbH
Westenhellweg 85-89
44137 Dortmund