From a9617cf0c361237b8cc1602a3391501d9f47132e Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 20 Oct 2023 17:34:03 +0200
Subject: [PATCH] OZG-3934 Fix missing screenshots in Cypress reports

Also:
- Add run-test.sh which executes Report commands in a much more readable way
- No more "npm run" commands
- Shell commands instead of NodeJS wrapping for basic file system tasks
---
 goofy-client/apps/goofy-e2e/Jenkinsfile       |  3 +-
 goofy-client/apps/goofy-e2e/run-tests.sh      | 26 +++++++++++++++++
 .../src/support/delete-old-reports.ts         | 26 -----------------
 .../src/support/pre-ea-report-merge.ts        | 28 -------------------
 .../apps/goofy-e2e/src/support/pre-merge.ts   | 28 -------------------
 .../apps/goofy-e2e/start-e2e-environment.sh   |  2 +-
 goofy-client/package.json                     |  6 ----
 7 files changed, 28 insertions(+), 91 deletions(-)
 create mode 100755 goofy-client/apps/goofy-e2e/run-tests.sh
 delete mode 100644 goofy-client/apps/goofy-e2e/src/support/delete-old-reports.ts
 delete mode 100644 goofy-client/apps/goofy-e2e/src/support/pre-ea-report-merge.ts
 delete mode 100644 goofy-client/apps/goofy-e2e/src/support/pre-merge.ts

diff --git a/goofy-client/apps/goofy-e2e/Jenkinsfile b/goofy-client/apps/goofy-e2e/Jenkinsfile
index c25dede479..a2d3aaf4a6 100644
--- a/goofy-client/apps/goofy-e2e/Jenkinsfile
+++ b/goofy-client/apps/goofy-e2e/Jenkinsfile
@@ -606,12 +606,11 @@ Void publishE2ETestResult(String reportFolder, String reportName) {
 
 String runTests(String bezeichner, String reportFolder, Integer dbPort, String stageName) {
     def config = generateCypressConfig(bezeichner, reportFolder, dbPort)
-	def spec = "apps/goofy-e2e/src/e2e/${reportFolder}"
 
     try {
         dir('goofy-client'){
 			sh "npm run cypress:version"
-			sh "npm run cypress:ci-run --CONFIG=./${config} --REPORT_FOLDER=${reportFolder}"
+			sh "apps/goofy-e2e/run-tests.sh ${reportFolder} ${config}"
         }
     } catch (Exception e) {
         printNpmDebugLog()
diff --git a/goofy-client/apps/goofy-e2e/run-tests.sh b/goofy-client/apps/goofy-e2e/run-tests.sh
new file mode 100755
index 0000000000..46ea837f37
--- /dev/null
+++ b/goofy-client/apps/goofy-e2e/run-tests.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+export NO_COLOR=1
+
+REPORT_FOLDER=$1
+CONFIG_FILE="${2:-cypress.config.ts}"
+
+echo "Run E2E for $REPORT_FOLDER with configuration apps/goofy-e2e/$CONFIG_FILE..."
+
+rm -rf apps/goofy-e2e/reports/${REPORT_FOLDER}
+
+npx cypress run --project apps/goofy-e2e --spec apps/goofy-e2e/src/e2e/${REPORT_FOLDER} --config-file $CONFIG_FILE
+
+TEST_RESULT=$?
+
+if [ -d "apps/goofy-e2e/reports/${REPORT_FOLDER}/mochawesome-report/.jsons" ]; then
+	mv apps/goofy-e2e/reports/${REPORT_FOLDER}/mochawesome-report/.jsons apps/goofy-e2e/reports/${REPORT_FOLDER}/mochawesome-report/jsons
+	npx mochawesome-merge apps/goofy-e2e/reports/${REPORT_FOLDER}/mochawesome-report/**/*.json > apps/goofy-e2e/reports/${REPORT_FOLDER}/report.json
+	# Workaround: Add "screenshots" to image paths.
+	sed -i '' -E 's/"([^"]*\.png)/"screenshots\1/' apps/goofy-e2e/reports/${REPORT_FOLDER}/report.json
+	npx marge apps/goofy-e2e/reports/${REPORT_FOLDER}/report.json -f report -o apps/goofy-e2e/reports/${REPORT_FOLDER}
+else
+	echo "ERROR: Reports do not exist at apps/goofy-e2e/reports/${REPORT_FOLDER}/mochawesome-report/.jsons"
+fi
+
+exit $TEST_RESULT
\ No newline at end of file
diff --git a/goofy-client/apps/goofy-e2e/src/support/delete-old-reports.ts b/goofy-client/apps/goofy-e2e/src/support/delete-old-reports.ts
deleted file mode 100644
index 7e1fe4e632..0000000000
--- a/goofy-client/apps/goofy-e2e/src/support/delete-old-reports.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-const fs = require('fs');
-
-fs.rmdirSync(`apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}`, { recursive: true });
\ No newline at end of file
diff --git a/goofy-client/apps/goofy-e2e/src/support/pre-ea-report-merge.ts b/goofy-client/apps/goofy-e2e/src/support/pre-ea-report-merge.ts
deleted file mode 100644
index 08d5f533e0..0000000000
--- a/goofy-client/apps/goofy-e2e/src/support/pre-ea-report-merge.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-const fs = require('fs');
-
-if (fs.existsSync(`apps/goofy-e2e/reports_einheitlicher-ansprechpartner/mochawesome-report/.jsons`)) {
-	fs.rename(`apps/goofy-e2e/reports_einheitlicher-ansprechpartner/mochawesome-report/.jsons`, `apps/goofy-e2e/reports_einheitlicher-ansprechpartner/mochawesome-report/jsons`, () => { })
-}
\ No newline at end of file
diff --git a/goofy-client/apps/goofy-e2e/src/support/pre-merge.ts b/goofy-client/apps/goofy-e2e/src/support/pre-merge.ts
deleted file mode 100644
index 6ea856303c..0000000000
--- a/goofy-client/apps/goofy-e2e/src/support/pre-merge.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-const fs = require('fs');
-
-if (fs.existsSync(`apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}/mochawesome-report/.jsons`)) {
-	fs.rename(`apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}/mochawesome-report/.jsons`, `apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}/mochawesome-report/jsons`, () => { })
-}
\ No newline at end of file
diff --git a/goofy-client/apps/goofy-e2e/start-e2e-environment.sh b/goofy-client/apps/goofy-e2e/start-e2e-environment.sh
index 1a90b7fb22..092840b925 100755
--- a/goofy-client/apps/goofy-e2e/start-e2e-environment.sh
+++ b/goofy-client/apps/goofy-e2e/start-e2e-environment.sh
@@ -49,7 +49,7 @@ SPRING_PROFILE=dev,e2e,initSearchIndex docker compose -f ${SCRIPT_DIR}/docker-co
 echo
 
 waitForInitSearchIndex() {
-	(docker compose -f ${SCRIPT_DIR}/docker-compose.yml logs | fgrep -q 'Successful filled up index - exiting')
+	(docker compose -f ${SCRIPT_DIR}/docker-compose.yml logs | grep -F -q 'Successful filled up index - exiting')
 }
 
 echo "Waiting for Pluto to finish search index initialisation."
diff --git a/goofy-client/package.json b/goofy-client/package.json
index 5d0c25a68e..0eccd78784 100644
--- a/goofy-client/package.json
+++ b/goofy-client/package.json
@@ -39,12 +39,6 @@
 		"cypress:version": "npx cypress version",
 		"cypress:install": "npx cypress install",
 		"cypress:open": "npx cypress open --project apps/goofy-e2e",
-		"cypress:ci-run": "npm run cypress:delete-old-reports --REPORT_FOLDER=${npm_config_report_folder} ; NO_COLOR=1 npm run cypress:run -- --config-file=${npm_config_config} ; test=$(echo \"$?\") ; npm run cypress:pre-merge --REPORT_FOLDER=${npm_config_report_folder} ; npm run cypress:generate-report --REPORT_FOLDER=${npm_config_report_folder} ; exit $test",
-		"cypress:delete-old-reports": "REPORT_FOLDER=${npm_config_report_folder} node apps/goofy-e2e/src/support/delete-old-reports.ts",
-		"cypress:pre-merge": "REPORT_FOLDER=${npm_config_report_folder} node apps/goofy-e2e/src/support/pre-merge.ts",
-		"cypress:generate-report": "npm run cypress:merge-report --REPORT_FOLDER=${npm_config_report_folder} ; npm run cypress:generate-html --REPORT_FOLDER=${npm_config_report_folder}",
-		"cypress:merge-report": "mochawesome-merge apps/goofy-e2e/reports/${npm_config_report_folder}/mochawesome-report/**/*.json > apps/goofy-e2e/reports/${npm_config_report_folder}/report.json",
-		"cypress:generate-html": "marge apps/goofy-e2e/reports/${npm_config_report_folder}/report.json -f report -o apps/goofy-e2e/reports/${npm_config_report_folder}",
 		"workspace-generator": "nx workspace-generator",
 		"sonar-scanner": "npm test -- --testResultsProcessor='jest-sonar-reporter' && sonar-scanner -Dsonar.host.url=https://sonarqube.ozg-sh.de/ -Dsonar.login=364c6e09430714838730a83f55d3369a7ffda0e9"
 	},
-- 
GitLab