diff --git a/chutney/ui/src/app/core/services/campaign-report.service.ts b/chutney/ui/src/app/core/services/campaign-report.service.ts index d3b07319d..7798a6a4c 100644 --- a/chutney/ui/src/app/core/services/campaign-report.service.ts +++ b/chutney/ui/src/app/core/services/campaign-report.service.ts @@ -54,8 +54,16 @@ export class CampaignReportService { pdf.setFontSize(pdfFontSize - 4); pdf.text(docRecap, 148, 30, { align: 'center' }); - const dataHeader = [["id", "Scenario", "Status", "error"]]; - const dataBody = report.scenarioExecutionReports.map(s => [s.scenarioId.toString(), s.testCaseTitle, s.status, s.error.toString()]); + let dataHeader, dataBody; + const hasDataset = report.scenarioExecutionReports.some(s => s.dataset); + if(hasDataset){ + dataHeader = [["id", "Scenario", "Status", "Dataset", "error"]]; + dataBody = report.scenarioExecutionReports.map(s => [s.scenarioId.toString(), s.testCaseTitle, s.status, s.dataset, s.error.toString()]); + } else { + dataHeader = [["id", "Scenario", "Status", "error"]]; + dataBody = report.scenarioExecutionReports.map(s => [s.scenarioId.toString(), s.testCaseTitle, s.status, s.error.toString()]); + } + pdf.setFontSize(pdfFontSize - 2); autoTable(pdf, { body: dataBody, @@ -83,17 +91,22 @@ export class CampaignReportService { const scenarioReportHeader = [["step", "Status", "error"]]; report.scenarioExecutionReports - .map(s => this.buildExecutionReport(s)) - .forEach((r, index) => { + .forEach((s, index) => { + let startY = 30; if (index){ pdf.addPage(); } + let r = this.buildExecutionReport(s); pdf.text(r.scenarioName, 15, 25); + if(s.dataset) { + pdf.text(`${this.translate.instant('scenarios.execution.dataset.title')}: ${s.dataset}`, 15, startY); + startY += 5; + } const scenarioReportBody = r.report.steps.map(step => [step.name, step.status, this.buildErrorMessage(step)]); autoTable(pdf, { body: scenarioReportBody, head: scenarioReportHeader, - startY: 30, + startY: startY, theme: 'striped', useCss: true, didParseCell(data) { diff --git a/chutney/ui/src/app/core/services/campaign.service.ts b/chutney/ui/src/app/core/services/campaign.service.ts index c7c59adf3..831125191 100644 --- a/chutney/ui/src/app/core/services/campaign.service.ts +++ b/chutney/ui/src/app/core/services/campaign.service.ts @@ -18,7 +18,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { environment } from '@env/environment'; -import { Campaign, CampaignExecutionFullReport, CampaignExecutionReport, ScenarioIndex } from '@model'; +import { Campaign, CampaignExecutionFullReport, CampaignExecutionReport, Execution, ScenarioIndex } from '@model'; import { HttpClient } from '@angular/common/http'; import { distinct } from '@shared/tools'; @@ -74,8 +74,13 @@ export class CampaignService { } findExecution(id: number): Observable { - return this.http.get(environment.backend + `${this.resourceUrl}/execution/${id}`) - ; + return this.http.get(`${environment.backend}${this.resourceUrl}/execution/${id}`) + .pipe( + map(campaignExecutionFullReport => ({ + ...campaignExecutionFullReport, + scenarioExecutionReports: Execution.deserializeExecutions(campaignExecutionFullReport.scenarioExecutionReports) + })) + ); } create(campaign: Campaign): Observable {