Newer
Older
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import { HttpMethod } from '@alfa-client/tech-shared';
import { Interception, RouteHandler, RouteMatcher } from 'cypress/types/net-stubbing';
import { OrganisationsEinheitE2E } from './organisationseinheit';
enum CypressTasks {
DROP_COLLECTIONS = 'dropCollections',
INIT_ORGANISATIONS_EINHEIT_DATA = 'initOrganisationsEinheitData',
}
enum MongoCollections {
ORGANISATIONS_EINHEIT = 'organisationsEinheit',
AGGREGATION_MAPPING = 'aggregationMapping',
const DOWNLOAD_FOLDER: string = 'cypress/downloads';
export function visitUrl(url: string): void {
cy.visit(url);
}
export function scrollToWindowBottom(): void {
cy.window().scrollTo('bottom');
}
export function intercept(method: string, url: string): Cypress.Chainable<null> {
return cy.intercept(method, url);
}
export function interceptWithResponse(method: HttpMethod, url: RouteMatcher, response: RouteHandler): Cypress.Chainable<null> {
return cy.intercept(method, url, response);
}
export function waitOfInterceptor(interceptor: string): Cypress.Chainable<Interception> {
return cy.wait('@' + interceptor);
}
export function getTestElement(value: string) {
return cy.getTestElement(value);
}
export function getElement(value: string) {
return cy.get(value);
}
export function urlShouldInclude(text: string) {
return cy.url().should('include', text);
}
export function urlShouldEndsWith(route: string): Cypress.Chainable<any> {
return cy.url().should('match', new RegExp(`/${route}$`));
}
//TODO: anders loesen -> bad practice
export function wait(ms: number, reason = ''): void {
cy.wait(ms);
if (reason) {
console.log(`Had to wait ${ms}ms because of: ${reason}`);
}
}
//
export function reload(): void {
cy.reload();
}
export function readFileFromDownloads(fileName: string): Cypress.Chainable<any> {
return cy.readFile(`${DOWNLOAD_FOLDER}/${fileName}`, { timeout: 5000 });
}
export function pressTab(): void {
cy.realPress('Tab');
}
//Config
export function getBaseUrl(): string {
return Cypress.config().baseUrl as string;
}
//Env
export function getCypressEnv(value: string) {
return Cypress.env(value);
}
export function initOrganisationsEinheitenData(data: OrganisationsEinheitE2E[]): void {
cy.task(CypressTasks.DROP_COLLECTIONS, [MongoCollections.ORGANISATIONS_EINHEIT]);
cy.task(CypressTasks.INIT_ORGANISATIONS_EINHEIT_DATA, { collection: MongoCollections.ORGANISATIONS_EINHEIT, data });
}
export function dropCollections() {
cy.task(CypressTasks.DROP_COLLECTIONS, [MongoCollections.ORGANISATIONS_EINHEIT, MongoCollections.AGGREGATION_MAPPING]);