From f68ae96dbd7717782a2d7139f1d01f61f6bb4ff7 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 18 Nov 2024 16:32:59 +0100
Subject: [PATCH] E2E improve user init sync

---
 .../src/e2e/main-tests/init-users.cy.ts       | 52 ++++++++++++-------
 .../apps/alfa-e2e/src/support/user-util.ts    |  5 ++
 2 files changed, 39 insertions(+), 18 deletions(-)

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 e8fb840ed9..1f485f81a3 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
@@ -5,7 +5,7 @@ import { HeaderE2EComponent } from '../../page-objects/header.po';
 import { MainPage, waitForSpinnerToDisappear } from '../../page-objects/main.po';
 import { login, writeUserIdsIntoFile } from '../../support/cypress-helper';
 import { exist } from '../../support/cypress.util';
-import { DatabaseUser } from '../../support/user-util';
+import { areUsersSynced, DatabaseUser } from '../../support/user-util';
 
 registerLocaleData(localeDe, 'de', localeDeExtra);
 
@@ -13,26 +13,42 @@ describe('Init users', () => {
   const mainPage: MainPage = new MainPage();
   const header: HeaderE2EComponent = mainPage.getHeader();
 
-  it('should login and logout all users', () => {
-    [
-      DatabaseUser.SABINE,
-      DatabaseUser.DOROTHEA,
-      DatabaseUser.PETER,
-      DatabaseUser.EMIL,
-      DatabaseUser.ADELHEIT,
-      DatabaseUser.LUDWIG,
-      DatabaseUser.RICHARD,
-      DatabaseUser.ZONK,
-    ].forEach(syncUser);
+  it('should login sabine', () => {
+    syncUser(DatabaseUser.SABINE);
+  });
+
+  it('should login dorothea', () => {
+    syncUser(DatabaseUser.DOROTHEA);
+  });
+  it('should login peter', () => {
+    syncUser(DatabaseUser.PETER);
+  });
+  it('should login emil', () => {
+    syncUser(DatabaseUser.EMIL);
+  });
+  it('should login adelheit', () => {
+    syncUser(DatabaseUser.ADELHEIT);
+  });
+  it('should login ludwig', () => {
+    syncUser(DatabaseUser.LUDWIG);
+  });
+  it('should login richard', () => {
+    syncUser(DatabaseUser.RICHARD);
+  });
 
-    writeUserIdsIntoFile();
+  it('should write user ids to file', () => {
+    if (!areUsersSynced()) {
+      writeUserIdsIntoFile();
+    }
   });
 
   function syncUser(user: DatabaseUser) {
-    login(user);
-    waitForSpinnerToDisappear();
-    exist(header.getLogo());
-    header.getCurrentUserProfile().getUserIconButton().click();
-    header.getCurrentUserProfile().getLogoutButton().click();
+    if (!areUsersSynced()) {
+      login(user);
+      waitForSpinnerToDisappear();
+      exist(header.getLogo());
+      header.getCurrentUserProfile().getUserIconButton().click();
+      header.getCurrentUserProfile().getLogoutButton().click();
+    }
   }
 });
diff --git a/alfa-client/apps/alfa-e2e/src/support/user-util.ts b/alfa-client/apps/alfa-e2e/src/support/user-util.ts
index 23cc3a4a8f..4abfd9ad6e 100644
--- a/alfa-client/apps/alfa-e2e/src/support/user-util.ts
+++ b/alfa-client/apps/alfa-e2e/src/support/user-util.ts
@@ -21,6 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+import { isNotEmpty } from '@alfa-client/tech-shared';
 import { isEmpty } from 'lodash-es';
 import { UserE2E } from '../model/user';
 import { UsermanagerUserE2E } from '../model/usermanager';
@@ -51,6 +52,10 @@ export function getUserId(username: Username) {
   return userIds[username];
 }
 
+export function areUsersSynced(): boolean {
+  return isNotEmpty(userIds);
+}
+
 export function initUsermanagerUsers() {
   // initUsermanagerData([
   //   getUserManagerUserSabine(),
-- 
GitLab