2 Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
8 http://www.apache.org/licenses/LICENSE-2.0
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
17 <div id="page-content" class="content" style="padding: 25px;">
19 .graph, .empty-graph {
20 border: 1px solid #ccc;
31 .pass-bar, .fail-bar {
37 border: 1px solid black;
41 <h1 class="heading-page">Get results by submission</h1>
43 <h2 class="heading-small">General matching string:</h2>
45 <input ng-model="filterGeneralMatch" type="text" placeholder="?"
46 style="margin-top: 5px; width: 260px;">
49 <h2 class="heading-small">Select Submission:</h2>
52 <select ng-model="selectedSubmission"
53 ng-init="selectedSubmission=submissionsForDisplay[0]"
54 ng-change="selectedSubmissionChange(selectedSubmission)"
55 ng-options="n for n in submissionsForDisplay | filter:filterGeneralMatch">
59 <div ng-show="loading">
60 <img src=" static/fusion/images/giphy.gif" />
63 <h2 class="heading-small"></h2>
64 <div ng-show="showResults">
65 <h2 class="heading-small">Select a blueprint layer of the
66 selected submission:</h2>
68 <select ng-model="selectedLayer" ng-init="resultsLayers[0]"
69 ng-change="selectedResultsLayerChange(selectedLayer)"
70 ng-options="n for n in resultsLayers">
74 <h2 class="heading-small">Select a test suite of the selected
75 (submission, layer) pair in order to be displayed:</h2>
77 <select ng-model="selectedTestSuiteName"
78 ng-init="resultsLayerTestSuitesNames[0]"
79 ng-change="selectedTestSuitesNameChange(selectedTestSuiteName)"
80 ng-options="n for n in resultsLayerTestSuitesNames">
88 ng-hide="selectedSubmission == null || selectedLayer == null || selectedTestSuiteName == null">
90 <h2 class="heading-small"></h2>
92 <h3 class="heading-small">
98 <p>Name: {{selectedRobotTestResult.name}}</p>
99 <p>Generated: {{selectedRobotTestResult.robot.generated}}</p>
100 <p>Generator: {{selectedRobotTestResult.robot.generator}}</p>
101 <p>Errors: {{selectedRobotTestResult.robot.errors}}</p>
103 <h2 class="heading-small"></h2>
104 <h3 class="heading-small">
105 <u>Test Statistics</u>
108 <table class="striped" cellspacing="0" cellpadding="10">
113 <th><p> Total statistics </p></th>
114 <th><p>Total </p></th>
115 <th><p>Pass </p></th>
116 <th><p>Fail </p></th>
117 <th><p>Pass / Fail </p></th>
122 ng-repeat="stat in selectedRobotTestResult.robot.statistics.total.stat">
123 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
125 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
126 (stat.fail * 1) + (stat.pass*1) }}</td>
127 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
129 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
131 <td style="padding-left: 10px; font-size: 15px; width: 13%;">
133 <div class="pass-bar"
134 ng-style="{ 'width': {{(100* stat.pass/((stat.fail * 1) + (stat.pass*1)) )| number:0}} + '%' }"
136 <div class="fail-bar"
137 ng-style="{ 'width': {{(100* stat.fail/((stat.fail * 1) + (stat.pass*1)) )| number:0}} + '%' }"
147 <h3 class="heading-small"></h3>
148 <table class="striped" cellspacing="0" cellpadding="10">
153 <th><p> Statistics by Tag </p></th>
154 <th><p>Total </p></th>
155 <th><p>Pass </p></th>
156 <th><p>Fail </p></th>
157 <th><p>Pass / Fail </p></th>
162 ng-repeat="stat in selectedRobotTestResult.robot.statistics.tag.stat">
163 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
165 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
166 (stat.fail * 1) + (stat.pass*1) }}</td>
167 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
169 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
171 <td style="padding-left: 10px; font-size: 15px; width: 13%;">
173 <div class="pass-bar"
174 ng-style="{ 'width': {{(100* stat.pass/((stat.fail * 1) + (stat.pass*1)) )| number:0}} + '%' }"
176 <div class="fail-bar"
177 ng-style="{ 'width': {{(100* stat.fail/((stat.fail * 1) + (stat.pass*1)) )| number:0}} + '%' }"
187 <h3 class="heading-small"></h3>
188 <table class="striped" cellspacing="0" cellpadding="10">
193 <th><p> Statistics by Suite </p></th>
194 <th><p>Total </p></th>
195 <th><p>Pass </p></th>
196 <th><p>Fail </p></th>
197 <th><p>Pass / Fail </p></th>
202 ng-repeat="stat in selectedRobotTestResult.robot.statistics.suite.stat">
203 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
205 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
206 (stat.fail * 1) + (stat.pass*1) }}</td>
207 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
209 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
211 <td style="padding-left: 10px; font-size: 15px; width: 13%;">
213 <div class="pass-bar"
214 ng-style="{ 'width': {{(100* stat.pass/((stat.fail * 1) + (stat.pass*1)) )| number:0}} + '%' }"
216 <div class="fail-bar"
217 ng-style="{ 'width': {{(100* stat.fail/((stat.fail * 1) + (stat.pass*1)) )| number:0}} + '%' }"
226 <h2 class="heading-small"></h2>
228 <h3 class="heading-small">
229 <a href="#" ng-click="showDetailsLog = ! showDetailsLog">Test
232 <div ng-show="showDetailsLog">
234 <p>Root Suite Full Name:
235 {{selectedRobotTestResult.robot.suite.name}}</p>
236 <p>Source: {{selectedRobotTestResult.robot.suite.source}}</p>
238 {{selectedRobotTestResult.robot.suite.status.status}}</p>
240 {{selectedRobotTestResult.robot.suite.status.starttime}}</p>
242 {{selectedRobotTestResult.robot.suite.status.endtime}}</p>
244 <h2 class="heading-small"></h2>
246 <p>Sub-suite Full Name:
247 {{selectedRobotTestResult.robot.suite.suite.name}}</p>
249 {{selectedRobotTestResult.robot.suite.suite.doc}}</p>
250 <p>Source: {{selectedRobotTestResult.robot.suite.suite.source}}</p>
252 {{selectedRobotTestResult.robot.suite.suite.status.status}}</p>
254 {{selectedRobotTestResult.robot.suite.suite.status.starttime}}</p>
256 {{selectedRobotTestResult.robot.suite.suite.status.endtime}}</p>
260 <h2 class="heading-small"></h2>
263 <h4 class="heading-small">Sub-suite Robot keywords</h4>
264 <li ng-repeat="kw in selectedRobotTestResult.robot.suite.suite.kw">
265 <h2 class="heading-small"></h2>
267 <a href="#" ng-click="showDetails = ! showDetails">
270 <div ng-show="showDetails">
271 <p>     Type: {{kw.type}}</p>
272 <p>     Library: {{kw.library}}</p>
273 <p>     Documentation: {{kw.doc}}</p>
274 <p>     Start time:
275 {{kw.status.starttime}}</p>
276 <p>     End time: {{kw.status.endtime}}</p>
277 <p>     Status: {{kw.status.status}}</p>
279 <p>     Used Robot keywords</p>
281 <li ng-repeat="kw2 in kw.kw">
283 <a href="#" ng-click="showDetails2 = ! showDetails2">    
286 <div ng-show="showDetails2">
287 <p>         Type:
289 <p>        
290 Library: {{kw2.library}}</p>
291 <p>        
292 Documentation: {{kw2.doc}}</p>
293 <p>         Start
294 time: {{kw2.status.starttime}}</p>
295 <p>         End
296 time: {{kw2.status.endtime}}</p>
297 <p>        
298 Status: {{kw2.status.status}}</p>
307 <h2 class="heading-small"></h2>
309 <h3 class="heading-small">Test Cases</h3>
310 <table class="striped" cellspacing="0" cellpadding="10">
315 <th><p> Full Name </p></th>
316 <th><p>Documentation </p></th>
317 <th><p>Status </p></th>
318 <th><p>Start Time </p></th>
319 <th><p>End Time </p></th>
320 <th><p>Critical </p></th>
321 <th><p>Message </p></th>
322 <th><p>Robot keywords </p></th>
327 ng-repeat="test in selectedRobotTestResult.robot.suite.suite.test">
328 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{
330 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{test.doc}}</td>
331 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{test.status.status}}</td>
332 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{test.status.starttime}}</td>
333 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{test.status.endtime}}</td>
334 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{test.status.critical}}</td>
335 <td style="padding-left: 10px; font-size: 15px; width: 13%;">{{test.status.content}}</td>
336 <td style="padding-left: 10px; font-size: 15px; width: 13%;">
339 <li ng-repeat="testKw in test.kw">
340 <h2 class="heading-small"></h2>
342 <a href="#" ng-click="showDetails3 = ! showDetails3">
345 <div ng-show="showDetails3">
346 <p>     Type: {{testKw.type}}</p>
347 <p>     Library: {{testKw.library}}</p>
348 <p>     Documentation: {{testKw.doc}}</p>
349 <p>     Start time:
350 {{testKw.status.starttime}}</p>
351 <p>     End time:
352 {{testKw.status.endtime}}</p>
353 <p>     Status:
354 {{testKw.status.status}}</p>
356 <p>     Used Robot keywords</p>
358 <li ng-repeat="testKw2 in testKw.kw">
360 <a href="#" ng-click="showDetails4 = ! showDetails4">    
363 <div ng-show="showDetails4">
364 <p>        
365 Type: {{testKw2.type}}</p>
366 <p>        
367 Library: {{testKw2.library}}</p>
368 <p>        
369 Documentation: {{testKw2.doc}}</p>
370 <p>        
371 Start time: {{testKw2.status.starttime}}</p>
372 <p>        
373 End time: {{testKw2.status.endtime}}</p>
374 <p>        
375 Status: {{testKw2.status.status}}</p>