ortoni-report 2.0.5 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +14 -0
- package/dist/ortoni-report.js +2 -1
- package/dist/ortoni-report.mjs +2 -1
- package/dist/style/main.css +6 -40
- package/dist/views/main.hbs +26 -12
- package/dist/views/navbar.hbs +1 -11
- package/dist/views/project.hbs +203 -95
- package/dist/views/testIcons.hbs +163 -0
- package/dist/views/testPanel.hbs +16 -7
- package/dist/views/testStatus.hbs +8 -32
- package/package.json +1 -1
- package/readme.md +20 -4
package/changelog.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Change Log:
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
## v2.0.6
|
|
5
|
+
|
|
6
|
+
#### 🐛 Fixes
|
|
7
|
+
- **Trace Path in Pipeline**: Resolved issue with incorrect trace file path in CI/CD pipeline, ensuring trace paths are properly resolved.
|
|
8
|
+
|
|
9
|
+
#### 👌 Improvements
|
|
10
|
+
- **Search Functionality**:
|
|
11
|
+
- **Removed from Navbar**: Search functionality has been removed from the navbar to enhance navigation simplicity.
|
|
12
|
+
- **Added to Test Panel**: Search functionality has been relocated to the test panel for more intuitive test filtering.
|
|
13
|
+
|
|
14
|
+
- **UI Enhancements**:
|
|
15
|
+
- Updated the overall UI with gradient color status indicators, making test status visuals more vibrant and user-friendly.
|
|
16
|
+
|
|
3
17
|
## v2.0.5
|
|
4
18
|
|
|
5
19
|
### 🚀 New Features
|
package/dist/ortoni-report.js
CHANGED
|
@@ -29209,13 +29209,14 @@ var HTMLGenerator = class {
|
|
|
29209
29209
|
import_handlebars.default.registerHelper("joinWithSpace", (array) => array.join(" "));
|
|
29210
29210
|
import_handlebars.default.registerHelper("json", (context) => safeStringify(context));
|
|
29211
29211
|
import_handlebars.default.registerHelper("eq", (actualStatus, expectedStatus) => actualStatus === expectedStatus);
|
|
29212
|
+
import_handlebars.default.registerHelper("includes", (actualStatus, expectedStatus) => actualStatus.includes(expectedStatus));
|
|
29212
29213
|
import_handlebars.default.registerHelper("gr", (count) => count > 0);
|
|
29213
29214
|
import_handlebars.default.registerHelper("or", function(a, b) {
|
|
29214
29215
|
return a || b;
|
|
29215
29216
|
});
|
|
29216
29217
|
}
|
|
29217
29218
|
registerPartials() {
|
|
29218
|
-
["navbar", "
|
|
29219
|
+
["navbar", "testPanel", "summaryCard", "userInfo", "project", "testStatus", "testIcons"].forEach((partialName) => {
|
|
29219
29220
|
import_handlebars.default.registerPartial(partialName, import_fs2.default.readFileSync(
|
|
29220
29221
|
import_path3.default.resolve(__dirname, "views", `${partialName}.hbs`),
|
|
29221
29222
|
"utf-8"
|
package/dist/ortoni-report.mjs
CHANGED
|
@@ -29202,13 +29202,14 @@ var HTMLGenerator = class {
|
|
|
29202
29202
|
import_handlebars.default.registerHelper("joinWithSpace", (array) => array.join(" "));
|
|
29203
29203
|
import_handlebars.default.registerHelper("json", (context) => safeStringify(context));
|
|
29204
29204
|
import_handlebars.default.registerHelper("eq", (actualStatus, expectedStatus) => actualStatus === expectedStatus);
|
|
29205
|
+
import_handlebars.default.registerHelper("includes", (actualStatus, expectedStatus) => actualStatus.includes(expectedStatus));
|
|
29205
29206
|
import_handlebars.default.registerHelper("gr", (count) => count > 0);
|
|
29206
29207
|
import_handlebars.default.registerHelper("or", function(a, b) {
|
|
29207
29208
|
return a || b;
|
|
29208
29209
|
});
|
|
29209
29210
|
}
|
|
29210
29211
|
registerPartials() {
|
|
29211
|
-
["navbar", "
|
|
29212
|
+
["navbar", "testPanel", "summaryCard", "userInfo", "project", "testStatus", "testIcons"].forEach((partialName) => {
|
|
29212
29213
|
import_handlebars.default.registerPartial(partialName, fs2.readFileSync(
|
|
29213
29214
|
path3.resolve(__dirname, "views", `${partialName}.hbs`),
|
|
29214
29215
|
"utf-8"
|
package/dist/style/main.css
CHANGED
|
@@ -33,50 +33,11 @@
|
|
|
33
33
|
background: #555;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
div#testDetails {
|
|
37
|
-
position: sticky;
|
|
38
|
-
top: 0;
|
|
39
|
-
z-index: 1;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.sidebar {
|
|
43
|
-
overflow-y: auto;
|
|
44
|
-
max-height: calc(100vh - 100px);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
aside li {
|
|
48
|
-
cursor: pointer;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
details summary {
|
|
52
|
-
cursor: pointer;
|
|
53
|
-
display: flex;
|
|
54
|
-
justify-content: space-between;
|
|
55
|
-
align-items: center;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
details summary::after {
|
|
59
|
-
content: '';
|
|
60
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
|
|
61
|
-
transform: rotate(-90deg);
|
|
62
|
-
background-size: 1em;
|
|
63
|
-
background-repeat: no-repeat;
|
|
64
|
-
background-position: right-center;
|
|
65
|
-
width: 1em;
|
|
66
|
-
height: 1em;
|
|
67
|
-
transition: transform 0.2s ease-in-out;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
details[open]>summary::after {
|
|
71
|
-
transform: rotate(0deg);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
36
|
.logoimage {
|
|
75
37
|
max-width: 100px;
|
|
76
38
|
}
|
|
77
39
|
|
|
78
40
|
.listselected {
|
|
79
|
-
border-image: linear-gradient(45deg, var(--bulma-primary), #FF6B6B) 1;
|
|
80
41
|
font-weight: bold;
|
|
81
42
|
}
|
|
82
43
|
|
|
@@ -97,7 +58,7 @@
|
|
|
97
58
|
.sticky-header {
|
|
98
59
|
position: sticky;
|
|
99
60
|
top: 0;
|
|
100
|
-
z-index:
|
|
61
|
+
z-index: 10;
|
|
101
62
|
}
|
|
102
63
|
|
|
103
64
|
.video-preview {
|
|
@@ -125,4 +86,9 @@
|
|
|
125
86
|
.status-icon {
|
|
126
87
|
font-size: 1.5rem;
|
|
127
88
|
margin-right: 0.5rem;
|
|
89
|
+
}
|
|
90
|
+
.content-wrapper {
|
|
91
|
+
max-height: 60vh; /* Adjust height as needed */
|
|
92
|
+
overflow-y: auto;
|
|
93
|
+
padding: 0.5rem;
|
|
128
94
|
}
|
package/dist/views/main.hbs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<meta name="description" content="Playwright HTML report by LetCode Koushik - V2.0.
|
|
6
|
+
<meta name="description" content="Playwright HTML report by LetCode Koushik - V2.0.6">
|
|
7
7
|
<title>{{title}}</title>
|
|
8
8
|
<link rel="icon" href="https://raw.githubusercontent.com/ortoniKC/ortoni-report/refs/heads/main/favicon.png"
|
|
9
9
|
type="image/x-icon">
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
</style>
|
|
17
17
|
<body>
|
|
18
18
|
{{> navbar }}
|
|
19
|
-
<section class="section">
|
|
19
|
+
<section class="section mt-6">
|
|
20
20
|
<main class="container">
|
|
21
21
|
<div class="columns">
|
|
22
22
|
<aside class="column is-two-fifths">
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
testDetails.innerHTML = `
|
|
144
144
|
<div class="sticky-header">
|
|
145
145
|
<div class="card mb-3">
|
|
146
|
-
<button class="button is-
|
|
146
|
+
<button class="button is-primary mb-3" id="back-to-summary" onclick="showSummary()">
|
|
147
147
|
<span class="icon"><i class="fa fa-chevron-left" style="color: #63E6BE;"></i></span>
|
|
148
148
|
<span>Back to Summary</span>
|
|
149
149
|
</button>
|
|
@@ -237,12 +237,15 @@
|
|
|
237
237
|
</div>
|
|
238
238
|
${test.tracePath ? `
|
|
239
239
|
<div class="columns is-centered">
|
|
240
|
-
|
|
241
|
-
<
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
240
|
+
<div class="column is-3">
|
|
241
|
+
<button
|
|
242
|
+
data-trace="${test.tracePath}"
|
|
243
|
+
onclick="openTraceViewer(this)"
|
|
244
|
+
class="button is-link is-fullwidth mt-3">
|
|
245
|
+
<span class="icon"><i class="fa-solid fa-tv" style="color: #FFD43B;"></i></span>
|
|
246
|
+
<span class="has-text-white pl-2">View Trace</span>
|
|
247
|
+
</button>
|
|
248
|
+
</div>
|
|
246
249
|
</div>
|
|
247
250
|
` : ''}
|
|
248
251
|
</div>
|
|
@@ -379,12 +382,23 @@
|
|
|
379
382
|
window.openVideo = openVideo;
|
|
380
383
|
window.closeVideo = closeVideo;
|
|
381
384
|
window.closeModal = closeModal;
|
|
385
|
+
window.openTraceViewer = openTraceViewer;
|
|
382
386
|
|
|
383
387
|
document.addEventListener('keydown', (event) => {
|
|
384
388
|
if (event.key === "Escape") {
|
|
385
389
|
closeModal();
|
|
386
390
|
}
|
|
387
391
|
});
|
|
392
|
+
function openTraceViewer(button) {
|
|
393
|
+
const tracePath = button.getAttribute("data-trace");
|
|
394
|
+
try {
|
|
395
|
+
if (tracePath) {
|
|
396
|
+
const baseUrl = window.location.origin;
|
|
397
|
+
const traceViewerUrl = `${baseUrl}/trace/index.html?trace=${baseUrl}/${tracePath}`;
|
|
398
|
+
window.open(traceViewerUrl, "_blank");
|
|
399
|
+
}
|
|
400
|
+
} catch (error) { }
|
|
401
|
+
}
|
|
388
402
|
|
|
389
403
|
function attachEventListeners() {
|
|
390
404
|
const checkboxes = document.querySelectorAll('#select-filter input[type="checkbox"]');
|
|
@@ -432,7 +446,7 @@
|
|
|
432
446
|
const detailsElements = document.querySelectorAll('.sidebar details');
|
|
433
447
|
detailsElements.forEach(details => {
|
|
434
448
|
let shouldShowDetails = false;
|
|
435
|
-
const items = details.querySelectorAll('
|
|
449
|
+
const items = details.querySelectorAll('div[data-test-id]');
|
|
436
450
|
items.forEach(item => {
|
|
437
451
|
const testTags = item.getAttribute('data-test-tags').trim().split(' ').filter(Boolean);
|
|
438
452
|
const projectName = item.getAttribute('data-project-name').trim();
|
|
@@ -491,7 +505,7 @@
|
|
|
491
505
|
testItems.forEach(item => {
|
|
492
506
|
const testTitle = item.textContent.toLowerCase();
|
|
493
507
|
if (testTitle.includes(searchTerm)) {
|
|
494
|
-
item.style.display = '
|
|
508
|
+
item.style.display = 'flex'; // Show matching test item
|
|
495
509
|
|
|
496
510
|
let parent = item.parentElement;
|
|
497
511
|
while (parent && parent.tagName !== 'ASIDE') {
|
|
@@ -506,7 +520,7 @@
|
|
|
506
520
|
});
|
|
507
521
|
} else {
|
|
508
522
|
testItems.forEach(item => {
|
|
509
|
-
item.style.display = '
|
|
523
|
+
item.style.display = 'flex';
|
|
510
524
|
});
|
|
511
525
|
detailsElements.forEach(detail => {
|
|
512
526
|
detail.open = false;
|
package/dist/views/navbar.hbs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<nav class="navbar is-primary" role="navigation" aria-label="main navigation">
|
|
1
|
+
<nav class="navbar is-primary is-fixed-top" role="navigation" aria-label="main navigation">
|
|
2
2
|
<div class="navbar-brand">
|
|
3
3
|
<a class="navbar-item">
|
|
4
4
|
{{#if logo}}
|
|
@@ -16,16 +16,6 @@
|
|
|
16
16
|
</div>
|
|
17
17
|
<div class="navbar-menu">
|
|
18
18
|
<div class="navbar-end">
|
|
19
|
-
<div class="navbar-item">
|
|
20
|
-
<span id="selected-filters"></span>
|
|
21
|
-
</div>
|
|
22
|
-
<div class="navbar-item">
|
|
23
|
-
<div class="field">
|
|
24
|
-
<p class="control">
|
|
25
|
-
<input class="input" name="search" type="search" placeholder="Search by test">
|
|
26
|
-
</p>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
19
|
<div class="navbar-item">
|
|
30
20
|
<button id="toggle-theme" class="" data-theme-status="{{preferredTheme}}">
|
|
31
21
|
<span class="icon">
|
package/dist/views/project.hbs
CHANGED
|
@@ -1,131 +1,239 @@
|
|
|
1
|
+
<style>
|
|
2
|
+
:root {
|
|
3
|
+
--primary-gradient: linear-gradient(135deg, #3a6b6e 0%, #274754 100%);
|
|
4
|
+
--flaky-gradient: linear-gradient(135deg, #ffb70f 0%, #ffd65a 100%);
|
|
5
|
+
--retry-gradient: linear-gradient(135deg, #94a3b8 0%, #c0cad9 100%);
|
|
6
|
+
--skip-gradient: linear-gradient(135deg, #66d1ff 0%, #99e1ff 100%);
|
|
7
|
+
--success-gradient: linear-gradient(135deg, #34d399 0%, #059669 100%);
|
|
8
|
+
--error-gradient: linear-gradient(135deg, #dc2626 0%, #f87171 100%);
|
|
9
|
+
--glass-bg: rgba(255, 255, 255, 0.7);
|
|
10
|
+
--glass-border: rgba(255, 255, 255, 0.1);
|
|
11
|
+
--shadow-sm: 0 2px 4px -1px rgba(0, 0, 0, 0.1);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sidebar {
|
|
15
|
+
height: 100%;
|
|
16
|
+
overflow-y: auto;
|
|
17
|
+
max-height: calc(100vh - 100px);
|
|
18
|
+
padding: 0px 10px 0px 0px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.test-group {
|
|
22
|
+
margin-bottom: 0.5rem;
|
|
23
|
+
border-radius: 8px;
|
|
24
|
+
transition: all 0.2s ease;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.test-group summary {
|
|
28
|
+
padding: 0.5rem;
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
user-select: none;
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
gap: 0.5rem;
|
|
34
|
+
border-radius: 8px;
|
|
35
|
+
background: var(--primary-gradient);
|
|
36
|
+
color: white;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.test-suite {
|
|
40
|
+
margin: 0.35rem;
|
|
41
|
+
border-radius: 6px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.test-suite summary {
|
|
45
|
+
padding: 0.35rem 0.5rem;
|
|
46
|
+
color: inherit;
|
|
47
|
+
background: transparent;
|
|
48
|
+
transition: background-color 0.2s ease;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.test-case {
|
|
52
|
+
margin: 0.35rem;
|
|
53
|
+
border-radius: 6px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.test-case summary {
|
|
57
|
+
padding: 0.35rem 0.5rem;
|
|
58
|
+
color: inherit;
|
|
59
|
+
background: transparent;
|
|
60
|
+
transition: background-color 0.2s ease;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.test-item {
|
|
64
|
+
padding: 0.4rem 0.5rem;
|
|
65
|
+
margin: 0.35rem;
|
|
66
|
+
border-radius: 6px;
|
|
67
|
+
display: flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
gap: 0.5rem;
|
|
70
|
+
flex-wrap: wrap;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.test-item span {
|
|
74
|
+
overflow: hidden;
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
text-overflow: ellipsis;
|
|
77
|
+
max-width: 35ch;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.status-passed {
|
|
81
|
+
background: var(--success-gradient);
|
|
82
|
+
color: white;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.status-skipped {
|
|
86
|
+
background: var(--skip-gradient);
|
|
87
|
+
color: white;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.status-failed {
|
|
91
|
+
background: var(--error-gradient);
|
|
92
|
+
color: white;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.status-flaky {
|
|
96
|
+
background: var(--flaky-gradient);
|
|
97
|
+
color: white;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.icon-chevron {
|
|
101
|
+
transition: transform 0.2s ease;
|
|
102
|
+
width: 16px;
|
|
103
|
+
height: 16px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
details[open]>summary .icon-chevron {
|
|
107
|
+
transform: rotate(90deg);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.duration-tag {
|
|
111
|
+
font-size: 0.75rem;
|
|
112
|
+
padding: 0.25rem 0.5rem;
|
|
113
|
+
border-radius: 1rem;
|
|
114
|
+
margin-left: auto;
|
|
115
|
+
opacity: 0.8;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@keyframes slideIn {
|
|
119
|
+
from {
|
|
120
|
+
opacity: 0;
|
|
121
|
+
transform: translateX(-5px);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
to {
|
|
125
|
+
opacity: 1;
|
|
126
|
+
transform: translateX(0);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
details[open]>.test-content {
|
|
131
|
+
animation: slideIn 0.2s ease-out;
|
|
132
|
+
}
|
|
133
|
+
</style>
|
|
1
134
|
<div class="content sidebar">
|
|
2
135
|
{{#if showProject}}
|
|
3
136
|
{{#each groupedResults}}
|
|
4
|
-
<details class="
|
|
5
|
-
<summary class="is-size-5
|
|
137
|
+
<details class="test-group">
|
|
138
|
+
<summary class="is-size-5">
|
|
6
139
|
<div class="icon-text">
|
|
7
|
-
<span class="icon
|
|
8
|
-
<svg class="
|
|
9
|
-
|
|
10
|
-
<
|
|
11
|
-
<path
|
|
12
|
-
d="M11.612 30.945a3.986 3.986 0 01-2.829-1.17l-5.209-5.208a4.006 4.006 0 010-5.657l3.955-3.954a1 1 0 011.414 1.414l-3.955 3.954a2.003 2.003 0 000 2.829l5.21 5.208a2.004 2.004 0 002.828 0l7.235-7.234a2.003 2.003 0 000-2.828l-4.63-4.63a1 1 0 011.414-1.414l4.63 4.63a4.006 4.006 0 010 5.657l-7.235 7.233a3.988 3.988 0 01-2.828 1.17z"
|
|
13
|
-
fill="#232323" />
|
|
14
|
-
<path
|
|
15
|
-
d="M15.662 20.038a.997.997 0 01-.707-.293l-4.63-4.63a4.006 4.006 0 010-5.656l7.235-7.234a4.004 4.004 0 015.657 0l5.209 5.208a4.006 4.006 0 010 5.657l-3.955 3.954a1 1 0 01-1.414-1.414l3.955-3.954a2.003 2.003 0 000-2.829l-5.21-5.208a2.002 2.002 0 00-2.828 0l-7.235 7.234a2.003 2.003 0 000 2.828l4.63 4.63a1 1 0 01-.707 1.707z"
|
|
16
|
-
fill="#7fbde7" />
|
|
17
|
-
</g>
|
|
140
|
+
<span class="icon">
|
|
141
|
+
<svg class="icon-chevron" width="16" height="16" viewBox="0 0 24 24" fill="none"
|
|
142
|
+
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
143
|
+
<polyline points="9 18 15 12 9 6" />
|
|
18
144
|
</svg>
|
|
19
145
|
</span>
|
|
20
146
|
<span>{{@key}}</span>
|
|
21
147
|
</div>
|
|
22
148
|
</summary>
|
|
23
|
-
<
|
|
149
|
+
<div class="test-content">
|
|
24
150
|
{{#each this}}
|
|
25
|
-
<details class="
|
|
26
|
-
<summary class="is-size-
|
|
27
|
-
<
|
|
28
|
-
<
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
151
|
+
<details class="test-suite">
|
|
152
|
+
<summary class="is-size-6 is-capitalized">
|
|
153
|
+
<span class="icon is-small">
|
|
154
|
+
<svg class="image is-16x16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
155
|
+
<path
|
|
156
|
+
d="M181.344 42.656v394.671C181.344 478.562 214.781 512 256 512c41.25 0 74.672-33.438 74.672-74.673V42.656H181.344z"
|
|
157
|
+
fill="#e6e9ed" />
|
|
158
|
+
<path
|
|
159
|
+
d="M352 32c0 17.672-14.312 32-32 32H192c-17.656 0-32-14.328-32-32s14.344-32 32-32h128c17.688 0 32 14.328 32 32z"
|
|
160
|
+
fill="#ccd1d9" />
|
|
161
|
+
<path
|
|
162
|
+
d="M181.344 192v245.327C181.344 478.562 214.781 512 256 512c41.25 0 74.672-33.438 74.672-74.673V192H181.344z"
|
|
163
|
+
fill="#a0d468" />
|
|
164
|
+
<g fill="#434a54">
|
|
33
165
|
<path
|
|
34
|
-
d="
|
|
35
|
-
|
|
166
|
+
d="M245.344 266.655c0-5.89-4.781-10.655-10.672-10.655h-53.328v21.328h53.328c5.89 0 10.672-4.781 10.672-10.673zM234.672 319.999h-53.328v21.328h53.328c5.891 0 10.672-4.781 10.672-10.671s-4.782-10.657-10.672-10.657zM245.344 202.656c0-5.891-4.781-10.656-10.672-10.656h-53.328v21.328h53.328c5.89 0 10.672-4.781 10.672-10.672z" />
|
|
167
|
+
</g>
|
|
168
|
+
</svg>
|
|
169
|
+
</span>
|
|
170
|
+
<span>{{@key}}</span>
|
|
171
|
+
</summary>
|
|
172
|
+
{{#each this}}
|
|
173
|
+
<details class="test-case">
|
|
174
|
+
<summary>
|
|
175
|
+
<span class="icon is-small">
|
|
176
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
177
|
+
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
36
178
|
<path
|
|
37
|
-
d="
|
|
38
|
-
fill="#a0d468" />
|
|
39
|
-
<g fill="#434a54">
|
|
40
|
-
<path
|
|
41
|
-
d="M245.344 266.655c0-5.89-4.781-10.655-10.672-10.655h-53.328v21.328h53.328c5.89 0 10.672-4.781 10.672-10.673zM234.672 319.999h-53.328v21.328h53.328c5.891 0 10.672-4.781 10.672-10.671s-4.782-10.657-10.672-10.657zM245.344 202.656c0-5.891-4.781-10.656-10.672-10.656h-53.328v21.328h53.328c5.89 0 10.672-4.781 10.672-10.672z" />
|
|
42
|
-
</g>
|
|
179
|
+
d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z" />
|
|
43
180
|
</svg>
|
|
44
181
|
</span>
|
|
45
|
-
<span>{{@key}}</span>
|
|
46
|
-
</
|
|
47
|
-
</summary>
|
|
48
|
-
<ul class="mt-4 mb-4">
|
|
182
|
+
<span class="is-size-6">{{@key}}</span>
|
|
183
|
+
</summary>
|
|
49
184
|
{{#each this}}
|
|
50
|
-
|
|
51
|
-
<summary class="is-capitalized is-size-6">{{@key}}</summary>
|
|
52
|
-
<ul class="mt-4 mb-4">
|
|
53
|
-
{{#each this}}
|
|
54
|
-
<li class="media {{#if (eq status 'skipped')}}is-hidden{{/if}}" data-suite-name="{{suite}}"
|
|
55
|
-
data-test-duration="{{duration}}" data-test-tags="{{joinWithSpace testTags}}"
|
|
56
|
-
data-project-name="{{projectName}}" data-test-id="{{index}}"
|
|
57
|
-
data-test-status="{{status}} {{retry}}">
|
|
58
|
-
{{> testStatus}}
|
|
59
|
-
</li>
|
|
60
|
-
{{/each}}
|
|
61
|
-
</ul>
|
|
62
|
-
</details>
|
|
185
|
+
{{> testStatus}}
|
|
63
186
|
{{/each}}
|
|
64
|
-
</
|
|
187
|
+
</details>
|
|
188
|
+
{{/each}}
|
|
65
189
|
</details>
|
|
66
190
|
{{/each}}
|
|
67
|
-
</
|
|
191
|
+
</div>
|
|
68
192
|
</details>
|
|
69
193
|
{{/each}}
|
|
70
194
|
{{else}}
|
|
71
195
|
{{#each groupedResults}}
|
|
72
|
-
<details class="
|
|
73
|
-
<summary class="is-size-5
|
|
196
|
+
<details class="test-group">
|
|
197
|
+
<summary class="is-size-5">
|
|
74
198
|
<div class="icon-text">
|
|
75
|
-
<span class="icon
|
|
76
|
-
<svg class="
|
|
77
|
-
|
|
78
|
-
<
|
|
79
|
-
<path
|
|
80
|
-
d="M11.612 30.945a3.986 3.986 0 01-2.829-1.17l-5.209-5.208a4.006 4.006 0 010-5.657l3.955-3.954a1 1 0 011.414 1.414l-3.955 3.954a2.003 2.003 0 000 2.829l5.21 5.208a2.004 2.004 0 002.828 0l7.235-7.234a2.003 2.003 0 000-2.828l-4.63-4.63a1 1 0 011.414-1.414l4.63 4.63a4.006 4.006 0 010 5.657l-7.235 7.233a3.988 3.988 0 01-2.828 1.17z"
|
|
81
|
-
fill="#232323" />
|
|
82
|
-
<path
|
|
83
|
-
d="M15.662 20.038a.997.997 0 01-.707-.293l-4.63-4.63a4.006 4.006 0 010-5.656l7.235-7.234a4.004 4.004 0 015.657 0l5.209 5.208a4.006 4.006 0 010 5.657l-3.955 3.954a1 1 0 01-1.414-1.414l3.955-3.954a2.003 2.003 0 000-2.829l-5.21-5.208a2.002 2.002 0 00-2.828 0l-7.235 7.234a2.003 2.003 0 000 2.828l4.63 4.63a1 1 0 01-.707 1.707z"
|
|
84
|
-
fill="#7fbde7" />
|
|
85
|
-
</g>
|
|
199
|
+
<span class="icon">
|
|
200
|
+
<svg class="icon-chevron" width="16" height="16" viewBox="0 0 24 24" fill="none"
|
|
201
|
+
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
202
|
+
<polyline points="9 18 15 12 9 6" />
|
|
86
203
|
</svg>
|
|
87
204
|
</span>
|
|
88
205
|
<span>{{@key}}</span>
|
|
89
206
|
</div>
|
|
90
207
|
</summary>
|
|
91
|
-
<
|
|
208
|
+
<div class="test-content">
|
|
92
209
|
{{#each this}}
|
|
93
|
-
<details class="
|
|
94
|
-
<summary
|
|
95
|
-
<
|
|
96
|
-
<
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
210
|
+
<details class="test-case">
|
|
211
|
+
<summary>
|
|
212
|
+
<span class="icon is-small">
|
|
213
|
+
<svg class="image is-16x16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
214
|
+
<path
|
|
215
|
+
d="M181.344 42.656v394.671C181.344 478.562 214.781 512 256 512c41.25 0 74.672-33.438 74.672-74.673V42.656H181.344z"
|
|
216
|
+
fill="#e6e9ed" />
|
|
217
|
+
<path
|
|
218
|
+
d="M352 32c0 17.672-14.312 32-32 32H192c-17.656 0-32-14.328-32-32s14.344-32 32-32h128c17.688 0 32 14.328 32 32z"
|
|
219
|
+
fill="#ccd1d9" />
|
|
220
|
+
<path
|
|
221
|
+
d="M181.344 192v245.327C181.344 478.562 214.781 512 256 512c41.25 0 74.672-33.438 74.672-74.673V192H181.344z"
|
|
222
|
+
fill="#a0d468" />
|
|
223
|
+
<g fill="#434a54">
|
|
104
224
|
<path
|
|
105
|
-
d="
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
</g>
|
|
111
|
-
</svg>
|
|
112
|
-
</span>
|
|
113
|
-
<span>{{@key}}</span>
|
|
114
|
-
</div>
|
|
225
|
+
d="M245.344 266.655c0-5.89-4.781-10.655-10.672-10.655h-53.328v21.328h53.328c5.89 0 10.672-4.781 10.672-10.673zM234.672 319.999h-53.328v21.328h53.328c5.891 0 10.672-4.781 10.672-10.671s-4.782-10.657-10.672-10.657zM245.344 202.656c0-5.891-4.781-10.656-10.672-10.656h-53.328v21.328h53.328c5.89 0 10.672-4.781 10.672-10.672z" />
|
|
226
|
+
</g>
|
|
227
|
+
</svg>
|
|
228
|
+
</span>
|
|
229
|
+
<span class="is-size-6">{{@key}}</span>
|
|
115
230
|
</summary>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
data-test-duration="{{duration}}" data-test-tags="{{joinWithSpace testTags}}"
|
|
120
|
-
data-project-name="{{projectName}}" data-test-id="{{index}}"
|
|
121
|
-
data-test-status="{{status}} {{retry}}">
|
|
122
|
-
{{> testStatus}}
|
|
123
|
-
</li>
|
|
124
|
-
{{/each}}
|
|
125
|
-
</ul>
|
|
231
|
+
{{#each this}}
|
|
232
|
+
{{> testStatus}}
|
|
233
|
+
{{/each}}
|
|
126
234
|
</details>
|
|
127
235
|
{{/each}}
|
|
128
|
-
</
|
|
236
|
+
</div>
|
|
129
237
|
</details>
|
|
130
238
|
{{/each}}
|
|
131
239
|
{{/if}}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
<div class="icon-text">
|
|
2
|
+
{{#if isRetry}}
|
|
3
|
+
<span class="icon has-text-info">
|
|
4
|
+
<svg class="image is-16x16" id="Layer_1" height="512" viewBox="0 0 512 512" width="512"
|
|
5
|
+
xmlns="http://www.w3.org/2000/svg" data-name="Layer 1">
|
|
6
|
+
<circle cx="256" cy="256" fill="#00ab5e" r="256" />
|
|
7
|
+
<path
|
|
8
|
+
d="m387.823 256.136c0 72.688-59.135 131.823-131.823 131.823s-131.824-59.135-131.824-131.823a132.14 132.14 0 0 1 77.501-120.136 16 16 0 1 1 13.2 29.15 99.852 99.852 0 1 0 103.749 13.25v25.833a16 16 0 0 1 -32 0v-64.192a16 16 0 0 1 16-16h64.192a16 16 0 0 1 0 32h-25.066a132.143 132.143 0 0 1 46.071 100.095z"
|
|
9
|
+
fill="#fff" />
|
|
10
|
+
</svg>
|
|
11
|
+
</span>
|
|
12
|
+
{{else}}
|
|
13
|
+
<span class="icon has-text-info">
|
|
14
|
+
{{#if (eq status "passed")}}
|
|
15
|
+
<svg class="image is-16x16" height="512" viewBox="0 0 520 520" width="512" xmlns="http://www.w3.org/2000/svg">
|
|
16
|
+
<g id="_15-Checked" data-name="15-Checked">
|
|
17
|
+
<circle cx="208.52" cy="288.5" fill="#b0ef8f" r="176.52" />
|
|
18
|
+
<path
|
|
19
|
+
d="m210.516 424.937-2.239-3.815c-34.2-58.27-125.082-181.928-126-183.17l-1.311-1.781 30.963-30.6 98.012 68.439c61.711-80.079 119.283-135.081 156.837-167.2 41.081-35.135 67.822-51.31 68.092-51.465l.608-.364h52.522l-5.017 4.468c-129.029 114.926-268.883 359.19-270.276 361.644z"
|
|
20
|
+
fill="#009045" />
|
|
21
|
+
</g>
|
|
22
|
+
</svg>
|
|
23
|
+
{{/if}}
|
|
24
|
+
{{#if (eq status "failed")}}
|
|
25
|
+
<svg class="image is-16x16" height="512pt" viewBox="0 0 512 512" width="512pt"
|
|
26
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
27
|
+
<path
|
|
28
|
+
d="m256 0c-141.164062 0-256 114.835938-256 256s114.835938 256 256 256 256-114.835938 256-256-114.835938-256-256-256zm0 0"
|
|
29
|
+
fill="#f44336" />
|
|
30
|
+
<path
|
|
31
|
+
d="m350.273438 320.105469c8.339843 8.34375 8.339843 21.824219 0 30.167969-4.160157 4.160156-9.621094 6.25-15.085938 6.25-5.460938 0-10.921875-2.089844-15.082031-6.25l-64.105469-64.109376-64.105469 64.109376c-4.160156 4.160156-9.621093 6.25-15.082031 6.25-5.464844 0-10.925781-2.089844-15.085938-6.25-8.339843-8.34375-8.339843-21.824219 0-30.167969l64.109376-64.105469-64.109376-64.105469c-8.339843-8.34375-8.339843-21.824219 0-30.167969 8.34375-8.339843 21.824219-8.339843 30.167969 0l64.105469 64.109376 64.105469-64.109376c8.34375-8.339843 21.824219-8.339843 30.167969 0 8.339843 8.34375 8.339843 21.824219 0 30.167969l-64.109376 64.105469zm0 0"
|
|
32
|
+
fill="#fafafa" />
|
|
33
|
+
</svg>
|
|
34
|
+
{{/if}}
|
|
35
|
+
{{#if (eq status "skipped")}}
|
|
36
|
+
<svg class="image is-16x16" id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512"
|
|
37
|
+
width="512" xmlns="http://www.w3.org/2000/svg">
|
|
38
|
+
<g clip-rule="evenodd" fill-rule="evenodd">
|
|
39
|
+
<path d="m256 0c-141.2 0-256 114.8-256 256s114.8 256 256 256 256-114.8 256-256-114.8-256-256-256z"
|
|
40
|
+
fill="#fec006" />
|
|
41
|
+
<path
|
|
42
|
+
d="m379 244.8c6.3 6.3 6.3 16.4 0 22.7l-112.7 112.5c-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7c-6.3-6.3-6.3-16.4 0-22.6l101.3-101.3-101.3-101.3c-6.3-6.3-6.3-16.4 0-22.7s16.4-6.3 22.7 0zm-110.8 22.6-112.5 112.5c-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7c-6.2-6.2-6.2-16.4 0-22.6l101.1-101.2-101.2-101.2c-6.2-6.2-6.2-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l112.5 112.5c6.3 6.2 6.3 16.4.1 22.6z"
|
|
43
|
+
fill="#fff" />
|
|
44
|
+
</g>
|
|
45
|
+
</svg>
|
|
46
|
+
{{/if}}
|
|
47
|
+
{{#if (eq status "timedOut")}}
|
|
48
|
+
<svg class="image is-16x16" id="Date__x26__Time_-_Flat" enable-background="new 0 0 64 64" height="512"
|
|
49
|
+
viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg">
|
|
50
|
+
<g>
|
|
51
|
+
<g>
|
|
52
|
+
<g>
|
|
53
|
+
<path
|
|
54
|
+
d="m46.12 16.71h-.43c-1.427 0-2.769-.555-3.777-1.562-1.008-1.009-1.563-2.347-1.563-3.769 0-1.842-1.494-3.34-3.33-3.34h-.7c-1.836 0-3.33 1.498-3.33 3.34v3.33c0 .553-.447 1-1 1s-1-.447-1-1v-3.33c0-2.944 2.391-5.34 5.33-5.34h.699c2.939 0 5.33 2.396 5.33 5.34 0 .888.348 1.723.978 2.354.631.63 1.47.977 2.363.977h.43c1.842 0 3.34-1.494 3.34-3.33 0-.553.447-1 1-1s1 .447 1 1c0 2.939-2.396 5.33-5.34 5.33z"
|
|
55
|
+
fill="#565662" />
|
|
56
|
+
</g>
|
|
57
|
+
<g>
|
|
58
|
+
<path
|
|
59
|
+
d="m50.46 8.651c-.553 0-1-.447-1-1v-2.892c0-.553.447-1 1-1s1 .447 1 1v2.893c0 .552-.447.999-1 .999z"
|
|
60
|
+
fill="#fb7088" />
|
|
61
|
+
</g>
|
|
62
|
+
<g>
|
|
63
|
+
<path
|
|
64
|
+
d="m47.824 9.744c-.256 0-.512-.098-.707-.293l-2.046-2.046c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l2.046 2.046c.391.391.391 1.023 0 1.414-.195.195-.451.293-.707.293z"
|
|
65
|
+
fill="#fb7088" />
|
|
66
|
+
</g>
|
|
67
|
+
<g>
|
|
68
|
+
<path
|
|
69
|
+
d="m55.142 17.062c-.256 0-.512-.098-.707-.293l-2.045-2.045c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l2.045 2.045c.391.391.391 1.023 0 1.414-.196.195-.452.293-.707.293z"
|
|
70
|
+
fill="#fb7088" />
|
|
71
|
+
</g>
|
|
72
|
+
<g>
|
|
73
|
+
<path
|
|
74
|
+
d="m57.081 12.38h-2.893c-.553 0-1-.447-1-1s.447-1 1-1h2.893c.553 0 1 .447 1 1s-.447 1-1 1z"
|
|
75
|
+
fill="#fb7088" />
|
|
76
|
+
</g>
|
|
77
|
+
<g>
|
|
78
|
+
<path
|
|
79
|
+
d="m53.097 9.744c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.023 0-1.414l2.045-2.046c.391-.391 1.023-.391 1.414 0s.391 1.023 0 1.414l-2.045 2.046c-.196.195-.451.293-.707.293z"
|
|
80
|
+
fill="#fb7088" />
|
|
81
|
+
</g>
|
|
82
|
+
<path
|
|
83
|
+
d="m36.48 18.96v-4.25h-8.96v4.25c-9.04 2.03-15.79 10.11-15.79 19.76 0 11.2 9.08 20.27 20.27 20.27s20.27-9.07 20.27-20.27c0-9.65-6.75-17.73-15.79-19.76z"
|
|
84
|
+
fill="#565662" />
|
|
85
|
+
<path
|
|
86
|
+
d="m32 54.489c-8.694 0-15.767-7.073-15.767-15.767s7.073-15.767 15.767-15.767 15.767 7.073 15.767 15.767c0 8.693-7.073 15.767-15.767 15.767z"
|
|
87
|
+
fill="#faf8f9" />
|
|
88
|
+
<path
|
|
89
|
+
d="m18.233 40.721c0-8.694 7.073-15.767 15.767-15.767 3.839 0 7.359 1.382 10.096 3.671-2.895-3.462-7.241-5.671-12.096-5.671-8.694 0-15.767 7.073-15.767 15.767 0 4.855 2.209 9.201 5.671 12.096-2.289-2.737-3.671-6.257-3.671-10.096z"
|
|
90
|
+
fill="#e0cad6" />
|
|
91
|
+
<g>
|
|
92
|
+
<path
|
|
93
|
+
d="m31.991 26.758c-.553 0-1-.447-1-1v-3.999c0-.553.447-1 1-1s1 .447 1 1v3.999c0 .553-.447 1-1 1z"
|
|
94
|
+
fill="#565662" />
|
|
95
|
+
</g>
|
|
96
|
+
<g>
|
|
97
|
+
<path
|
|
98
|
+
d="m22.827 30.562c-.256 0-.512-.098-.707-.293l-2.828-2.828c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l2.828 2.828c.391.391.391 1.023 0 1.414-.195.195-.451.293-.707.293z"
|
|
99
|
+
fill="#565662" />
|
|
100
|
+
</g>
|
|
101
|
+
<g>
|
|
102
|
+
<path
|
|
103
|
+
d="m19.036 39.73h-3.998c-.553 0-1-.447-1-1s.447-1 1-1h3.998c.553 0 1 .447 1 1s-.447 1-1 1z"
|
|
104
|
+
fill="#565662" />
|
|
105
|
+
</g>
|
|
106
|
+
<g>
|
|
107
|
+
<path
|
|
108
|
+
d="m20.012 51.722c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.023 0-1.414l2.828-2.827c.391-.391 1.023-.391 1.414 0s.391 1.023 0 1.414l-2.828 2.827c-.196.195-.451.293-.707.293z"
|
|
109
|
+
fill="#565662" />
|
|
110
|
+
</g>
|
|
111
|
+
<g>
|
|
112
|
+
<path
|
|
113
|
+
d="m32.009 56.684c-.553 0-1-.447-1-1v-3.999c0-.553.447-1 1-1s1 .447 1 1v3.999c0 .552-.447 1-1 1z"
|
|
114
|
+
fill="#565662" />
|
|
115
|
+
</g>
|
|
116
|
+
<g>
|
|
117
|
+
<path
|
|
118
|
+
d="m44.001 51.709c-.256 0-.512-.098-.707-.293l-2.828-2.827c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l2.828 2.827c.391.391.391 1.023 0 1.414-.195.195-.451.293-.707.293z"
|
|
119
|
+
fill="#565662" />
|
|
120
|
+
</g>
|
|
121
|
+
<g>
|
|
122
|
+
<path
|
|
123
|
+
d="m48.962 39.712h-3.998c-.553 0-1-.447-1-1s.447-1 1-1h3.998c.553 0 1 .447 1 1s-.447 1-1 1z"
|
|
124
|
+
fill="#565662" />
|
|
125
|
+
</g>
|
|
126
|
+
<g>
|
|
127
|
+
<path
|
|
128
|
+
d="m41.16 30.549c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.023 0-1.414l2.828-2.828c.391-.391 1.023-.391 1.414 0s.391 1.023 0 1.414l-2.828 2.828c-.195.195-.451.293-.707.293z"
|
|
129
|
+
fill="#565662" />
|
|
130
|
+
</g>
|
|
131
|
+
<g>
|
|
132
|
+
<path
|
|
133
|
+
d="m32 38.228c-.553 0-1-.447-1-1v-7.819c0-.553.447-1 1-1s1 .447 1 1v7.819c0 .552-.447 1-1 1z"
|
|
134
|
+
fill="#565662" />
|
|
135
|
+
</g>
|
|
136
|
+
<g>
|
|
137
|
+
<path
|
|
138
|
+
d="m26.047 45.675c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.024 0-1.414l4.558-4.555c.391-.391 1.023-.391 1.414 0s.391 1.024 0 1.414l-4.558 4.555c-.195.195-.451.293-.707.293z"
|
|
139
|
+
fill="#565662" />
|
|
140
|
+
</g>
|
|
141
|
+
<circle cx="32" cy="38.721" fill="#ffc361" r="2.54" />
|
|
142
|
+
</g>
|
|
143
|
+
</g>
|
|
144
|
+
</svg>
|
|
145
|
+
{{/if}}
|
|
146
|
+
{{#if (eq status "flaky")}}
|
|
147
|
+
<svg class="image is-16x16" height="512" viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg">
|
|
148
|
+
<g id="Layer_35" data-name="Layer 35">
|
|
149
|
+
<path
|
|
150
|
+
d="m32 3.4a28.59 28.59 0 0 0 -28.6 28.6 28.59 28.59 0 0 0 28.6 28.6 28.59 28.59 0 0 0 28.6-28.6 28.59 28.59 0 0 0 -28.6-28.6zm0 49.2a4.32 4.32 0 1 1 4.31-4.31 4.32 4.32 0 0 1 -4.31 4.31zm5.23-35.6-1.63 22a.6.6 0 0 1 -.6.56h-6a.6.6 0 0 1 -.6-.56l-1.63-22a5.24 5.24 0 1 1 10.46 0z"
|
|
151
|
+
fill="#ffc048" />
|
|
152
|
+
</g>
|
|
153
|
+
</svg>
|
|
154
|
+
{{/if}}
|
|
155
|
+
</span>
|
|
156
|
+
{{/if}}
|
|
157
|
+
<span>{{title}}</span>
|
|
158
|
+
</div>
|
|
159
|
+
{{#if @root.showProject}}
|
|
160
|
+
<span class="tag duration-tag has-text-weight-medium">{{duration}}</span>
|
|
161
|
+
{{else}}
|
|
162
|
+
<span class="tag duration-tag has-text-weight-medium">{{projectName}}</span>
|
|
163
|
+
{{/if}}
|
package/dist/views/testPanel.hbs
CHANGED
|
@@ -1,31 +1,37 @@
|
|
|
1
|
-
<div class="columns is-mobile is-vcentered">
|
|
1
|
+
<div class="columns is-mobile is-vcentered is-gapless">
|
|
2
2
|
<div class="column">
|
|
3
|
-
<
|
|
3
|
+
<div class="control">
|
|
4
|
+
<input class="input" name="search" type="search" placeholder="Search by test" />
|
|
5
|
+
</div>
|
|
4
6
|
</div>
|
|
5
|
-
<div class="column">
|
|
7
|
+
<div class="column is-2 mr-3">
|
|
6
8
|
<div id="project-filter" class="dropdown is-right is-hoverable is-pulled-right">
|
|
7
9
|
<div class="dropdown-trigger">
|
|
8
|
-
<button class="button" aria-haspopup="true" aria-controls="select-filter">
|
|
10
|
+
<button class="button is-primary" aria-haspopup="true" aria-controls="select-filter">
|
|
9
11
|
<span>Filters</span>
|
|
10
12
|
<span class="icon is-small">
|
|
11
|
-
<i class="
|
|
13
|
+
<i class="fa-solid fa-filter" aria-hidden="true"></i>
|
|
12
14
|
</span>
|
|
13
15
|
</button>
|
|
14
16
|
</div>
|
|
15
17
|
<div class="dropdown-menu" id="select-filter" role="menu">
|
|
16
18
|
<div class="dropdown-content">
|
|
19
|
+
<p class="dropdown-item has-text-weight-semibold has-text-primary">Projects</p>
|
|
17
20
|
{{#each projects}}
|
|
18
21
|
<div class="dropdown-item">
|
|
19
22
|
<label class="checkbox is-capitalized">
|
|
20
|
-
<input name="{{this}}" type="checkbox" data-filter-type="project" value="{{this}}"
|
|
23
|
+
<input name="{{this}}" type="checkbox" data-filter-type="project" value="{{this}}" />
|
|
24
|
+
{{this}}
|
|
21
25
|
</label>
|
|
22
26
|
</div>
|
|
23
27
|
{{/each}}
|
|
24
28
|
<hr class="dropdown-divider" />
|
|
29
|
+
<p class="dropdown-item has-text-weight-semibold has-text-primary">Tags</p>
|
|
25
30
|
{{#each allTags}}
|
|
26
31
|
<div class="dropdown-item">
|
|
27
32
|
<label class="checkbox">
|
|
28
|
-
<input name="{{this}}" type="checkbox" data-filter-type="test-tags" value="{{this}}"
|
|
33
|
+
<input name="{{this}}" type="checkbox" data-filter-type="test-tags" value="{{this}}" />
|
|
34
|
+
{{this}}
|
|
29
35
|
</label>
|
|
30
36
|
</div>
|
|
31
37
|
{{/each}}
|
|
@@ -33,4 +39,7 @@
|
|
|
33
39
|
</div>
|
|
34
40
|
</div>
|
|
35
41
|
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="content">
|
|
44
|
+
<span id="selected-filters"></span>
|
|
36
45
|
</div>
|
|
@@ -1,33 +1,9 @@
|
|
|
1
|
-
<div class="
|
|
2
|
-
{{#if
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
{{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<svg class="image is-16x16" height="512" viewBox="0 0 520 520" width="512" xmlns="http://www.w3.org/2000/svg">
|
|
10
|
-
<g id="_15-Checked" data-name="15-Checked">
|
|
11
|
-
<circle cx="208.52" cy="288.5" fill="#b0ef8f" r="176.52" />
|
|
12
|
-
<path
|
|
13
|
-
d="m210.516 424.937-2.239-3.815c-34.2-58.27-125.082-181.928-126-183.17l-1.311-1.781 30.963-30.6 98.012 68.439c61.711-80.079 119.283-135.081 156.837-167.2 41.081-35.135 67.822-51.31 68.092-51.465l.608-.364h52.522l-5.017 4.468c-129.029 114.926-268.883 359.19-270.276 361.644z"
|
|
14
|
-
fill="#009045" />
|
|
15
|
-
</g>
|
|
16
|
-
</svg>
|
|
17
|
-
{{/if}}
|
|
18
|
-
{{#if (eq status "failed")}}
|
|
19
|
-
<svg class="image is-16x16" height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg"><path d="m256 0c-141.164062 0-256 114.835938-256 256s114.835938 256 256 256 256-114.835938 256-256-114.835938-256-256-256zm0 0" fill="#f44336"/><path d="m350.273438 320.105469c8.339843 8.34375 8.339843 21.824219 0 30.167969-4.160157 4.160156-9.621094 6.25-15.085938 6.25-5.460938 0-10.921875-2.089844-15.082031-6.25l-64.105469-64.109376-64.105469 64.109376c-4.160156 4.160156-9.621093 6.25-15.082031 6.25-5.464844 0-10.925781-2.089844-15.085938-6.25-8.339843-8.34375-8.339843-21.824219 0-30.167969l64.109376-64.105469-64.109376-64.105469c-8.339843-8.34375-8.339843-21.824219 0-30.167969 8.34375-8.339843 21.824219-8.339843 30.167969 0l64.105469 64.109376 64.105469-64.109376c8.34375-8.339843 21.824219-8.339843 30.167969 0 8.339843 8.34375 8.339843 21.824219 0 30.167969l-64.109376 64.105469zm0 0" fill="#fafafa"/></svg>
|
|
20
|
-
{{/if}}
|
|
21
|
-
{{#if (eq status "skipped")}}
|
|
22
|
-
<svg class="image is-16x16" id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g clip-rule="evenodd" fill-rule="evenodd"><path d="m256 0c-141.2 0-256 114.8-256 256s114.8 256 256 256 256-114.8 256-256-114.8-256-256-256z" fill="#fec006"/><path d="m379 244.8c6.3 6.3 6.3 16.4 0 22.7l-112.7 112.5c-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7c-6.3-6.3-6.3-16.4 0-22.6l101.3-101.3-101.3-101.3c-6.3-6.3-6.3-16.4 0-22.7s16.4-6.3 22.7 0zm-110.8 22.6-112.5 112.5c-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7c-6.2-6.2-6.2-16.4 0-22.6l101.1-101.2-101.2-101.2c-6.2-6.2-6.2-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l112.5 112.5c6.3 6.2 6.3 16.4.1 22.6z" fill="#fff"/></g></svg>
|
|
23
|
-
{{/if}}
|
|
24
|
-
{{#if (eq status "timedOut")}}
|
|
25
|
-
<svg class="image is-16x16" id="Date__x26__Time_-_Flat" enable-background="new 0 0 64 64" height="512" viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg"><g><g><g><path d="m46.12 16.71h-.43c-1.427 0-2.769-.555-3.777-1.562-1.008-1.009-1.563-2.347-1.563-3.769 0-1.842-1.494-3.34-3.33-3.34h-.7c-1.836 0-3.33 1.498-3.33 3.34v3.33c0 .553-.447 1-1 1s-1-.447-1-1v-3.33c0-2.944 2.391-5.34 5.33-5.34h.699c2.939 0 5.33 2.396 5.33 5.34 0 .888.348 1.723.978 2.354.631.63 1.47.977 2.363.977h.43c1.842 0 3.34-1.494 3.34-3.33 0-.553.447-1 1-1s1 .447 1 1c0 2.939-2.396 5.33-5.34 5.33z" fill="#565662"/></g><g><path d="m50.46 8.651c-.553 0-1-.447-1-1v-2.892c0-.553.447-1 1-1s1 .447 1 1v2.893c0 .552-.447.999-1 .999z" fill="#fb7088"/></g><g><path d="m47.824 9.744c-.256 0-.512-.098-.707-.293l-2.046-2.046c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l2.046 2.046c.391.391.391 1.023 0 1.414-.195.195-.451.293-.707.293z" fill="#fb7088"/></g><g><path d="m55.142 17.062c-.256 0-.512-.098-.707-.293l-2.045-2.045c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l2.045 2.045c.391.391.391 1.023 0 1.414-.196.195-.452.293-.707.293z" fill="#fb7088"/></g><g><path d="m57.081 12.38h-2.893c-.553 0-1-.447-1-1s.447-1 1-1h2.893c.553 0 1 .447 1 1s-.447 1-1 1z" fill="#fb7088"/></g><g><path d="m53.097 9.744c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.023 0-1.414l2.045-2.046c.391-.391 1.023-.391 1.414 0s.391 1.023 0 1.414l-2.045 2.046c-.196.195-.451.293-.707.293z" fill="#fb7088"/></g><path d="m36.48 18.96v-4.25h-8.96v4.25c-9.04 2.03-15.79 10.11-15.79 19.76 0 11.2 9.08 20.27 20.27 20.27s20.27-9.07 20.27-20.27c0-9.65-6.75-17.73-15.79-19.76z" fill="#565662"/><path d="m32 54.489c-8.694 0-15.767-7.073-15.767-15.767s7.073-15.767 15.767-15.767 15.767 7.073 15.767 15.767c0 8.693-7.073 15.767-15.767 15.767z" fill="#faf8f9"/><path d="m18.233 40.721c0-8.694 7.073-15.767 15.767-15.767 3.839 0 7.359 1.382 10.096 3.671-2.895-3.462-7.241-5.671-12.096-5.671-8.694 0-15.767 7.073-15.767 15.767 0 4.855 2.209 9.201 5.671 12.096-2.289-2.737-3.671-6.257-3.671-10.096z" fill="#e0cad6"/><g><path d="m31.991 26.758c-.553 0-1-.447-1-1v-3.999c0-.553.447-1 1-1s1 .447 1 1v3.999c0 .553-.447 1-1 1z" fill="#565662"/></g><g><path d="m22.827 30.562c-.256 0-.512-.098-.707-.293l-2.828-2.828c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l2.828 2.828c.391.391.391 1.023 0 1.414-.195.195-.451.293-.707.293z" fill="#565662"/></g><g><path d="m19.036 39.73h-3.998c-.553 0-1-.447-1-1s.447-1 1-1h3.998c.553 0 1 .447 1 1s-.447 1-1 1z" fill="#565662"/></g><g><path d="m20.012 51.722c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.023 0-1.414l2.828-2.827c.391-.391 1.023-.391 1.414 0s.391 1.023 0 1.414l-2.828 2.827c-.196.195-.451.293-.707.293z" fill="#565662"/></g><g><path d="m32.009 56.684c-.553 0-1-.447-1-1v-3.999c0-.553.447-1 1-1s1 .447 1 1v3.999c0 .552-.447 1-1 1z" fill="#565662"/></g><g><path d="m44.001 51.709c-.256 0-.512-.098-.707-.293l-2.828-2.827c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l2.828 2.827c.391.391.391 1.023 0 1.414-.195.195-.451.293-.707.293z" fill="#565662"/></g><g><path d="m48.962 39.712h-3.998c-.553 0-1-.447-1-1s.447-1 1-1h3.998c.553 0 1 .447 1 1s-.447 1-1 1z" fill="#565662"/></g><g><path d="m41.16 30.549c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.023 0-1.414l2.828-2.828c.391-.391 1.023-.391 1.414 0s.391 1.023 0 1.414l-2.828 2.828c-.195.195-.451.293-.707.293z" fill="#565662"/></g><g><path d="m32 38.228c-.553 0-1-.447-1-1v-7.819c0-.553.447-1 1-1s1 .447 1 1v7.819c0 .552-.447 1-1 1z" fill="#565662"/></g><g><path d="m26.047 45.675c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.024 0-1.414l4.558-4.555c.391-.391 1.023-.391 1.414 0s.391 1.024 0 1.414l-4.558 4.555c-.195.195-.451.293-.707.293z" fill="#565662"/></g><circle cx="32" cy="38.721" fill="#ffc361" r="2.54"/></g></g></svg>
|
|
26
|
-
{{/if}}
|
|
27
|
-
{{#if (eq status "flaky")}}
|
|
28
|
-
<svg class="image is-16x16" height="512" viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg"><g id="Layer_35" data-name="Layer 35"><path d="m32 3.4a28.59 28.59 0 0 0 -28.6 28.6 28.59 28.59 0 0 0 28.6 28.6 28.59 28.59 0 0 0 28.6-28.6 28.59 28.59 0 0 0 -28.6-28.6zm0 49.2a4.32 4.32 0 1 1 4.31-4.31 4.32 4.32 0 0 1 -4.31 4.31zm5.23-35.6-1.63 22a.6.6 0 0 1 -.6.56h-6a.6.6 0 0 1 -.6-.56l-1.63-22a5.24 5.24 0 1 1 10.46 0z" fill="#ffc048"/></g></svg>
|
|
29
|
-
{{/if}}
|
|
30
|
-
</span>
|
|
31
|
-
{{/if}}
|
|
32
|
-
<span>{{title}}</span>
|
|
1
|
+
<div class="test-item
|
|
2
|
+
{{#if (eq status 'passed')}}status-passed
|
|
3
|
+
{{else if (or (eq status 'failed') (eq status 'timedOut'))}}status-failed
|
|
4
|
+
{{else if (includes status 'flaky')}}status-flaky
|
|
5
|
+
{{else if (eq status 'skipped')}}status-skipped is-hidden{{/if}}" data-suite-name="{{suite}}"
|
|
6
|
+
data-test-tags="{{joinWithSpace testTags}}" data-project-name="{{projectName}}" data-test-id="{{index}}"
|
|
7
|
+
data-test-status="{{status}} {{retry}}" data-test-duration="{{duration}}">
|
|
8
|
+
{{> testIcons}}
|
|
33
9
|
</div>
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -11,32 +11,40 @@ Welcome to **Ortoni Report**, a comprehensive and visually appealing HTML report
|
|
|
11
11
|
## Key Features
|
|
12
12
|
|
|
13
13
|
1. **Hierarchical Grouping**
|
|
14
|
+
|
|
14
15
|
- Tests are structured and grouped by filename, suite, and project, providing a clear and organized view of the entire test execution.
|
|
15
16
|
|
|
16
17
|
2. **Detailed Breakdown**
|
|
18
|
+
|
|
17
19
|
- Each suite displays tests categorized by project, with organized test results for better navigation.
|
|
18
20
|
|
|
19
21
|
3. **Comprehensive Test Details**
|
|
22
|
+
|
|
20
23
|
- Rich details include test status (passed, failed, skipped), duration, tags, errors, logs, annotations, screenshots, videos, and trace data.
|
|
21
24
|
- Users can sort and filter tests by suite, project, or script for more focused insights.
|
|
22
25
|
|
|
23
26
|
4. **Summary Statistics**
|
|
27
|
+
|
|
24
28
|
- Overview displays total tests, passed, failed, skipped, and flaky tests, with a success rate calculation for each suite.
|
|
25
29
|
|
|
26
30
|
5. **Chart Visualizations**
|
|
31
|
+
|
|
27
32
|
- Visualize test result distributions using:
|
|
28
33
|
- **Doughnut Chart**: Illustrates overall test result status (passed, failed, skipped, flaky).
|
|
29
34
|
- **Doughnut & Bar Charts**: Breakdown of results per project (Chromium, Firefox, etc.) for easy comparison.
|
|
30
35
|
|
|
31
36
|
6. **Advanced Search and Reset**
|
|
37
|
+
|
|
32
38
|
- Search and filter tests quickly using specific keywords or criteria. Easily reset filters to display all tests again.
|
|
33
39
|
|
|
34
40
|
7. **Customization & Themes**
|
|
41
|
+
|
|
35
42
|
- Personalize reports with project details, author name, test type, and toggle between light and dark themes.
|
|
36
43
|
- Flexibility to choose between Base64 images or file paths for screenshots.
|
|
37
44
|
- Customize report filenames and folder paths.
|
|
38
45
|
|
|
39
46
|
8. **Test Attachments**
|
|
47
|
+
|
|
40
48
|
- Screenshots
|
|
41
49
|
- Videos
|
|
42
50
|
- Trace viewer
|
|
@@ -45,22 +53,28 @@ Welcome to **Ortoni Report**, a comprehensive and visually appealing HTML report
|
|
|
45
53
|
- Console logs
|
|
46
54
|
|
|
47
55
|
9. **Integration and Configuration**
|
|
56
|
+
|
|
48
57
|
- Easily configure and integrate with Playwright using TypeScript/JavaScript.
|
|
49
58
|
- Configure reporting preferences within the Playwright setup for quick customization.
|
|
50
59
|
|
|
51
60
|
10. **Add Your Logo**
|
|
61
|
+
|
|
52
62
|
- Include your branding by adding a relative or absolute path to the config for a custom logo in the report.
|
|
53
63
|
|
|
54
64
|
11. **Share Reports**
|
|
65
|
+
|
|
55
66
|
- Generated reports are self-contained and ready to share right away, making it easier to distribute and review.
|
|
56
67
|
|
|
57
68
|
12. **Advanced Filtering**
|
|
69
|
+
|
|
58
70
|
- Apply filters based on project, tags, and test status simultaneously for precise reporting. See only the relevant tests.
|
|
59
71
|
|
|
60
72
|
13. **Colorful and Intuitive Dashboard**
|
|
73
|
+
|
|
61
74
|
- Vibrant, intuitive color schemes enhance the dashboard’s visual appeal, improving clarity for quick test status assessment.
|
|
62
75
|
|
|
63
76
|
14. **Selected Status Display**
|
|
77
|
+
|
|
64
78
|
- The UI now clearly displays the selected status filter, helping users keep track of the current filter criteria.
|
|
65
79
|
|
|
66
80
|
15. **Hide Skipped Tests by Default**
|
|
@@ -88,14 +102,14 @@ import { OrtoniReportConfig } from "ortoni-report";
|
|
|
88
102
|
|
|
89
103
|
const reportConfig: OrtoniReportConfig = {
|
|
90
104
|
port: 1994,
|
|
91
|
-
open: "
|
|
105
|
+
open: process.env.CI ? "never" : "always",
|
|
92
106
|
folderPath: "report",
|
|
93
107
|
filename: "index.html",
|
|
94
108
|
logo: "logo.png",
|
|
95
109
|
title: "Ortoni Test Report",
|
|
96
110
|
showProject: false,
|
|
97
111
|
projectName: "Ortoni-Report",
|
|
98
|
-
testType: "Release - Oct
|
|
112
|
+
testType: "Release - Oct 30, 2024",
|
|
99
113
|
authorName: "Koushik (LetCode with Koushik)",
|
|
100
114
|
preferredTheme: "light",
|
|
101
115
|
base64Image: true,
|
|
@@ -106,13 +120,15 @@ export default defineConfig({
|
|
|
106
120
|
// Other Playwright configurations
|
|
107
121
|
});
|
|
108
122
|
```
|
|
123
|
+
|
|
109
124
|
### Configure in `playwright.config.js`
|
|
125
|
+
|
|
110
126
|
```javascript
|
|
111
127
|
import { defineConfig } from "@playwright/test";
|
|
112
128
|
|
|
113
129
|
const reportConfig = {
|
|
114
130
|
port: 1994,
|
|
115
|
-
open: "
|
|
131
|
+
open: process.env.CI ? "never" : "always",D
|
|
116
132
|
folderPath: "report",
|
|
117
133
|
filename: "index.html",
|
|
118
134
|
logo: "logo.png",
|
|
@@ -171,4 +187,4 @@ Thank you for using **Ortoni Report**! We’re committed to providing you with a
|
|
|
171
187
|
|
|
172
188
|
**LetCode with Koushik**
|
|
173
189
|
|
|
174
|
-
---
|
|
190
|
+
---
|