Skip to content
Snippets Groups Projects
cypress-helper.ts 3.59 KiB
Newer Older
  • Learn to ignore specific revisions
  • OZGCloud's avatar
    OZGCloud committed
    import { Interception, RouteHandler, RouteMatcher } from 'cypress/types/net-stubbing';
    
    import { GridFsChunkE2E, GridFsFileDataE2E, GridFsFileE2E } from '../model/binary-file';
    
    import { CommandE2E } from '../model/command';
    
    import { VorgangE2E } from '../model/vorgang';
    import { VorgangAttachedItemE2E } from '../model/vorgang-attached-item';
    
    
    OZGCloud's avatar
    OZGCloud committed
    enum CypressTasks {
    
    	DROP_COLLECTION = 'dropCollection',
    	DROP_COLLECTIONS = 'dropCollections',
    	INIT_COMMAND_DATA = 'initCommandData',
    
    	INIT_GRID_FS_FILE_DATA = 'initGridFsFileData',
    	INIT_GRID_FS_CHUNK_DATA = 'initGridFsChunkData',
    
    OZGCloud's avatar
    OZGCloud committed
    	INIT_VORGANG_DATA = 'initVorgangData',
    
    	INIT_VORGANG_ATTACHED_ITEM_DATA = 'initVorgangAttachedItemData'
    
    OZGCloud's avatar
    OZGCloud committed
    enum MongoCollections {
    	COMMAND = 'command',
    
    	FS_FILES = 'fs.files',
    	VORGANG = 'vorgang',
    	VORGANG_ATTACHED_ITEM = 'vorgangAttachedItem'
    
    export function login(userJsonPath: string): void {
    
    	cy.fixture(userJsonPath).then(user => {
    		cy.login(user.name, user.password);
    	})
    }
    
    
    export function visitUrl(url: string): void {
    	cy.visit(url);
    
    export function initCommandData(data: CommandE2E[]): void {
    	cy.task(CypressTasks.INIT_COMMAND_DATA, { collection: MongoCollections.COMMAND, data });
    }
    
    
    export function initGridFsData(data: GridFsFileDataE2E[]) {
    
    	const files: GridFsFileE2E[] = [];
    	let chunks: GridFsChunkE2E[] = [];
    
    	data.forEach(singleData => {
    		files.push(singleData.file);
    		chunks = chunks.concat(singleData.chunks);
    
    
    	initGridFsFileData(files);
    	initGridFsChunkData(chunks);
    
    }
    
    function initGridFsFileData(data: GridFsFileE2E[]) {
    	cy.task(CypressTasks.INIT_GRID_FS_FILE_DATA, { collection: MongoCollections.FS_FILES, data });
    }
    
    function initGridFsChunkData(data: GridFsChunkE2E[]) {
    	cy.task(CypressTasks.INIT_GRID_FS_CHUNK_DATA, { collection: MongoCollections.FS_CHUNKS, data });
    }
    
    
    OZGCloud's avatar
    OZGCloud committed
    export function initVorgangAttachedItemData(data: VorgangAttachedItemE2E[]): void {
    	cy.task(CypressTasks.INIT_VORGANG_ATTACHED_ITEM_DATA, { collection: MongoCollections.VORGANG_ATTACHED_ITEM, data });
    
    OZGCloud's avatar
    OZGCloud committed
    export function initVorgangData(data: VorgangE2E[]): void {
    	cy.task(CypressTasks.INIT_VORGANG_DATA, { collection: MongoCollections.VORGANG, data });
    
    export function initSearchIndexData(vorgaenge: VorgangE2E[]): void {
    	cy.removeAllDocumentsFromSearchIndex();
    
    OZGCloud's avatar
    OZGCloud committed
    	vorgaenge.forEach(vorgang => {
    
    		cy.addVorgangToSearchIndex(vorgang)
    
    export function dropCollections() {
    
    	cy.task(CypressTasks.DROP_COLLECTIONS, [MongoCollections.COMMAND, MongoCollections.VORGANG, MongoCollections.VORGANG_ATTACHED_ITEM, MongoCollections.FS_FILES, MongoCollections.FS_CHUNKS]);
    
    }
    
    export function scrollToWindowBottom(): void {
    	cy.window().scrollTo('bottom');
    }
    
    export function intercept(method: string, url: string): Cypress.Chainable<null> {
    	return cy.intercept(method, url);
    }
    
    
    OZGCloud's avatar
    OZGCloud committed
    export function interceptWithResponse(method, url: RouteMatcher, response: RouteHandler): Cypress.Chainable<null> {
    	return cy.intercept(method, url, response);
    }
    
    
    OZGCloud's avatar
    OZGCloud committed
    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);
    }
    
    
    //TODO: anders loesen -> bad practice
    export function wait(ms: number): void {
    	cy.wait(ms);
    }
    
    OZGCloud's avatar
    OZGCloud committed
    //
    
    
    export function reload(): void {
    	cy.reload();
    
    OZGCloud's avatar
    OZGCloud committed
    }
    
    export function readFileFromDownloads(fileName: string) {
    	return cy.readFile(`cypress/downloads/${fileName}`);
    
    }
    
    
    
    //Config
    export function getBaseUrl() {
    	return Cypress.config().baseUrl;
    
    }
    
    
    
    //Env
    export function getCypressEnv(value: string) {
    	return Cypress.env(value);