/* * 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]); }