From 06eb1bc8cb2d2332ba53f82ce7de9e0654fab26b Mon Sep 17 00:00:00 2001
From: alexm <alexm@verdnatura.es>
Date: Wed, 19 Feb 2025 12:14:57 +0100
Subject: [PATCH] ci: refs #6695 refactor Cypress setup in Jenkinsfile and
 replace local docker-compose with new configuration

---
 Jenkinsfile                                   | 79 +++++--------------
 docker-compose.e2e.local.yml                  | 29 -------
 .../cypress/docker-compose.e2e.yml            |  9 ---
 3 files changed, 19 insertions(+), 98 deletions(-)
 delete mode 100644 docker-compose.e2e.local.yml
 rename docker-compose.e2e.yml => test/cypress/docker-compose.e2e.yml (64%)

diff --git a/Jenkinsfile b/Jenkinsfile
index d9ee8537185..39313092f24 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -93,49 +93,27 @@ pipeline {
                 NODE_ENV = ""
                 CREDENTIALS = credentials('docker-registry')
             }
-            stages {
-                stage('Setup') {
-                    steps {
-                        script {
-                            def packageJson = readJSON file: 'package.json'
-                            env.VERSION = "${packageJson.version}-build${env.BUILD_ID}"
-                            env.NETWORK = "${PROJECT_NAME}-${env.BRANCH_NAME}-${env.BUILD_ID}"
-                            cleanDockerE2E()
-                            // sh "pnpm exec cypress install"
-                            // sh "docker build -t cypress-setup:latest -f ./test/cypress/Dockerfile ."
-                            docker.build('cypress-setup:latest', "-f ./test/cypress/Dockerfile .")
-                        }
+            steps {
+                script {
+                    def packageJson = readJSON file: 'package.json'
+                    env.VERSION = "${packageJson.version}-build${env.BUILD_ID}"
+                    env.NETWORK = "${PROJECT_NAME}-${env.BRANCH_NAME}-${env.BUILD_ID}"
+                    docker.build('cypress-setup:latest', "-f ./test/cypress/Dockerfile .")
 
+                    sh "docker-compose -p ${env.NETWORK} -f test/cypress/docker-compose.e2e.yml up -d"
+                    def networkLowerCase = env.NETWORK.toLowerCase()
+                    def image = docker.image('cypress-setup', , "-f ./test/cypress/Dockerfile .")
+                    image.inside("""
+                        --network ${networkLowerCase}_default \
+                        -e TZ=Europe/Madrid \
+                        -e DOCKER=true \
+                        -e CI=true \
+                        -v .:/app \
+                        -w /app \
+                    """) {
+                        sh 'pnpm exec cypress run --browser chromium'
                     }
-                }
-                stage('Run') {
-                    steps {
-                        script {
-                            sh "docker-compose -p ${env.NETWORK} -f docker-compose.e2e.yml up -d"
-                            def networkLowerCase = env.NETWORK.toLowerCase()
-                            sh """
-                                docker run --rm --name ${env.NETWORK}_cypress \
-                                    --network ${networkLowerCase}_default \
-                                    -e TZ=Europe/Madrid \
-                                    -e DOCKER=true \
-                                    -e CI=true \
-                                    -v .:/app \
-                                    -w /app \
-                                    cypress-setup \
-                                    pnpm exec cypress run --browser chromium
-                            """
-                            // def containerId = sh(script: "docker ps -q -f name=${env.NETWORK}_cypress", returnStdout: true).trim()
-
-                            // echo "Container ID: ${containerId}"
-
-                            // checkErrors(containerId)
-                        }
-                    }
-                }
-            }
-            post {
-                always {
-                    cleanDockerE2E()
+                    sh "docker-compose -p ${env.NETWORK} -f test/cypress/docker-compose.e2e.yml down"
                 }
             }
         }
@@ -175,22 +153,3 @@ pipeline {
         }
     }
 }
-
-def cleanDockerE2E() {
-    script {
-        sh "docker-compose -p ${env.NETWORK} -f docker-compose.e2e.yml down || true"
-        sh "docker rm -f ${env.NETWORK}_cypress || true"
-    }
-}
-
-
-def checkErrors(String containerId) {
-    echo "Container ID: ${containerId}"
-    def exitCode = sh(script: "docker inspect -f '{{.State.ExitCode}}' ${containerId}", returnStdout: true).trim()
-    echo "Exit code: ${exitCode}"
-    if (exitCode != '0') {
-        def logs = sh(script: "docker logs ${containerId}", returnStdout: true).trim()
-        error("Cypress E2E tests failed with exit code: ${exitCode}\nLogs:\n${logs}")
-    }
-}
-
diff --git a/docker-compose.e2e.local.yml b/docker-compose.e2e.local.yml
deleted file mode 100644
index c0bb149b4d0..00000000000
--- a/docker-compose.e2e.local.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-version: '3.7'
-services:
-    back:
-        image: registry.verdnatura.es/salix-back:dev
-        volumes:
-            - ./test/cypress/storage:/salix/storage
-            - ./test/cypress/back/datasources.json:/salix/loopback/server/datasources.json
-        depends_on:
-            - vn-database
-    front:
-        image: alexmorenovn/vndev:latest
-        command: quasar dev
-        volumes:
-            - .:/app
-        working_dir: /app
-        environment:
-            - TZ=Europe/Madrid
-            - DOCKER=true
-    e2e:
-        image: cypress-setup:latest
-        command: sh -c "while [ ! -d node_modules/cypress ]; do sleep 1; done && pnpm exec cypress run --browser chromium --spec ${CYPRESS_SPEC:?}"
-        environment:
-            - TZ=Europe/Madrid
-            - DOCKER=true
-        volumes:
-            - .:/app
-        working_dir: /app
-    vn-database:
-        image: registry.verdnatura.es/salix-db:dev
diff --git a/docker-compose.e2e.yml b/test/cypress/docker-compose.e2e.yml
similarity index 64%
rename from docker-compose.e2e.yml
rename to test/cypress/docker-compose.e2e.yml
index 53b80a78d18..0eeb676f1e4 100644
--- a/docker-compose.e2e.yml
+++ b/test/cypress/docker-compose.e2e.yml
@@ -16,14 +16,5 @@ services:
         environment:
             - TZ=Europe/Madrid
             - DOCKER=true
-    # e2e:
-    #     image: cypress-setup:latest
-    #     command: sh -c "while [ ! -d node_modules/cypress ]; do sleep 1; done && pnpm exec cypress run --browser chromium"
-    #     environment:
-    #         - TZ=Europe/Madrid
-    #         - DOCKER=true
-    #     volumes:
-    #         - .:/app
-    #     working_dir: /app
     vn-database:
         image: registry.verdnatura.es/salix-db:dev