Как создать консолидированный отчет при параллельном выполнении сценариев тестирования транспортира? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть 15 спецификаций в моем наборе транспортира. Я хочу запустить эти сценарии параллельно и хочу создать консолидированный отчет из этого выполнения.

Мне удалось запустить сценарии параллельно, добавив тег «shardTestFiles: true» в файл конфигурации. Но я не смог получить консолидированный отчет (получение результата только что выполненной спецификации только в отчете).

Я ищу решение для создания консолидированного отчета при параллельном выполнении сценариев транспортира.

Примечание: Использование Jasmine Reporter для создания отчета.

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Я следовал подходу, указанному ниже, чтобы удовлетворить мою потребность.

  1. Я сохранил код ниже в разделе onPrepare файла конфигурации. Это создаст отчет для каждой спецификации.

    onPrepare() {
    return new Promise(function (fulfill, reject) {
            browser.getCapabilities().then(function (value) {
              reportName = value.get('webdriver.remote.sessionid') + '_' + value.get('browserName') + '_' + Math.floor(Math.random()*1E16); // eslint-disable-line
              jasmine.getEnv().addReporter(
                new Jasmine2HtmlReporter({
                  savePath: 'e2e/Results',
                  screenshotsFolder: 'images',
                  takeScreenshotsOnlyOnFailures: true,
                  consolidate: true,
                  consolidateAll: true,
                  cleanDestination: false,
                  fileName: "my-report.html",
                  fileName: "regression-test-report.html",
                  fileNamePrefix: reportName,
                })
              );
              fulfill();
            })
          });
        });
    },
    

    И сохранил следующий код в разделе afterLaunch, который объединит все отчеты, сгенерированные в разделе onPrepare:

    afterLaunch: function afterLaunch() {
        var fs = require('fs');
        var output = '';
        fs.readdirSync('e2e/Results/').forEach(function(file){
          if(!(fs.lstatSync('e2e/Results/' + file).isDirectory()))
            output = output + fs.readFileSync('e2e/Results/' + file);
        });
        fs.writeFileSync('e2e/Results/RegressionTestReport.html', output, 'utf8');
      }
    

Проблема, возникшая после указанной выше конфигурации: Мне удалось консолидировать отчет путем параллельного выполнения, записав указанную выше конфигурацию в файл конфигурации. Но, если я запускаю сценарий во второй раз, отчет также объединит это (что я не хочу делать). Создание тэга 'cleanDestination: true' удаляло каждую спецификацию, как только ее выполнение заканчивалось. Итак, это не сработало.

Как я решил эту проблему? : Я запускал скрипт в jenkins, используя скрипт оболочки. Итак, я написал команду оболочки 'rm -fr e2e / Results', чтобы удалить папку отчета перед выполнением скрипта. Таким образом, отчет будет удаляться каждый раз, и будет генерироваться новый консолидированный отчет с последним исполнением.

0 голосов
/ 21 июня 2019

Вы можете использовать этот репортер и предоставить возможность для консолидации результатов вашего теста. Например:

 var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');

    jasmine.getEnv().addReporter(
        new Jasmine2HtmlReporter({
            savePath: 'testReports/',
            screenshotsFolder: 'images',
            takeScreenshotsOnlyOnFailures: true,
            consolidateAll: true,
            consolidate: true,
            cleanDestination: false
        }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...