From 3c695613f9332a8cf05db2a9be612d4d799934dd Mon Sep 17 00:00:00 2001 From: sebo <sebastian.bergandy@external.mgm-cp.com> Date: Fri, 17 Jan 2025 09:19:30 +0100 Subject: [PATCH 1/8] set data test ids for child components --- .../dropdown-menu-button-item.component.ts | 2 ++ .../user-profile-in-header.component.html | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) 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 90badf1ab0..842ff45f45 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 8808114310..c73890ac91 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> -- GitLab From 116a73db77a54716650d609aed191ba04d4dc90f Mon Sep 17 00:00:00 2001 From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com> Date: Fri, 17 Jan 2025 10:04:49 +0100 Subject: [PATCH 2/8] Fix unit-tests "init users" --- .../lib/user-icon/user-icon.component.spec.ts | 22 +++++++++++++++++++ .../src/lib/user-icon/user-icon.component.ts | 3 ++- .../user-profile-in-header.component.html | 1 + 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts index 5a26a51d01..9f72097d2e 100644 --- a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts +++ b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts @@ -32,6 +32,7 @@ import { import { getElementFromFixture } from '@alfa-client/test-utils'; import { SpinnerComponent } from '@alfa-client/ui'; import { NO_NAME_MESSAGE, UserProfileResource, userProfileMessage } from '@alfa-client/user-profile-shared'; +import { SimpleChange } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; import { faker } from '@faker-js/faker'; @@ -119,6 +120,27 @@ describe('UserIconComponent', () => { }); }); + describe('ngOnChanges', () => { + const userProfileChange: SimpleChange = new SimpleChange(1, 2, true); + + it('should get tooltip', () => { + component.getTooltip = jest.fn(); + + component.ngOnChanges({ userProfileStateResource: userProfileChange }); + + expect(component.getTooltip).toHaveBeenCalled(); + }); + + it('should not get tooltip', () => { + component.getTooltip = jest.fn(); + component.withTooltip = false; + + component.ngOnChanges({ userProfileStateResource: userProfileChange }); + + expect(component.getTooltip).not.toHaveBeenCalled(); + }); + }); + describe('tooltip', () => { it('should return user name', () => { component.userProfileStateResource = createStateResource(userProfile); diff --git a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts index 787e1e16ea..65f11379da 100644 --- a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts +++ b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts @@ -32,13 +32,14 @@ import { isUndefined } from 'lodash-es'; }) export class UserIconComponent { @Input() userProfileStateResource: StateResource<UserProfileResource> = createEmptyStateResource<UserProfileResource>(); + @Input() withTooltip: boolean = true; readonly messageCode = MessageCode; tooltip: string; ngOnChanges(changes: SimpleChanges): void { - if (changes.userProfileStateResource) { + if (changes.userProfileStateResource && this.withTooltip) { this.tooltip = this.getTooltip(); } } 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 c73890ac91..48c074f478 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 @@ -33,6 +33,7 @@ button-content data-test-id="user-icon" [userProfileStateResource]="currentUserResource" + [withTooltip]="false" class="user-profile-icon" > </alfa-user-icon> -- GitLab From fc13f5da6f989a11537e4796d09d3646836b3d2d Mon Sep 17 00:00:00 2001 From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com> Date: Fri, 17 Jan 2025 10:46:28 +0100 Subject: [PATCH 3/8] Fix outdated tooltip test --- alfa-client/apps/admin-e2e/src/support/angular.util.ts | 3 +-- alfa-client/apps/alfa-e2e/src/support/angular.util.ts | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) 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 7dbeb3b9cc..8345e751b5 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/support/angular.util.ts b/alfa-client/apps/alfa-e2e/src/support/angular.util.ts index 4f8427775e..a8929a5a22 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) { -- GitLab From a554394e487467da0cf90e5ad45c1d89e5a8451e Mon Sep 17 00:00:00 2001 From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com> Date: Fri, 17 Jan 2025 13:24:41 +0100 Subject: [PATCH 4/8] Revert "Fix unit-tests "init users"" This reverts commit 116a73db77a54716650d609aed191ba04d4dc90f. --- .../lib/user-icon/user-icon.component.spec.ts | 22 ------------------- .../src/lib/user-icon/user-icon.component.ts | 3 +-- .../user-profile-in-header.component.html | 1 - 3 files changed, 1 insertion(+), 25 deletions(-) diff --git a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts index 9f72097d2e..5a26a51d01 100644 --- a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts +++ b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts @@ -32,7 +32,6 @@ import { import { getElementFromFixture } from '@alfa-client/test-utils'; import { SpinnerComponent } from '@alfa-client/ui'; import { NO_NAME_MESSAGE, UserProfileResource, userProfileMessage } from '@alfa-client/user-profile-shared'; -import { SimpleChange } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; import { faker } from '@faker-js/faker'; @@ -120,27 +119,6 @@ describe('UserIconComponent', () => { }); }); - describe('ngOnChanges', () => { - const userProfileChange: SimpleChange = new SimpleChange(1, 2, true); - - it('should get tooltip', () => { - component.getTooltip = jest.fn(); - - component.ngOnChanges({ userProfileStateResource: userProfileChange }); - - expect(component.getTooltip).toHaveBeenCalled(); - }); - - it('should not get tooltip', () => { - component.getTooltip = jest.fn(); - component.withTooltip = false; - - component.ngOnChanges({ userProfileStateResource: userProfileChange }); - - expect(component.getTooltip).not.toHaveBeenCalled(); - }); - }); - describe('tooltip', () => { it('should return user name', () => { component.userProfileStateResource = createStateResource(userProfile); diff --git a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts index 65f11379da..787e1e16ea 100644 --- a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts +++ b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts @@ -32,14 +32,13 @@ import { isUndefined } from 'lodash-es'; }) export class UserIconComponent { @Input() userProfileStateResource: StateResource<UserProfileResource> = createEmptyStateResource<UserProfileResource>(); - @Input() withTooltip: boolean = true; readonly messageCode = MessageCode; tooltip: string; ngOnChanges(changes: SimpleChanges): void { - if (changes.userProfileStateResource && this.withTooltip) { + if (changes.userProfileStateResource) { this.tooltip = this.getTooltip(); } } 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 48c074f478..c73890ac91 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 @@ -33,7 +33,6 @@ button-content data-test-id="user-icon" [userProfileStateResource]="currentUserResource" - [withTooltip]="false" class="user-profile-icon" > </alfa-user-icon> -- GitLab From ca40c236faf3cfa90d2ac81a8d4a36d561d2174c Mon Sep 17 00:00:00 2001 From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com> Date: Fri, 17 Jan 2025 13:33:16 +0100 Subject: [PATCH 5/8] Fix "init-users" test --- alfa-client/apps/alfa-e2e/src/e2e/main-tests/init-users.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b5325689ff..0558e553cf 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 }); } }); -- GitLab From cc4276d4193707de0e563e430b9a960b7f38f196 Mon Sep 17 00:00:00 2001 From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com> Date: Fri, 17 Jan 2025 13:38:03 +0100 Subject: [PATCH 6/8] Fix "login-logout" test --- .../user-profile/current-user-profile.component.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 202c5d3ef5..93a38796fd 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() { -- GitLab From 464050ceb91f6a60d5f890bbcdf403c8d711290a Mon Sep 17 00:00:00 2001 From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com> Date: Fri, 17 Jan 2025 13:47:24 +0100 Subject: [PATCH 7/8] Fix "vorgang-detailansicht" test --- .../vorgang-detailansicht.cy.ts | 57 +++++-------------- .../apps/alfa-e2e/src/support/cypress.util.ts | 22 +++---- 2 files changed, 25 insertions(+), 54 deletions(-) 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 ac09ea4046..7fa1b271ad 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/support/cypress.util.ts b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts index ce27ac7e46..69e7bccdfc 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); -- GitLab From 2b5c6d0d4fb116d3f9377c861edef4bc231d1a88 Mon Sep 17 00:00:00 2001 From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com> Date: Fri, 17 Jan 2025 14:10:55 +0100 Subject: [PATCH 8/8] Fix "vorgang-archivieren" test --- .../src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts | 1 + 1 file changed, 1 insertion(+) 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 a2a5a7c8b3..dcbef54206 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(); -- GitLab