diff --git a/alfa-client/apps/admin-e2e/src/support/angular.util.ts b/alfa-client/apps/admin-e2e/src/support/angular.util.ts index 7dbeb3b9cc5ff07185971dacf56729a404222d2c..8345e751b5781769282164d36aa7fb6b0bd4636d 100644 --- a/alfa-client/apps/admin-e2e/src/support/angular.util.ts +++ b/alfa-client/apps/admin-e2e/src/support/angular.util.ts @@ -39,8 +39,7 @@ enum AngularElementE2E { export function hasTooltip(element: any, value: string) { mouseEnter(element); - element.get('mat-tooltip-component').contains(value); - // element.get(`div[title="${value}"]`); + element.get('ods-tooltip').contains(value); } export function isChecked(element: any) { diff --git a/alfa-client/apps/alfa-e2e/src/components/user-profile/current-user-profile.component.e2e.ts b/alfa-client/apps/alfa-e2e/src/components/user-profile/current-user-profile.component.e2e.ts index 202c5d3ef538a45931d9dc855e1ad99dba5610fd..93a38796fd04ecade67ecf9995a417a73ce687ba 100644 --- a/alfa-client/apps/alfa-e2e/src/components/user-profile/current-user-profile.component.e2e.ts +++ b/alfa-client/apps/alfa-e2e/src/components/user-profile/current-user-profile.component.e2e.ts @@ -40,7 +40,7 @@ export class CurrentUserProfileE2EComponent { public logout(): void { this.getUserIconButton().click(); - this.getLogoutButton().click(); + this.getLogoutButton().click({ force: true }); } public getUserIconButton() { diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/init-users.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/init-users.cy.ts index b5325689ff01c2b61199ae06ef1e07ebc483a5b1..0558e553cf1915d2e288b730be3b06d6adbf4a61 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/init-users.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/init-users.cy.ts @@ -68,6 +68,6 @@ describe('Init users', () => { waitForSpinnerToDisappear(); exist(header.getLogo()); header.getCurrentUserProfile().getUserIconButton().click(); - header.getCurrentUserProfile().getLogoutButton().click(); + header.getCurrentUserProfile().getLogoutButton().click({ force: true }); } }); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht.cy.ts index ac09ea4046a74327aaa0e0460b1cd89afd6af003..7fa1b271ad7f923a8757a96e1e73854837fe101c 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht.cy.ts @@ -37,18 +37,13 @@ import { contains, exist, haveText, + haveTextWithoutChildren, shouldFirstContains, shouldHaveAttributeBeGreaterThan, shouldHaveAttributeBeLowerThan, } from '../../../support/cypress.util'; import { loginAsSabine } from '../../../support/user-util'; -import { - AntragstellerE2ETestData, - buildVorgang, - createVorgang, - initVorgaenge, - objectIds, -} from '../../../support/vorgang-util'; +import { AntragstellerE2ETestData, buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util'; registerLocaleData(localeDe, 'de', localeDeExtra); @@ -57,13 +52,10 @@ describe('Vorgang Detailansicht', () => { const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList(); const vorgangPage: VorgangPage = new VorgangPage(); - const vorgangDatenFormular: VorgangFormularDatenE2EComponent = - vorgangPage.getFormularDatenContainer(); + const vorgangDatenFormular: VorgangFormularDatenE2EComponent = vorgangPage.getFormularDatenContainer(); const vorgangHeader: VorgangDetailHeaderE2EComponent = vorgangPage.getVorgangDetailHeader(); - const expansionPanelContainer: ExpansionPanelE2Eomponent = vorgangPage - .getFormularDatenContainer() - .getExpansionPanelContainer(); + const expansionPanelContainer: ExpansionPanelE2Eomponent = vorgangPage.getFormularDatenContainer().getExpansionPanelContainer(); const antragsteller: AntragstellerE2EComponent = vorgangPage.getAntragstellerContainer(); const vorgang: VorgangE2E = { ...createVorgang(), name: 'TestVorgang' }; @@ -97,16 +89,10 @@ describe('Vorgang Detailansicht', () => { it('should have header data', () => { haveText(vorgangHeader.getStatus(), vorgangStatusLabelE2E[vorgang.status]); - haveText( - vorgangHeader.getAktenzeichen(), - vorgang.aktenzeichen ? vorgang.aktenzeichen : NO_AKTENZEICHEN, - ); - haveText(vorgangHeader.getVorgangNummer(), vorgang.nummer); + haveTextWithoutChildren(vorgangHeader.getAktenzeichen(), vorgang.aktenzeichen ? vorgang.aktenzeichen : NO_AKTENZEICHEN); + haveTextWithoutChildren(vorgangHeader.getVorgangNummer(), vorgang.nummer); haveText(vorgangHeader.getName(), vorgang.name); - haveText( - vorgangHeader.getCreatedAt(), - formatDate(vorgang.createdAt.$date, 'EEEE, dd. MMMM y, HH:mm', 'de'), - ); + haveText(vorgangHeader.getCreatedAt(), formatDate(vorgang.createdAt.$date, 'EEEE, dd. MMMM y, HH:mm', 'de')); }); it('should have header data after reload', () => { @@ -114,16 +100,10 @@ describe('Vorgang Detailansicht', () => { exist(vorgangHeader.getRoot()); haveText(vorgangHeader.getStatus(), vorgangStatusLabelE2E[vorgang.status]); - haveText( - vorgangHeader.getAktenzeichen(), - vorgang.aktenzeichen ? vorgang.aktenzeichen : NO_AKTENZEICHEN, - ); - haveText(vorgangHeader.getVorgangNummer(), vorgang.nummer); + haveTextWithoutChildren(vorgangHeader.getAktenzeichen(), vorgang.aktenzeichen ? vorgang.aktenzeichen : NO_AKTENZEICHEN); + haveTextWithoutChildren(vorgangHeader.getVorgangNummer(), vorgang.nummer); haveText(vorgangHeader.getName(), vorgang.name); - haveText( - vorgangHeader.getCreatedAt(), - formatDate(vorgang.createdAt.$date, 'EEEE, dd. MMMM y, HH:mm', 'de'), - ); + haveText(vorgangHeader.getCreatedAt(), formatDate(vorgang.createdAt.$date, 'EEEE, dd. MMMM y, HH:mm', 'de')); }); }); @@ -136,10 +116,7 @@ describe('Vorgang Detailansicht', () => { }); it('should show "empfangendestelle"', () => { - contains( - vorgangDatenFormular.getRoot(), - vorgang.eingangs[0].formData.empfangendestelle.emailadresse, - ); + contains(vorgangDatenFormular.getRoot(), vorgang.eingangs[0].formData.empfangendestelle.emailadresse); }); }); @@ -174,21 +151,13 @@ describe('Vorgang Detailansicht', () => { }); it('should have Formulardaten panel open initial', () => { - shouldHaveAttributeBeGreaterThan( - expansionPanelContainer.getExpansionPanel(), - 'outerHeight', - 50, - ); + shouldHaveAttributeBeGreaterThan(expansionPanelContainer.getExpansionPanel(), 'outerHeight', 50); }); it('should close the panel', () => { expansionPanelContainer.getExpansionPanelTitle().first().click(); - shouldHaveAttributeBeLowerThan( - expansionPanelContainer.getExpansionPanel(), - 'outerHeight', - 50, - ); + shouldHaveAttributeBeLowerThan(expansionPanelContainer.getExpansionPanel(), 'outerHeight', 50); }); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts index a2a5a7c8b38cdfe441ad42110c91d5a14effbc4f..dcbef54206c964966a49dc51cefa33c405c633ec 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts @@ -88,6 +88,7 @@ describe('Vorgang archivieren', () => { }); it('should open popup again and archive Vorgang on confirmation', () => { + vorgangMoreMenu.getButton().click(); archivierenItem.clickArchivieren(); archivierenItem.confirmArchivieren(); diff --git a/alfa-client/apps/alfa-e2e/src/support/angular.util.ts b/alfa-client/apps/alfa-e2e/src/support/angular.util.ts index 4f8427775eba70bc3c69837580ff307ecdc2fded..a8929a5a22b1fc8073e1717241b8e7141a20ee99 100644 --- a/alfa-client/apps/alfa-e2e/src/support/angular.util.ts +++ b/alfa-client/apps/alfa-e2e/src/support/angular.util.ts @@ -40,8 +40,7 @@ enum AngularElementE2E { export function hasTooltip(element: any, value: string) { mouseEnter(element); - element.get('mat-tooltip-component').contains(value); - // element.get(`div[title="${value}"]`); + element.get('ods-tooltip').contains(value); } export function isChecked(element: any) { diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts index ce27ac7e46551eb1cebe36055894341e23ae6106..69e7bccdfc44a17993598e6c49a8e81bd066db33 100644 --- a/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts +++ b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts @@ -52,6 +52,16 @@ export function haveText(element: any, text: string): void { .should('equal', text); } +export function haveTextWithoutChildren(element: any, text: string): void { + element + .invoke('clone') + .then((element) => { + element.children().remove(); + return element.text().trim(); + }) + .should('equal', text); +} + export function haveValue(element: any, value: string): void { element.should('have.value', value); } @@ -93,11 +103,7 @@ export function shouldFirstContains(element: any, containing: string) { element.first().should('exist').contains(containing); } -export function shouldHaveAttributeBeGreaterThan( - element: any, - attributeName: string, - value: number, -) { +export function shouldHaveAttributeBeGreaterThan(element: any, attributeName: string, value: number) { element.first().should('exist').invoke(attributeName).should('be.gt', value); } @@ -122,11 +128,7 @@ export function enter(element: any): void { element.clear().type(CypressKeyboardActions.ENTER); } -export function enterWith( - element: Cypress.Chainable<JQuery<HTMLElement>>, - value: string, - delayBeforeEnter: number = 200, -): void { +export function enterWith(element: Cypress.Chainable<JQuery<HTMLElement>>, value: string, delayBeforeEnter: number = 200): void { element.clear().type(value); wait(delayBeforeEnter); element.type(CypressKeyboardActions.ENTER); diff --git a/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu-button-item/dropdown-menu-button-item.component.ts b/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu-button-item/dropdown-menu-button-item.component.ts index 90badf1ab01696f8203a8af8caee1af377c9cbae..842ff45f4505e999956906e19075ad03fc0edcbc 100644 --- a/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu-button-item/dropdown-menu-button-item.component.ts +++ b/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu-button-item/dropdown-menu-button-item.component.ts @@ -32,6 +32,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; class="flex min-h-12 w-full items-center gap-4 border-2 border-transparent px-4 py-3 text-start outline-none hover:border-primary focus-visible:border-focus" role="menuitem" (click)="itemClicked.emit()" + [attr.data-test-id]="buttonTestId" > <ng-content select="[icon]" /> <p class="text-text">{{ caption }}</p> @@ -39,6 +40,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; }) export class DropdownMenuButtonItemComponent { @Input({ required: true }) caption!: string; + @Input() buttonTestId: string; @Output() itemClicked: EventEmitter<MouseEvent> = new EventEmitter(); } diff --git a/alfa-client/libs/user-profile/src/lib/user-profile-in-header-container/user-profile-in-header/user-profile-in-header.component.html b/alfa-client/libs/user-profile/src/lib/user-profile-in-header-container/user-profile-in-header/user-profile-in-header.component.html index 8808114310f78fe0a7addeb9417dc889456a6e21..c73890ac91f82dd5182190f913829129deb67bad 100644 --- a/alfa-client/libs/user-profile/src/lib/user-profile-in-header-container/user-profile-in-header/user-profile-in-header.component.html +++ b/alfa-client/libs/user-profile/src/lib/user-profile-in-header-container/user-profile-in-header/user-profile-in-header.component.html @@ -26,16 +26,17 @@ <ods-dropdown-menu buttonClass="rounded-full p-1 hover:bg-neutral-100 focus:bg-neutral-200 focus:outline-none dark:hover:bg-neutral-700 dark:focus:bg-neutral-600" [label]="buttonLabel" + buttonTestId="user-icon-button" data-test-id="user-icon-dropdown-menu" > <alfa-user-icon button-content - data-test-id="user-icon-button" + data-test-id="user-icon" [userProfileStateResource]="currentUserResource" class="user-profile-icon" > </alfa-user-icon> - <ods-dropdown-menu-button-item caption="Abmelden" (itemClicked)="logoutEmitter.emit()" data-test-id="logout-button"> + <ods-dropdown-menu-button-item caption="Abmelden" (itemClicked)="logoutEmitter.emit()" buttonTestId="logout-button"> <ods-logout-icon icon /> </ods-dropdown-menu-button-item> </ods-dropdown-menu>