//- Copyright (c) 2019 AT&T Intellectual Property. # //- # //- Licensed under the Apache License, Version 2.0 (the "License"); # //- you may not use this file except in compliance with the License. # //- You may obtain a copy of the License at # //- # //- http://www.apache.org/licenses/LICENSE-2.0 # //- # //- Unless required by applicable law or agreed to in writing, software # //- distributed under the License is distributed on an "AS IS" BASIS, # //- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # //- See the License for the specific language governing permissions and # //- limitations under the License. # //- ############################################################################# div([@routerTransition], style="margin-top: -15px") .row.fullWidth.mb-4(style="position:relative") div.pull-tab div.arrow mat-card#canvas-card(style="width: 100%; resize:vertical; overflow: hidden") mat-card-content#canvas(style="height: 100%") div(style="position: absolute; bottom: 5px; left: 10px") div.small.text-muted Test Definition: {{ testResult?.historicTestDefinition?.testName }} div.small.text-muted Version: {{ testResult?.historicTestDefinition?.bpmnInstances[0]?.version }} div(style="position: absolute; bottom: 5px; right: 25px") div.small.text-muted(*ngIf="processState") | Status: {{ processState }} .row.mb-4 .col .pull-left h3 {{ testResult?.historicTestInstance?.testInstanceName }} Execution Log div {{ testResult?.historicTestInstance?.testInstanceDescription }} button.mr-2.pull-right(color="accent", mat-raised-button, (click)="refreshAllData()") Refresh i.fa.fa-2x.fa-fw.fa-refresh.fast-spin(*ngIf="spin") button.mr-2.pull-right(*ngIf="processState && processState == 'Running'", color="warn", mat-raised-button, (click)="cancelExecution()") Cancel Execution .row.mb-4 .col-12 mat-tab-group([selectedIndex]="0", dinamicHeight, color="accent", backgroundColor="primary") mat-tab(label="Overview") .col-12.mt-2 .row.mb-4(style="text-align:center") .col b Test Result: div {{ testResult?.testResult }} .col b Start Time: div {{ testResult?.startTime }} .col b End Time: div {{ testResult?.endTime }} .col b Total Time: div {{ testResult?.totalTime }} .col b Date Executed: div {{ testResult?.date }} .col b Executed By: div {{ testResult?.historicEmail }} hr .row.mb-4(*ngIf="testResult?.testResultMessage") .col-12 h5 Test Result Message | {{ testResult?.testResultMessage }} .row .col-12 h5 Test Details //- table(datatable, [dtOptions]="dtOptions", class="row-border hover") //- thead //- tr //- th(*ngFor="let column of columns") {{ column.title }} //- tbody //- tr(*ngFor="let key of data") //- td(*ngFor="let column of columns") {{ key[column.data] }} ngx-json-viewer(*ngIf="testResult && testResult.testDetails != {}", [json]="testResult.testDetails", style="font-size: 1.3em") //- div(*ngIf="testResult && testResult.testDetails != {}", [innerHTML]="json2html(testResult.testDetails)") //- div(*ngIf="testResult") {{ json2html(testResult.testDetails) != '' ? '' : 'No test details were set during execution.' }} mat-tab(*ngIf="testResult?.testInstanceResults.length > 0", label="Test Instance Results") .col-12.mt-2 .row .col-3 h5 Test Instances mat-list mat-list-item(style="cursor: pointer", *ngFor="let key of objectKeys(instanceDataSource); last as last; first as first", (click)="selectTestInstance(key)") h5 {{ instanceDataSource[key][0].historicTestInstance.testInstanceName }} mat-icon([hidden]="selectedTestInstance != key") keyboard_arrow_left mat-divider([inset]="true", *ngIf="!last") mat-divider(vertical) .col-9 mat-accordion([multi]="true") mat-expansion-panel(*ngFor="let element of instanceDataSource[selectedTestInstance]; let i = index;") mat-expansion-panel-header() mat-panel-title {{ '#' + (i + 1)}} mat-panel-description | {{ element.testResult }} .col-12 .row(style="text-align:center") .col b Test Result: div {{ element.testResult }} .col b Start Time: div {{ element.startTime }} .col b End Time: div {{ element.endTime }} .col b Total Time: div {{ element.totalTime }} .col b Date Executed: div {{ element.date }} hr div(style="float:right") button(mat-raised-button, color="primary", [routerLink]="['/control-panel']", [queryParams]="{id: element._id}") Full Execution .row.mb-4(*ngIf="element.testResultMessage") .col-12 h5 Test Result Message | {{ element.testResultMessage }} .row .col-12 h5 Test Details ngx-json-viewer(*ngIf="element && element.testDetails != {}", [json]="element.testDetails") //- div(*ngIf="element && element.testDetails != {}", [innerHTML]="json2html(element.testDetails)") //- div(*ngIf="testResult") {{ json2html(element.testDetails) != '' ? '' : 'No test details were set during execution.' }} mat-tab(*ngIf="testResult?.testHeadResults.length > 0", label="Test Head Results") .col-12.mt-2 .row .col-3 h5 Test Heads mat-list mat-list-item(style="cursor: pointer", *ngFor="let key of objectKeys(dataSource); last as last; first as first", (click)="selectTestHead(key)") div h5 {{ dataSource[key][0].testHeadName }} div.small(style="margin-top:-11px;") {{ dataSource[key][0].bpmnVthTaskId }} mat-icon([hidden]="selectedTestHead != key") keyboard_arrow_left mat-divider([inset]="true", *ngIf="!last") mat-divider(vertical) .col-9 div(*ngFor="let testHead of testHeads") mat-accordion([multi]="true", *ngIf="selectedTestHead == testHead.testHeadId + testHead.bpmnVthTaskId") mat-expansion-panel(*ngFor="let element of dataSource[testHead.testHeadId + testHead.bpmnVthTaskId]; let i = index;") mat-expansion-panel-header() mat-panel-title {{ '#' + (i + 1)}} mat-panel-description | {{ element.totalTime }} ngx-json-viewer([json]="element.testHeadRequestResponse") app-robot-report(*ngIf="element.testHeadResponse", [response]="element.testHeadResponse") //- (*ngFor="let testHead of testHeads") //- mat-card //- mat-card-header.COMPLETED-dash //- mat-card-title.pull-left {{testHead.testHeadName}} Results //- .pull-right {{testHead.bpmnVthTaskId}} //- mat-card-content //- table(mat-table, multiTemplateDataRows, [dataSource]="dataSource[testHead.testHeadId + testHead.bpmnVthTaskId]") //- ng-container(matColumnDef="startTime") //- th(mat-header-cell, *matHeaderCellDef) Start Time //- td(mat-cell, *matCellDef="let element") {{ element.startTime}} //- ng-container(matColumnDef="endTime") //- th(mat-header-cell, *matHeaderCellDef) End Time //- td(mat-cell, *matCellDef="let element") {{ element.endTime }} //- ng-container(matColumnDef="totalTime") //- th(mat-header-cell, *matHeaderCellDef) Total Time //- td(mat-cell, *matCellDef="let element") {{ element.totalTime }} //- ng-container(matColumnDef="expandedDetail") //- td(mat-cell, style="padding:0px", *matCellDef="let element; let i = dataIndex", [attr.colspan]="displayedColumns.length") //- div([@detailExpand]="(testHead.testHeadId + testHead.bpmnVthTaskId + i) == expandedElement ? 'expanded' : 'collapsed'") //- codemirror([config]="codeConfig", [value]='element.testHeadResponse', name="testHeadResult") //- app-robot-report(*ngIf="element.testHeadResponse", [response]="element.testHeadResponse") //- tr(mat-header-row, *matHeaderRowDef="displayedColumns") //- tr.example-element-row(mat-row, *matRowDef="let element; columns: displayedColumns; let i = dataIndex", [class.example-expanded-row]="expandedElement === element", (click)="expand(testHead.testHeadId + testHead.bpmnVthTaskId + i)") //- tr.example-detail-row(mat-row, *matRowDef="let row; columns: ['expandedDetail']") mat-tab(label="Task Log", *ngIf="taskLog != ''") .col-12.mt-2 h5 Task Logs div {{ taskLog }} mat-tab(label="Test Parameters", *ngIf="testResult?.historicTestInstance") .col-12.mt-2 h5 Test Data ngx-json-viewer([json]="testResult.historicTestInstance.testData", [expanded]="false", style="font-size: 1.3em") //- div([innerHTML]="json2html(testResult.historicTestInstance.testData, 1)") //- | {{ testResult.historicTestInstance.testData ? '' : 'No test data set.'}} h5.mt-1 Test Head Input ngx-json-viewer([json]="testResult.historicTestInstance.vthInput", [expanded]="false", style="font-size: 1.3em") //- div([innerHTML]="json2html(testResult.historicTestInstance.vthInput, 1)") //- | {{ testResult.historicTestInstance.vthInput ? '' : 'No test head input set.'}} mat-tab(*ngIf="executionJobLogDataSource != undefined", label="Execution Job Log") .col-12.mt-2 .row .col-3 h5 Execution Job Log mat-list mat-list-item(style="cursor: pointer", *ngFor="let key of objectKeys(executionJobLogDataSource); last as last; first as first", (click)="selectExecutionJobLog(key)") h5 {{ executionJobLogDataSource[key][0].activityId }} mat-icon([hidden]="selectedExecutionJobLog != key") keyboard_arrow_left mat-divider([inset]="true", *ngIf="!last") mat-divider(vertical) .col-9 mat-accordion([multi]="true") mat-expansion-panel(*ngFor="let element of executionJobLogDataSource[selectedExecutionJobLog]; let i = index;") mat-expansion-panel-header() mat-panel-title {{ '#' + (i + 1)}} mat-panel-description | {{ element.id }} ngx-json-viewer([json]="element") //- div([innerHTML]="json2html(element)") //- | {{ element ? '' : 'No job log' }} mat-tab(*ngIf="executionExternalTaskLogDataSource != undefined", label="Execution External Task Log") .col-12.mt-2 .row .col-3 h5 Execution External Task Log mat-list mat-list-item(style="cursor: pointer", *ngFor="let key of objectKeys(executionExternalTaskLogDataSource); last as last; first as first", (click)="selectExecutionExternalTaskLog(key)") h5 {{ executionExternalTaskLogDataSource[key][0].activityId }} mat-icon([hidden]="selectedExecutionExternalTaskLog != key") keyboard_arrow_left mat-divider([inset]="true", *ngIf="!last") mat-divider(vertical) .col-9 mat-accordion([multi]="true") mat-expansion-panel(*ngFor="let element of executionExternalTaskLogDataSource[selectedExecutionExternalTaskLog]; let i = index;") mat-expansion-panel-header() mat-panel-title {{ '#' + (i + 1)}} mat-panel-description | {{ element.id }} ngx-json-viewer([json]="element") //- div([innerHTML]="json2html(element)") //- | {{ element ? '' : 'No external task log' }} mat-tab(*ngIf="executionVariablesDataSource != undefined", label="Execution Variables") .col-12.mt-2 .row .col-3 h5 Execution Variables mat-list mat-list-item(style="cursor: pointer", *ngFor="let key of objectKeys(executionVariablesDataSource); last as last; first as first", (click)="selectExecutionVariable(key)") h5 {{ executionVariablesDataSource[key][0].variableName }} mat-icon([hidden]="selectedExecutionVariable != key") keyboard_arrow_left mat-divider([inset]="true", *ngIf="!last") mat-divider(vertical) .col-9 mat-accordion([multi]="true") mat-expansion-panel(*ngFor="let element of executionVariablesDataSource[selectedExecutionVariable]; let i = index;") mat-expansion-panel-header() mat-panel-title {{ '#' + (i + 1)}} mat-panel-description | {{ element.id }} ngx-json-viewer([json]="element") //- div([innerHTML]="json2html(element)") //- | {{ element ? '' : 'No variables' }}