From 6c997af124dcfcac710911f7349b3c458e70c63d Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Thu, 18 Jan 2024 15:38:54 +0000
Subject: [PATCH] feat: optimise start of wdio after starting server

Refs #647
---
 package.json             |  4 ++--
 scripts/run_e2e-tests.sh | 25 +++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 2 deletions(-)
 create mode 100644 scripts/run_e2e-tests.sh

diff --git a/package.json b/package.json
index 801b67750..41c882643 100644
--- a/package.json
+++ b/package.json
@@ -11,8 +11,8 @@
     "ng": "cd . && \"node_modules/.bin/ng\"",
     "postinstall": "./node_modules/.bin/webdriver-manager update --gecko=false --versions.chrome=107.0.5304.110",
     "lint": "eslint -c .eslintrc.js --ext .ts src",
-    "e2e": "node scripts/check-translations.js && { npm run start & sleep 180 ; } && ./node_modules/.bin/wdio run ./wdio.conf.ts",
-    "e2equick": "node scripts/check-translations.js && ./node_modules/.bin/wdio run ./wdio.conf.ts",
+    "e2e": "node scripts/check-translations.js && bash scripts/run_e2e-tests.sh",
+    "e2equick": "./node_modules/.bin/wdio run ./wdio.conf.ts",
     "monkeytest": "npm run ng -- e2e --dev-server-target= --suite=monkeyTest --webdriver-update=false",
     "mkdocs": "bash scripts/prepare_mkdocs.sh; cd build; python3 -m mkdocs build -f mkdocs-fr.yml && python3 -m mkdocs build -f mkdocs-en.yml && cd .. && node scripts/mkdocs-postprocess.js",
     "mkdocs2pdf": "node scripts/extract-nghyd-version.js build/cassiopee_version.tex && python3 scripts/mkdocs2pdf.py && node scripts/mkdocs2pdf-postprocess.js && bash scripts/check-pdf-docs.sh",
diff --git a/scripts/run_e2e-tests.sh b/scripts/run_e2e-tests.sh
new file mode 100644
index 000000000..647c64bb3
--- /dev/null
+++ b/scripts/run_e2e-tests.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+# Inspired from https://stackoverflow.com/a/25042323/5300212
+# How to run e2e test after serving the app
+
+# Start the web app
+npm start &
+NG_SERVE_PID=$!
+
+echo "**************************************************************************"
+echo "Just in case... Use kill -9 -${NG_SERVE_PID} to kill the server if something goes wrong"
+echo "**************************************************************************"
+
+# Wait for http response 200 on port 4200
+response=0
+while [ "$response" != "200" ]; do
+    response=$(curl --write-out '%{http_code}' --silent --output /dev/null 127.0.0.1:4200 || echo 0)
+    sleep 5;
+done
+
+# Run wdio
+npm run e2equick
+
+# Cleanup daemon processes
+kill -9 -$NG_SERVE_PID
-- 
GitLab