From 8fc4fe28dd61079a610bc5765f417665d9a47f6b Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Wed, 28 Feb 2024 14:13:16 +0100
Subject: [PATCH] [e2e] Restructure util files

---
 e2e/tests/e2e/button.spec.cy.ts            |  2 +-
 e2e/tests/e2e/dropdown.spec.cy.ts          |  2 +-
 e2e/tests/editor/editor.spec.cy.ts         | 11 ++++----
 e2e/tests/{helper-functions.ts => util.ts} | 32 +++++++++++++++-------
 4 files changed, 29 insertions(+), 18 deletions(-)
 rename e2e/tests/{helper-functions.ts => util.ts} (69%)

diff --git a/e2e/tests/e2e/button.spec.cy.ts b/e2e/tests/e2e/button.spec.cy.ts
index 4d1d2cc6e..4c368761d 100644
--- a/e2e/tests/e2e/button.spec.cy.ts
+++ b/e2e/tests/e2e/button.spec.cy.ts
@@ -1,6 +1,6 @@
 import {
   addPage, addPostMessageStub, navigateToPage, selectFromDropdown
-} from '../helper-functions';
+} from '../util';
 
 describe('Button element', { testIsolation: false }, () => {
   it('creates basic buttons in editor', () => {
diff --git a/e2e/tests/e2e/dropdown.spec.cy.ts b/e2e/tests/e2e/dropdown.spec.cy.ts
index 84938cd85..477263b6a 100644
--- a/e2e/tests/e2e/dropdown.spec.cy.ts
+++ b/e2e/tests/e2e/dropdown.spec.cy.ts
@@ -4,7 +4,7 @@ import {
   assertValueChanged,
   setCheckbox,
   setLabelText
-} from '../helper-functions';
+} from '../util';
 
 describe('Dropdown element', { testIsolation: false }, () => {
   it('creates basic dropdown with 2 options', () => {
diff --git a/e2e/tests/editor/editor.spec.cy.ts b/e2e/tests/editor/editor.spec.cy.ts
index a26bf8446..c730c9cbb 100644
--- a/e2e/tests/editor/editor.spec.cy.ts
+++ b/e2e/tests/editor/editor.spec.cy.ts
@@ -1,6 +1,6 @@
 import {
-  addButton, addPage, navigateToPage, selectFromDropdown
-} from '../helper-functions';
+  addElement, addPage, navigateToPage, selectFromDropdown
+} from '../util';
 
 describe('Basic Unit', () => {
   beforeEach(() => {
@@ -25,8 +25,7 @@ describe('Basic Unit', () => {
 
   it('creates a button element with label text', () => {
     cy.get('aspect-page-canvas').contains('Knopf').should('not.exist');
-
-    addButton();
+    addElement('Knopf', 'Sonstige');
     cy.contains('div', 'Beschriftung').find('input').clear().type('Neue Beschriftung');
     cy.get('aspect-page-canvas').contains('Neue Beschriftung').should('exist');
   });
@@ -40,8 +39,8 @@ describe('Basic Unit', () => {
     addPage();
     addPage();
     navigateToPage(1);
-    addButton();
-    addButton();
+    addElement('Knopf', 'Sonstige');
+    addElement('Knopf', 'Sonstige');
     cy.contains('div', 'Beschriftung').find('input').clear().type('PageRef');
     selectFromDropdown('Aktion', 'Seitennavigation');
     selectFromDropdown('Aktionsparameter', '2');
diff --git a/e2e/tests/helper-functions.ts b/e2e/tests/util.ts
similarity index 69%
rename from e2e/tests/helper-functions.ts
rename to e2e/tests/util.ts
index b963cb75c..e4eee2281 100644
--- a/e2e/tests/helper-functions.ts
+++ b/e2e/tests/util.ts
@@ -6,9 +6,11 @@ export function navigateToPage(pageIndex: number) {
   cy.contains(`Seite ${pageIndex}`).click();
 }
 
-export function selectFromDropdown(dropdownName: string, optionName: string) {
-  cy.contains('div', dropdownName).find('mat-select').click();
-  cy.get('.cdk-overlay-container').contains(optionName).click();
+export function selectFromDropdown(dropdownName: string, optionName: string, closeOverlay: boolean = false) {
+  cy.get('aspect-element-model-properties-component')
+    .contains('mat-form-field', dropdownName).find('mat-select').click();
+  cy.get('.cdk-overlay-container').contains(optionName).click({ force: true });
+  if (closeOverlay) cy.get('body').click();
 }
 
 export function addOption(optionName: string): void {
@@ -33,14 +35,16 @@ export function setCheckbox(labelText: string): void {
     .click();
 }
 
-export function addButton() {
+export function addElement(element: string, expansionPanel?: string): void {
   // Check if expansion panel is already open; this is important for non-isolated tests
-  cy.get('mat-expansion-panel').contains('Sonstige').then(expansionPanel => {
-    if (!expansionPanel.hasClass('mat-expanded')) {
-      cy.contains('Sonstige').click();
-    }
-  });
-  cy.contains('Knopf').click();
+  if (expansionPanel) {
+    cy.get('mat-expansion-panel').contains('Sonstige').then(expansionPanelElement => {
+      if (!expansionPanelElement.hasClass('mat-expanded')) {
+        cy.contains(expansionPanel).click();
+      }
+    });
+  }
+  cy.contains(element).click();
 }
 
 export function addPostMessageStub() {
@@ -75,3 +79,11 @@ export function assertValueChanged(id: string, value: any): void {
   //       })
   //     }));
 }
+
+export function addTextElement(text: string): void {
+  addElement('Text');
+  cy.get('.text-text').click();
+  cy.get('.ProseMirror p').clear();
+  cy.get('.ProseMirror p').type(text);
+  cy.contains('Speichern').click();
+}
-- 
GitLab