From 6696343ef85b50e202ef9bd1414caadc2e4cbd32 Mon Sep 17 00:00:00 2001 From: Martin <git@mail.de> Date: Mon, 24 Mar 2025 08:36:19 +0100 Subject: [PATCH] refactor E2E test --- .../vorgang-wiedereroeffnen.cy.ts | 233 +++++------------- .../apps/alfa-e2e/src/helper/app.helper.ts | 32 ++- .../apps/alfa-e2e/src/helper/app.verifier.ts | 17 ++ .../src/helper/vorgang/vorgang.helper.ts | 28 ++- .../src/helper/vorgang/vorgang.navigator.ts | 21 +- .../src/helper/vorgang/vorgang.verifier.ts | 14 +- 6 files changed, 153 insertions(+), 192 deletions(-) create mode 100644 alfa-client/apps/alfa-e2e/src/helper/app.verifier.ts diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-wiedereroeffnen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-wiedereroeffnen.cy.ts index a589537f1b..8cc9be2bf8 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-wiedereroeffnen.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-wiedereroeffnen.cy.ts @@ -21,24 +21,20 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components'; -import { SnackBarE2EComponent } from '../../../components/ui/snackbar.e2e.component'; -import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component'; -import { VorgangE2E, VorgangMessagesE2E, VorgangStatusE2E, vorgangStatusLabelE2E } from '../../../model/vorgang'; -import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; -import { VorgangPage } from '../../../page-objects/vorgang.po'; +import { E2EAppHelper } from 'apps/alfa-e2e/src/helper/app.helper'; +import { E2EVorgangHelper } from 'apps/alfa-e2e/src/helper/vorgang/vorgang.helper'; +import { E2EVorgangNavigator } from 'apps/alfa-e2e/src/helper/vorgang/vorgang.navigator'; +import { E2EVorgangVerifier } from 'apps/alfa-e2e/src/helper/vorgang/vorgang.verifier'; +import { VorgangE2E, VorgangMessagesE2E, VorgangStatusE2E } from '../../../model/vorgang'; import { dropCollections } from '../../../support/cypress-helper'; -import { contains, exist, haveText, notExist } from '../../../support/cypress.util'; -import { loginAsSabine } from '../../../support/user-util'; import { buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util'; describe('Vorgang wiedereroeffnen', () => { - const mainPage: MainPage = new MainPage(); - const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList(); - const snackbar: SnackBarE2EComponent = mainPage.getSnackBar(); + const appHelper: E2EAppHelper = new E2EAppHelper(); - const vorgangPage: VorgangPage = new VorgangPage(); - const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons(); + const helper: E2EVorgangHelper = new E2EVorgangHelper(); + const navigator: E2EVorgangNavigator = new E2EVorgangNavigator(); + const verifier: E2EVorgangVerifier = new E2EVorgangVerifier(); const vorgangBeschiedenWiedereroeffnen: VorgangE2E = { ...createVorgang(), @@ -66,10 +62,7 @@ describe('Vorgang wiedereroeffnen', () => { vorgangAbgeschlossenWiedereroeffnenRevoke, ]); - loginAsSabine(); - - waitForSpinnerToDisappear(); - exist(vorgangList.getRoot()); + appHelper.loginAsSabine(); }); after(() => { @@ -77,105 +70,48 @@ describe('Vorgang wiedereroeffnen', () => { }); describe('vorgang in status beschieden', () => { - describe('wiedereroeffnen', () => { - it('Open Vorgang-Detail-Page', () => { - vorgangList.getListItem(vorgangBeschiedenWiedereroeffnen.name).getRoot().click(); - waitForSpinnerToDisappear(); + it('should show vorgang status', () => { + navigator.openVorgang(vorgangBeschiedenWiedereroeffnen.name); - exist(vorgangPage.getVorgangDetailHeader().getRoot()); - }); + verifier.verifyStatus(VorgangStatusE2E.BESCHIEDEN); + }); + describe('wiedereroeffnen', () => { describe('by button', () => { - it('should have status Beschieden', () => { - haveText( - vorgangPage.getVorgangDetailHeader().getStatus(), - vorgangStatusLabelE2E[vorgangBeschiedenWiedereroeffnen.status], - ); - }); - - it('should show snackBar message', () => { - vorgangFormularButtons.getWiedereroeffnenButton().click(); - waitForSpinnerToDisappear(); - - exist(snackbar.getCloseButton()); - contains(snackbar.getMessage(), VorgangMessagesE2E.WIEDEREROEFFNET); - }); - - it('should close snackBar on close', () => { - snackbar.getCloseButton().click(); - - notExist(snackbar.getMessage()); - }); + it('should change status to wiedereroeffnet', () => { + helper.wiedereroeffnenByButton(); - it('should have status In Bearbeitung', () => { - haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG]); + verifier.verifyStatus(VorgangStatusE2E.IN_BEARBEITUNG); }); - it('back to vorgang list', () => { - vorgangPage.getSubnavigation().getBackButton().click(); - waitForSpinnerToDisappear(); + it('should have new status in list after navigate back', () => { + helper.navigateBack(); - exist(vorgangList.getRoot()); - }); - - it('should have status In Bearbeitung', () => { - haveText( - vorgangList.getListItem(vorgangBeschiedenWiedereroeffnen.name).getStatus(), - vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG], - ); + verifier.verifyStatusInList(vorgangBeschiedenWiedereroeffnen.name, VorgangStatusE2E.IN_BEARBEITUNG); }); }); }); describe('wiedereroeffnen und rückgängig machen', () => { - it('Open Vorgang-Detail-Page', () => { - vorgangList.getListItem(vorgangBeschiedenWiedereroeffnenRevoke.name).getRoot().click(); - waitForSpinnerToDisappear(); + it('should show vorgang status', () => { + navigator.openVorgang(vorgangBeschiedenWiedereroeffnenRevoke.name); - exist(vorgangPage.getVorgangDetailHeader().getRoot()); + verifier.verifyStatus(VorgangStatusE2E.BESCHIEDEN); }); describe('by icon-button', () => { it('should have status Beschieden', () => { - haveText( - vorgangPage.getVorgangDetailHeader().getStatus(), - vorgangStatusLabelE2E[vorgangBeschiedenWiedereroeffnenRevoke.status], - ); - }); - - it('should show snackBar message', () => { - vorgangPage.getSubnavigation().getWiedereroeffnenIconButton().click(); - waitForSpinnerToDisappear(); - - exist(snackbar.getCloseButton()); - contains(snackbar.getMessage(), VorgangMessagesE2E.WIEDEREROEFFNET); - }); + helper.wiedereroeffnenByIconButton(); - it('should click on snackbar revoke', () => { - snackbar.getRevokeButton().click(); - waitForSpinnerToDisappear(); + appHelper.revokeAndCloseSnackbar(VorgangMessagesE2E.WIEDEREROEFFNET); - notExist(snackbar.getMessage()); + verifier.verifyStatus(VorgangStatusE2E.BESCHIEDEN); }); - it('should show status Beschieden', () => { - waitForSpinnerToDisappear(); + it('should have reverted status in list after navigate back', () => { + helper.navigateBack(); - haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.BESCHIEDEN]); - }); - - it('back to vorgang list', () => { - vorgangPage.getSubnavigation().getBackButton().click(); - waitForSpinnerToDisappear(); - - exist(vorgangList.getRoot()); - }); - - it('should have status Beschieden', () => { - haveText( - vorgangList.getListItem(vorgangBeschiedenWiedereroeffnenRevoke.name).getStatus(), - vorgangStatusLabelE2E[VorgangStatusE2E.BESCHIEDEN], - ); + verifier.verifyStatusInList(vorgangBeschiedenWiedereroeffnenRevoke.name, VorgangStatusE2E.BESCHIEDEN); }); }); }); @@ -183,104 +119,49 @@ describe('Vorgang wiedereroeffnen', () => { describe('vorgang in status abgeschlossen', () => { describe('wiedereroeffnen', () => { - it('Open Vorgang-Detail-Page', () => { - vorgangList.getListItem(vorgangAbgeschlossenWiedereroeffnen.name).getRoot().click(); - waitForSpinnerToDisappear(); + it('should show vorgang status', () => { + navigator.openVorgang(vorgangAbgeschlossenWiedereroeffnen.name); - exist(vorgangPage.getVorgangDetailHeader().getRoot()); + verifier.verifyStatus(VorgangStatusE2E.ABGESCHLOSSEN); }); - describe('by button', () => { - it('should have status Abgeschlossen', () => { - haveText( - vorgangPage.getVorgangDetailHeader().getStatus(), - vorgangStatusLabelE2E[vorgangAbgeschlossenWiedereroeffnen.status], - ); - }); - - it('should show snackBar', () => { - vorgangFormularButtons.getWiedereroeffnenButton().click(); - waitForSpinnerToDisappear(); - - exist(snackbar.getCloseButton()); - contains(snackbar.getMessage(), VorgangMessagesE2E.WIEDEREROEFFNET); - }); - - it('should close snackBar on close', () => { - snackbar.getCloseButton().click(); + describe('wiedereroeffnen', () => { + describe('by button', () => { + it('should change status to wiedereroeffnet', () => { + helper.wiedereroeffnenByButton(); - notExist(snackbar.getMessage()); - }); - - it('should have status In Bearbeitung', () => { - haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG]); - }); + verifier.verifyStatus(VorgangStatusE2E.IN_BEARBEITUNG); + }); - it('back to vorgang list', () => { - vorgangPage.getSubnavigation().getBackButton().click(); - waitForSpinnerToDisappear(); + it('should have new status in list after navigate back', () => { + helper.navigateBack(); - exist(vorgangList.getRoot()); + verifier.verifyStatusInList(vorgangAbgeschlossenWiedereroeffnen.name, VorgangStatusE2E.IN_BEARBEITUNG); + }); }); - - it('should have status In Bearbeitung', () => { - haveText( - vorgangList.getListItem(vorgangAbgeschlossenWiedereroeffnen.name).getStatus(), - vorgangStatusLabelE2E[VorgangStatusE2E.IN_BEARBEITUNG], - ); - }); - }); - }); - - describe('wiedereroeffnen und rückgängig machen', () => { - it('Open Vorgang-Detail-Page', () => { - vorgangList.getListItem(vorgangAbgeschlossenWiedereroeffnenRevoke.name).getRoot().click(); - waitForSpinnerToDisappear(); - - exist(vorgangPage.getVorgangDetailHeader().getRoot()); }); - describe('by icon-button', () => { - it('should have status Abgeschlossen', () => { - haveText( - vorgangPage.getVorgangDetailHeader().getStatus(), - vorgangStatusLabelE2E[vorgangAbgeschlossenWiedereroeffnenRevoke.status], - ); - }); - - it('should show snackBar', () => { - vorgangPage.getSubnavigation().getWiedereroeffnenIconButton().click(); - waitForSpinnerToDisappear(); - - exist(snackbar.getCloseButton()); - contains(snackbar.getMessage(), VorgangMessagesE2E.WIEDEREROEFFNET); - }); - - it('should click snackbar revoke', () => { - snackbar.getRevokeButton().click(); - waitForSpinnerToDisappear(); + describe('wiedereroeffnen und rückgängig machen', () => { + it('should show vorgang status', () => { + navigator.openVorgang(vorgangAbgeschlossenWiedereroeffnenRevoke.name); - notExist(snackbar.getMessage()); + verifier.verifyStatus(VorgangStatusE2E.ABGESCHLOSSEN); }); - it('should show status Abgeschlossen', () => { - notExist(vorgangPage.getProgressBar()); + describe('by icon-button', () => { + it('should have status Beschieden', () => { + helper.wiedereroeffnenByIconButton(); - haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.ABGESCHLOSSEN]); - }); + appHelper.revokeAndCloseSnackbar(VorgangMessagesE2E.WIEDEREROEFFNET); - it('back to vorgang list', () => { - vorgangPage.getSubnavigation().getBackButton().click(); - waitForSpinnerToDisappear(); + verifier.verifyStatus(VorgangStatusE2E.ABGESCHLOSSEN); + }); - exist(vorgangList.getRoot()); - }); + it('should have reverted status in list after navigate back', () => { + helper.navigateBack(); - it('should have status Abgeschlossen', () => { - haveText( - vorgangList.getListItem(vorgangAbgeschlossenWiedereroeffnenRevoke.name).getStatus(), - vorgangStatusLabelE2E[VorgangStatusE2E.ABGESCHLOSSEN], - ); + verifier.verifyStatusInList(vorgangAbgeschlossenWiedereroeffnenRevoke.name, VorgangStatusE2E.ABGESCHLOSSEN); + }); }); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/helper/app.helper.ts b/alfa-client/apps/alfa-e2e/src/helper/app.helper.ts index e264eb98df..a517ed1e10 100644 --- a/alfa-client/apps/alfa-e2e/src/helper/app.helper.ts +++ b/alfa-client/apps/alfa-e2e/src/helper/app.helper.ts @@ -1,12 +1,19 @@ +import { SnackBarE2EComponent } from '../components/ui/snackbar.e2e.component'; import { VorgangListE2EComponent } from '../components/vorgang/vorgang-list.e2e.component'; import { MainPage, waitForSpinnerToDisappear } from '../page-objects/main.po'; -import { exist } from '../support/cypress.util'; +import { VorgangPage } from '../page-objects/vorgang.po'; +import { exist, notExist } from '../support/cypress.util'; import { loginAsSabine } from '../support/user-util'; +import { E2EAppVerifier } from './app.verifier'; export class E2EAppHelper { private readonly mainPage: MainPage = new MainPage(); + private readonly vorgangPage: VorgangPage = new VorgangPage(); private readonly vorgangList: VorgangListE2EComponent = new VorgangListE2EComponent(); + private readonly verifier: E2EAppVerifier = new E2EAppVerifier(); + private readonly snackBar: SnackBarE2EComponent = new SnackBarE2EComponent(); + public loginAsSabine(): void { loginAsSabine(); this.waitAfterLogin(); @@ -20,4 +27,27 @@ export class E2EAppHelper { public navigateToDomain(): void { this.mainPage.getHeader().getLogo().click(); } + + public saveAndCloseSnackbar(message: string): void { + this.verifier.verifySnackbar(message); + this.closeSnackbar(); + } + + public saveAndCloseRevokeableSnackbar(message: string): void { + this.verifier.verifyRevokableSnackbar(message); + this.closeSnackbar(); + } + + private closeSnackbar(): void { + this.snackBar.getCloseButton().click(); + notExist(this.snackBar.getMessage()); + waitForSpinnerToDisappear(); + } + + public revokeAndCloseSnackbar(message: string): void { + this.verifier.verifySnackbar(message); + this.snackBar.getRevokeButton().click(); + exist(this.vorgangPage.getProgressBar()); + waitForSpinnerToDisappear(); + } } diff --git a/alfa-client/apps/alfa-e2e/src/helper/app.verifier.ts b/alfa-client/apps/alfa-e2e/src/helper/app.verifier.ts new file mode 100644 index 0000000000..6152f6373a --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/helper/app.verifier.ts @@ -0,0 +1,17 @@ +import { SnackBarE2EComponent } from '../components/ui/snackbar.e2e.component'; +import { contains, exist } from '../support/cypress.util'; + +export class E2EAppVerifier { + private readonly snackBar: SnackBarE2EComponent = new SnackBarE2EComponent(); + + public verifyRevokableSnackbar(message: string): void { + this.verifySnackbar(message); + exist(this.snackBar.getRevokeButton()); + } + + public verifySnackbar(message: string): void { + exist(this.snackBar.getCloseButton()); + exist(this.snackBar.getMessage()); + contains(this.snackBar.getMessage(), message); + } +} diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts index 14855ec944..f3040ffb5a 100644 --- a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts +++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts @@ -1,7 +1,27 @@ -import { E2EVorgangNavigator } from './vorgang.navigator'; -import { E2EVorgangVerifier } from './vorgang.verifier'; +import { VorgangFormularButtonsE2EComponent } from '../../components/vorgang/vorgang-formular-buttons.e2e.components'; +import { VorgangSubnavigationE2EComponent } from '../../components/vorgang/vorgang-subnavigation'; +import { waitForSpinnerToDisappear } from '../../page-objects/main.po'; +import { VorgangPage } from '../../page-objects/vorgang.po'; +import { exist } from '../../support/cypress.util'; export class E2EVorgangHelper { - private readonly verifier: E2EVorgangVerifier = new E2EVorgangVerifier(); - private readonly navigator: E2EVorgangNavigator = new E2EVorgangNavigator(); + private readonly page: VorgangPage = new VorgangPage(); + private readonly formularButtons: VorgangFormularButtonsE2EComponent = this.page.getFormularButtons(); + private readonly subnavigation: VorgangSubnavigationE2EComponent = this.page.getSubnavigation(); + + public wiedereroeffnenByButton(): void { + exist(this.formularButtons.getWiedereroeffnenButton()); + this.formularButtons.getWiedereroeffnenButton().click(); + waitForSpinnerToDisappear(); + } + + public wiedereroeffnenByIconButton(): void { + exist(this.subnavigation.getWiedereroeffnenIconButton()); + this.subnavigation.getWiedereroeffnenIconButton().click(); + waitForSpinnerToDisappear(); + } + + public navigateBack(): void { + this.page.getSubnavigation().getBackButton().click(); + } } diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts index 3225f82b8a..0dc9ed6cde 100644 --- a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts +++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts @@ -1,26 +1,33 @@ import { VorgangListE2EComponent } from '../../components/vorgang/vorgang-list.e2e.component'; import { waitForSpinnerToDisappear } from '../../page-objects/main.po'; -import { exist } from '../../support/cypress.util'; +import { VorgangPage } from '../../page-objects/vorgang.po'; +import { contains, exist } from '../../support/cypress.util'; import { E2EAppHelper } from '../app.helper'; -import { E2EVorgangVerifier } from './vorgang.verifier'; export class E2EVorgangNavigator { private readonly appHelper: E2EAppHelper = new E2EAppHelper(); - private readonly verifier: E2EVorgangVerifier = new E2EVorgangVerifier(); + private readonly vorgangPage: VorgangPage = new VorgangPage(); private readonly vorgangListPage = new VorgangListE2EComponent(); + public openVorgang(vorgangName: string): void { + this.appHelper.navigateToDomain(); + waitForSpinnerToDisappear(); + exist(this.vorgangListPage.getRoot()); + this.openVorgangDetailByName(vorgangName); + } + public openVorgangDetailByName(vorgangName: string): void { this.vorgangListPage.getListItem(vorgangName).getRoot().click(); waitForSpinnerToDisappear(); - this.verifier.verifyVorgangDetailOpen(vorgangName); + exist(this.vorgangPage.getVorgangDetailHeader().getRoot()); + contains(this.vorgangPage.getVorgangDetailHeader().getName(), vorgangName); } - public openVorgang(vorgangName: string): void { - this.appHelper.navigateToDomain(); + public navigateBack(): void { + this.vorgangPage.getSubnavigation().getBackButton().click(); waitForSpinnerToDisappear(); exist(this.vorgangListPage.getRoot()); - this.openVorgangDetailByName(vorgangName); } } diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts index d8e8e39394..670e50fbe8 100644 --- a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts +++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts @@ -1,14 +1,20 @@ import { VorgangFormularButtonsE2EComponent } from '../../components/vorgang/vorgang-formular-buttons.e2e.components'; +import { VorgangListE2EComponent } from '../../components/vorgang/vorgang-list.e2e.component'; +import { VorgangStatusE2E, vorgangStatusLabelE2E } from '../../model/vorgang'; import { VorgangPage } from '../../page-objects/vorgang.po'; -import { contains, exist, notExist } from '../../support/cypress.util'; +import { exist, haveText, notExist } from '../../support/cypress.util'; export class E2EVorgangVerifier { private readonly vorgangPage: VorgangPage = new VorgangPage(); + private readonly vorgangList: VorgangListE2EComponent = new VorgangListE2EComponent(); private readonly formularButtons: VorgangFormularButtonsE2EComponent = new VorgangFormularButtonsE2EComponent(); - public verifyVorgangDetailOpen(vorgangName: string): void { - exist(this.vorgangPage.getVorgangDetailHeader().getRoot()); - contains(this.vorgangPage.getVorgangDetailHeader().getName(), vorgangName); + public verifyStatus(status: VorgangStatusE2E): void { + haveText(this.vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[status]); + } + + public verifyStatusInList(vorgangName: string, status: VorgangStatusE2E): void { + haveText(this.vorgangList.getListItem(vorgangName).getStatus(), vorgangStatusLabelE2E[status]); } public verifyForwardingButtonExists(): void { -- GitLab