Преглед на файлове

ajout de de couverture pour optmisation de tests

DESKTOP-SMCIPAV\falko преди 4 месеца
родител
ревизия
09c1f5f6a4
променени са 2 файла, в които са добавени 54 реда и са изтрити 14 реда
  1. 42 11
      Jenkinsfile
  2. 12 3
      angular-client/karma.conf.js

+ 42 - 11
Jenkinsfile

@@ -40,7 +40,7 @@ pipeline {
         }
 
         // 2. Installation des dépendances et tests unitaires Angular
-   stage('Unit Tests') {
+  stage('Unit Tests') {
   agent {
     docker {
       image 'cypress/browsers:node14.17.0-chrome91-ff89'
@@ -50,18 +50,49 @@ pipeline {
   environment {
     CHROME_BIN = '/usr/bin/google-chrome'
     NODE_OPTIONS = '--max-old-space-size=4096'
+    DISPLAY = ':99'
   }
   steps {
     dir('angular-client') {
       sh '''
+        echo "🔧 Configuration de l'environnement"
+        export DISPLAY=:99
+        Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
+
         echo "✅ Installation des dépendances"
         npm install --legacy-peer-deps
 
-        echo "🚀 Lancement des tests"
-        npx ng test --no-watch --no-progress --browsers=ChromeHeadlessCI
+        echo "🧪 Vérification de Chrome"
+        google-chrome --version
+
+        echo "🚀 Lancement des tests unitaires avec couverture"
+        npx ng test --no-watch --no-progress --browsers=ChromeHeadlessCI --code-coverage
       '''
     }
   }
+  post {
+    always {
+      // Publier le rapport de couverture HTML
+      publishHTML([
+        allowMissing: false,
+        alwaysLinkToLastBuild: false,
+        keepAll: true,
+        reportDir: 'angular-client/coverage/fatboar-burger',
+        reportFiles: 'index.html',
+        reportName: 'Code Coverage Report',
+        reportTitles: 'Coverage Report'
+      ])
+      
+      // Archiver les artefacts de couverture
+      archiveArtifacts artifacts: 'angular-client/coverage/**/*', fingerprint: true
+    }
+    failure {
+      echo '❌ Tests échoués - Vérifiez les logs ci-dessus'
+    }
+    success {
+      echo '✅ Tests réussis avec couverture générée'
+    }
+  }
 }
         // 3. Analyse SonarQube pour la qualité du code
         // stage('SonarQube Analysis') {
@@ -92,14 +123,14 @@ pipeline {
         // }
 
         // 5. Build et déploiement des services
-        stage('Build & Deploy') {
-            steps {
-                sh """
-                    docker-compose -f ${env.COMPOSE_FILE} build --no-cache
-                    docker-compose -f ${env.COMPOSE_FILE} up -d --force-recreate --remove-orphans
-                """
-            }
-        }
+        // stage('Build & Deploy') {
+        //     steps {
+        //         sh """
+        //             docker-compose -f ${env.COMPOSE_FILE} build --no-cache
+        //             docker-compose -f ${env.COMPOSE_FILE} up -d --force-recreate --remove-orphans
+        //         """
+        //     }
+        // }
 
         // 6. Lancement des backups après déploiement
         stage('Backup') {

+ 12 - 3
angular-client/karma.conf.js

@@ -17,10 +17,19 @@ module.exports = function (config) {
     },
     coverageIstanbulReporter: {
       dir: require('path').join(__dirname, './coverage/fatboar-burger'),
-      reports: ['html', 'lcovonly', 'text-summary'],
-      fixWebpackSourcePaths: true
+      reports: ['html', 'lcovonly', 'text-summary', 'cobertura'], // Ajout du format cobertura pour Jenkins
+      fixWebpackSourcePaths: true,
+      // Seuils de couverture (optionnel - décommentez si vous voulez des seuils minimum)
+      // thresholds: {
+      //   global: {
+      //     statements: 80,
+      //     branches: 75,
+      //     functions: 80,
+      //     lines: 80
+      //   }
+      // }
     },
-    reporters: ['progress', 'kjhtml'],
+    reporters: ['progress', 'kjhtml', 'coverage-istanbul'], // Ajout du reporter coverage-istanbul
     port: 9876,
     colors: true,
     logLevel: config.LOG_INFO,