Fermer

septembre 27, 2023

Rapports personnalisés de Playwright (Nodejs) : une plongée approfondie dans l’analyse de réussite/échec des tests pour les résultats des tests

Rapports personnalisés de Playwright (Nodejs) : une plongée approfondie dans l’analyse de réussite/échec des tests pour les résultats des tests


Nous explorerons Playwright avec les rapports de tests personnalisés Node.js et, à l’aide d’exemples de code, démontrerons comment ces rapports peuvent être la clé pour obtenir des informations précieuses à partir des résultats de tests, améliorant ainsi la qualité de vos résultats de tests.

Pourquoi l’analyse de réussite/échec des tests est importante

Avant de plonger dans les aspects pratiques, comprenons l’importance de l’analyse de réussite/échec des tests. Dans les tests automatisés, le résultat d’un test est classé comme « réussite » (exécution réussie) ou « échec » (un problème survenu lors de l’exécution et peut être dépassé ou ignoré). Ces verdicts offrent des informations vitales qui conduisent à l’amélioration de la qualité des logiciels.

Introduction aux rapports personnalisés Playwright

Playwright, un outil polyvalent et convivial pour les développeurs, offre des fonctionnalités de reporting personnalisées qui vous permettent d’extraire et d’analyser les données de test de manière structurée. Ces rapports sont bien plus que de simples résumés ; ils sont votre arme secrète pour prendre des décisions éclairées.

Principales fonctionnalités des rapports personnalisés sur les dramaturges

Journaux de tests détaillés : Les rapports personnalisés de Playwright proposent des journaux exhaustifs pour chaque exécution de test, identifiant l’étape exacte à laquelle un échec s’est produit.
Métriques personnalisées : Définissez des métriques personnalisées pertinentes pour votre application pour suivre des indicateurs de performance clés (KPI) spécifiques pendant les tests.

Analyser les résultats des tests avec un exemple de code

Examinons l’aspect pratique de l’utilisation des rapports personnalisés Playwright avec un exemple de code. Nous présenterons un scénario de test simple pour démontrer la puissance de ces rapports.

Create a js file with name - 'customerReportFilePath.js'

"use strict";
Object.defineProperty(exports, "__esModule", { value: true })
import { writeFileSync } from "fs";
var JSONSummaryReporter = /** @class */ (function () {
class JSONSummaryReporter {
           constructor () {
           this.executionDurationInMS = -1;
           this.testStartedAt = 0;
           this.passTests = [];
           this.skipTests = [];
           this.failTests = [];
           this.interruptedTests = [];
           this.timedOutTests = [];
           this.testStatus="unknown";
           this.warned = [];
}
onBegin() {
           this.testStartedAt = Date.now();
}
onTestEnd(test, result) {
     let testTitle = [];
     let testFileName = [];
     let clean = true;
         for (let index = 0, a = test.titlePath(); index < a.length; index++) {
            let fileName = a[index];
              if (fileName === '' && clean)
               continue;
              clean = false;
           testTitle.push(fileName);
              if (fileName.includes('spec.js')) {
                  testFileName.push(fileName);
               }
           }
// This will publish the file name + test title + status + + line number test begins on and column
       let testDetails = "".concat(testFileName[0], " : ").concat(test.title, " : ", result.status, " :                               ").concat(test.location.line, " : ").concat(test.location.column)
// Using the t variable in the push will push a full test test name + test description
      let t = testTitle.join(' > ');
      let status = !['passed', 'skipped', 'interrupted'].includes(result.status) && t.includes('@warn')
      ? 'warned'
      : result.status;
      this[status].push(testDetails);
  }
onEnd(result) {
    var _this = this;
    this.executionDurationInMS = Date.now() - this.testStartedAt;
    this.testStatus = result.status;
    // removing duplicate tests from pass tests array
    this.passTests = this.passTests.filter(function (element, index) {
    return _this.passTests.indexOf(element) === index;
});
// removing duplicate and flakey (pass on a retry) tests from the fail tests array
   this.failTests = this.failTests.filter(function (element, index) {
     if (!_this.passTests.includes(element))
        return _this.failTests.indexOf(element) === index;
     });
     writeFileSync(`./summary.json`, JSON.stringify(this, null, ' '));
    }
  }
   return JSONSummaryReporter;
}());
const _default = JSONSummaryReporter;
export { _default as default };

Dans le fichier playright.config, ajoutez la ligne de code ci-dessous :

         reporter :['./customerReportFilepath.js'] // js file path 

Une fois l’exécution du test terminée, il générera un fichier json ‘résumé.json’ avec les résultats d’exécution, la réussite/l’échec des tests et l’analyse de la durée d’exécution. De même, nous pouvons obtenir plus de détails sur les tests en fonction des exigences de l’application.

Result in 'summary.json' file :

{
     "executionDurationInMS": 4157,
      "passTests": [
      "DemoPassTest.spec.js : Demo test : passed : 20 : 9"
       ],
      "skipTests": [
       ],
       "failTests": [
        "DemoFailTest.spec.js : Demo Fail test : failed : 10 : 5"
        ],
       "interruptedTests": [
        ],
        "warned": [],
        "timedOutTests": [],
        "testStatus": "failed",
        "testStartedAt": 169467477831
     }

Conclusion

Playwright Custom Reports fournit les résultats des tests automatisés. Ils éclairent le chemin vers des informations de réussite/échec des tests, vous aidant à naviguer vers des résultats de test améliorés. En comprenant l’importance de l’analyse de l’exécution des tests et en exploitant les capacités des rapports personnalisés Playwright, vous pouvez améliorer votre stratégie de test.

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link