From a243751baeeceae47b8c16d5f51e4ba0db10095a Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 26 Sep 2024 11:24:40 +0200
Subject: [PATCH] OZG-6592: Change Jenkinsfile for new directory/script
 structure

---
 alfa-client/Jenkinsfile.e2e | 96 ++++++++++++++++++++-----------------
 1 file changed, 51 insertions(+), 45 deletions(-)

diff --git a/alfa-client/Jenkinsfile.e2e b/alfa-client/Jenkinsfile.e2e
index 04cd7e1083..da6cb44df7 100644
--- a/alfa-client/Jenkinsfile.e2e
+++ b/alfa-client/Jenkinsfile.e2e
@@ -254,7 +254,7 @@ pipeline {
 
                                 Integer mongoDbPort = forwardMongoDbPort(generateNamespace(bezeichner))
 
-                                runTests(bezeichner, 'einheitlicher-ansprechpartner', mongoDbPort, env.STAGE_NAME)
+                                runTests(bezeichner, 'alfa-e2e','einheitlicher-ansprechpartner', mongoDbPort, env.STAGE_NAME)
 
                                 stopForwardMongoDbPort(generateNamespace(bezeichner))
                             }
@@ -285,7 +285,7 @@ pipeline {
 
                                 Integer mongoDbPort = forwardMongoDbPort(generateNamespace(bezeichner))
 
-                                runTests(bezeichner, 'main-tests', mongoDbPort, env.STAGE_NAME)
+                                runTests(bezeichner, 'alfa-e2e','main-tests', mongoDbPort, env.STAGE_NAME)
 
                                 stopForwardMongoDbPort(generateNamespace(bezeichner))
                             }
@@ -311,11 +311,11 @@ pipeline {
                   steps {
                     catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
                       script {
-                        def bezeichner = env.MAIN_BEZEICHNER
+                        String bezeichner = env.MAIN_BEZEICHNER
 
                         Integer mongoDbPort = forwardMongoDbPort(generateNamespace(bezeichner))
 
-                        runTests(bezeichner, 'main-tests', mongoDbPort, env.STAGE_NAME)
+                        runTests(bezeichner, 'admin-e2e','main-tests', mongoDbPort, env.STAGE_NAME)
 
                         stopForwardMongoDbPort(generateNamespace(bezeichner))
                       }
@@ -329,7 +329,7 @@ pipeline {
                     }
                     always {
                       script {
-                        publishAdminE2ETestResult("main-tests", "Admin E2E-Tests main")
+                        publishAdminE2ETestResult()
                       }
                     }
                   }
@@ -612,15 +612,17 @@ Void waitForHealthyStatus(String bezeichner, String application) {
     sh "kubectl wait --for=jsonpath='{.status.health.status}'=Healthy applications/by-${bezeichner}-dev-${application} -n argocd --timeout=900s"
 }
 
-Void publishAlfaE2ETestResult(String reportFolder, String reportName) {
-  publishE2ETestResult2("alfa-client/apps/alfa-e2e/reports/${reportFolder}", reportName)
+Void publishAlfaE2ETestResult(String appVariant, String reportName) {
+  publishE2ETestResult("alfa-e2e", appVariant, reportName);
 }
 
-Void publishAdminE2ETestResult(String reportFolder, String reportName) {
-  publishE2ETestResult2("alfa-client/apps/admin-e2e/reports/${reportFolder}", reportName)
+Void publishAdminE2ETestResult() {
+  publishE2ETestResult("admin-e2e", "main-tests", "Admin E2E-Tests main");
 }
 
-Void publishE2ETestResult2(String reportDir, String reportName) {
+Void publishE2ETestResult(String appName, String appVariant, String reportName) {
+  def reportDir = "alfa-client/apps/${appName}/reports/${appVariant}";
+
   publishHTML (
     target: [
       allowMissing: false,
@@ -633,19 +635,21 @@ Void publishE2ETestResult2(String reportDir, String reportName) {
   )
 }
 
-String runTests(String bezeichner, String reportFolder, Integer dbPort, String stageName) {
-    def config = generateCypressConfig(bezeichner, reportFolder, dbPort)
-
-    try {
-        dir('alfa-client'){
-            sh "npm run cypress:version"
-            sh "apps/alfa-e2e/run-tests.sh ${reportFolder} ${config}"
-        }
-    } catch (Exception e) {
-        printNpmDebugLog()
-
-        error("Fehler in Stage ${stageName}")
+// runTests(env.EA_BEZEICHNER, 'alfa-e2e', 'einheitlicher-ansprechpartner', mongoDbPort, env.STAGE_NAME
+// runTests(env.EA_BEZEICHNER, 'alfa-e2e', 'main-tests', mongoDbPort, env.STAGE_NAME
+// runTests(env.EA_BEZEICHNER, 'admin-e2e', 'main-tests', mongoDbPort, env.STAGE_NAME
+String runTests(String bezeichner, String appName, String appVariant, Integer dbPort, String stageName) {
+  def config = generateCypressConfig(bezeichner, appName, appVariant, dbPort)
+  try {
+    dir('alfa-client'){
+      sh "npm run cypress:version"
+      sh "apps/run-tests.sh ${appName} ${appVariant} ${config}"
     }
+  } catch (Exception e) {
+    printNpmDebugLog()
+
+    error("Fehler in Stage ${stageName}")
+  }
 }
 
 Void printNpmDebugLog() {
@@ -676,39 +680,41 @@ String cutBranchNameForKeycloakRealm(String branchName, String stageName) {
     return branchName.take(cutBranchNamePosition)
 }
 
-String generateCypressConfig(String bezeichner, String testFolder, Integer dbPort) {
-    def namespace = generateNamespace(bezeichner)
-    def configName = "cypress-ci-"+testFolder+".json"
+String generateCypressConfig(String bezeichner, String appName, String appVariant, Integer dbPort) {
+  def namespace = generateNamespace(bezeichner)
+  def configName = "cypress-ci-"+appVariant+".json"
 
-    dir('alfa-client/apps/alfa-e2e/'){
-        def config = readJSON file: 'cypress-ci.json'
+  dir('alfa-client/apps/${appName}/'){
+    def config = readJSON file: 'cypress-ci.json'
 
-        def vorgangManagerDatabaseSecret = getVorgangManagerDatabaseSecret(namespace);
-        def decodedPassword = decodeString(vorgangManagerDatabaseSecret.password);
-        def parsablePassword = makePasswordUrlConform(decodedPassword);
+    def vorgangManagerDatabaseSecret = getVorgangManagerDatabaseSecret(namespace);
+    def decodedPassword = decodeString(vorgangManagerDatabaseSecret.password);
+    def parsablePassword = makePasswordUrlConform(decodedPassword);
 
-        config.baseUrl = "https://${bezeichner}.${env.CLUSTER_BASE_URL}" as String
-        config.env.dbUrl = "mongodb://${decodeString(vorgangManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true&socketTimeoutMS=30000&heartbeatFrequencyMS=10000" as String
-        config.env.keycloakUrl = "https://${env.SSO_URL}/" as String
-        config.env.keycloakRealm = namespace as String
-        config.videosFolder = "./reports/${testFolder}/videos" as String
-        config.screenshotsFolder = "./reports/${testFolder}/screenshots" as String
-        config.reporterOptions.reportDir = "./reports/${testFolder}/mochawesome-report" as String
+    config.baseUrl = "https://${bezeichner}.${env.CLUSTER_BASE_URL}" as String
+    config.env.dbUrl = "mongodb://${decodeString(vorgangManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true&socketTimeoutMS=30000&heartbeatFrequencyMS=10000" as String
+    config.env.keycloakUrl = "https://${env.SSO_URL}/" as String
+    config.env.keycloakRealm = namespace as String
+    config.videosFolder = "./reports/${appVariant}/videos" as String
+    config.screenshotsFolder = "./reports/${appVariant}/screenshots" as String
+    config.reporterOptions.reportDir = "./reports/${appVariant}/mochawesome-report" as String
 
-        config.specPattern = "src/e2e/${testFolder}/**/*.cy.{js,jsx,ts,tsx}" as String
+    config.specPattern = "src/e2e/${appVariant}/**/*.cy.{js,jsx,ts,tsx}" as String
 
-        config.env.put("search", getElasticsearchEnv(namespace))
-        config.env.put("userManager", getUserManagerEnv(namespace, dbPort))
-        config.env.put("smocker", getSmockerEnv(namespace))
+    config.env.put("search", getElasticsearchEnv(namespace))
+    config.env.put("userManager", getUserManagerEnv(namespace, dbPort))
+    config.env.put("smocker", getSmockerEnv(namespace))
 
-        writeJSON file: configName, json: config
+    writeJSON file: configName, json: config
 
-        sh "cat ${configName}"
-    }
+    sh "cat ${configName}"
+  }
 
-    return "cypress-ci-"+testFolder+".config.ts"
+  return "cypress-ci-"+appVariant+".config.ts"
 }
 
+
+
 String makePasswordUrlConform(String password) {
     return sh (script: "printf %s ${password} | jq -sRr @uri", returnStdout: true);
 }
-- 
GitLab