diff --git a/goofy-client/apps/goofy-e2e/cypress.config.ts b/goofy-client/apps/goofy-e2e/cypress.config.ts index 2c142046e35bbac0bb32403266bebfdff6166203..fd6fee3da4580645f7e50b12343812d99a0bacdd 100644 --- a/goofy-client/apps/goofy-e2e/cypress.config.ts +++ b/goofy-client/apps/goofy-e2e/cypress.config.ts @@ -5,6 +5,8 @@ const MongoClient = require('mongodb').MongoClient; const Binary = require('mongodb').Binary; const ObjectId = require('mongodb').ObjectId; const Long = require('mongodb').Long; +const fs = require('fs'); +const {rmdir} = require('fs'); const cypressJsonConfig = { baseUrl: 'http://localhost:4300', @@ -91,7 +93,30 @@ export default defineConfig({ console.log('dropUserManagerCollections: ', collections); dropUserManagerCollectionsFromDatabase(config, collections); return 0; - } + }, + countDownloadFiles(folderName) { + return new Promise((resolve, reject) => { + fs.readdir(folderName, (err, files) => { + if (err) { + return reject(err) + } + + resolve(files.length) + }) + })}, + deleteDownloadFolder(folderName) { + console.log('deleting folder %s', folderName) + + return new Promise((resolve, reject) => { + rmdir(folderName, { maxRetries: 10, recursive: true }, (err) => { + if (err) { + console.error(err) + return reject(err) + } + resolve(null) + }) + }) + }, }); // Workaround für Angular 13 und Cypress mit Webpack 4, diff --git a/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-exportieren.cy.ts b/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-exportieren.cy.ts index f860a6d99217dd94c8d807dd4c4f33bf92c4ff84..8012254cf57d5dc52d53ffb3cd27a5b0bb2c6623 100644 --- a/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-exportieren.cy.ts +++ b/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-exportieren.cy.ts @@ -29,10 +29,11 @@ import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-lis import { VorgangE2E } from '../../../model/vorgang'; import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; import { VorgangPage } from '../../../page-objects/vorgang.po'; -import { dropCollections } from '../../../support/cypress-helper'; -import { exist, notExist } from '../../../support/cypress.util'; +import { countDownloadFiles, deleteDownloadFolder, dropCollections } from '../../../support/cypress-helper'; +import { exist, haveValue, notExist } from '../../../support/cypress.util'; import { loginAsSabine } from '../../../support/user-util'; import { createVorgang, initVorgaenge } from '../../../support/vorgang-util'; +import * as fs from 'fs'; registerLocaleData(localeDe, 'de', localeDeExtra); @@ -46,6 +47,7 @@ describe('Vorgang exportieren', () => { const vorgangExportieren: VorgangE2E = { ...createVorgang(), name: 'DoExportieren' }; before(() => { + dropCollections(); initVorgaenge([vorgangExportieren]); loginAsSabine(); @@ -83,11 +85,14 @@ describe('Vorgang exportieren', () => { exist(menuItem.getButton()); }) - it('should download', () => { + it('should be 1 file in download folder', () => { menuItem.getButton().click(); waitForSpinnerToDisappear(); - //TODO In Cypress 10+ implement something like https://docs.cypress.io/api/commands/task#Return-number-of-files-in-the-folder + countDownloadFiles().then((count) => { + expect(count).to.eq(1); + deleteDownloadFolder(); + }); }) it('should close menu after download', () => { diff --git a/goofy-client/apps/goofy-e2e/src/support/cypress-helper.ts b/goofy-client/apps/goofy-e2e/src/support/cypress-helper.ts index bde71f182f74051db676b6bf41da1e23ff93072c..c8414803ec145db27e5e88d6a25b19bb208ae865 100644 --- a/goofy-client/apps/goofy-e2e/src/support/cypress-helper.ts +++ b/goofy-client/apps/goofy-e2e/src/support/cypress-helper.ts @@ -37,6 +37,8 @@ enum CypressTasks { INIT_VORGANG_DATA = 'initVorgangData', INIT_VORGANG_ATTACHED_ITEM_DATA = 'initVorgangAttachedItemData', INIT_USERMANAGER_DATA = 'initUsermanagerData', + COUNT_DOWNLOAD_FILES = 'countDownloadFiles', + DELETE_DOWNLOAD_FOLDER = 'deleteDownloadFolder' } enum MongoCollections { @@ -48,6 +50,8 @@ enum MongoCollections { USER = "User" } +const DOWNLOAD_FOLDER: string = 'cypress/downloads'; + export function login(userJsonPath: string): void { cy.fixture(userJsonPath).then(user => { cy.login(user.name, user.password); @@ -108,6 +112,14 @@ export function dropCollections() { cy.task(CypressTasks.DROP_USER_MANAGER_COLLECTIONS, [MongoCollections.USER]); } +export function countDownloadFiles(): Cypress.Chainable<number> { + return cy.task(CypressTasks.COUNT_DOWNLOAD_FILES, DOWNLOAD_FOLDER); +} + +export function deleteDownloadFolder() { + cy.task(CypressTasks.DELETE_DOWNLOAD_FOLDER, DOWNLOAD_FOLDER); +} + export function scrollToWindowBottom(): void { cy.window().scrollTo('bottom'); } @@ -143,7 +155,7 @@ export function reload(): void { } export function readFileFromDownloads(fileName: string) { - return cy.readFile(`cypress/downloads/${fileName}`); + return cy.readFile(`${DOWNLOAD_FOLDER}/${fileName}`); } export function pressTab(): void {