ortoni-report 2.0.5 → 2.0.7

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.
@@ -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">
@@ -35,7 +25,7 @@
35
25
  </div>
36
26
  <div class="navbar-item">
37
27
  <figure class="image">
38
- <a href="https://github.com/ortoniKC/ortoni-report/" target="_blank">
28
+ <a href="https://www.letcode.in" target="_blank">
39
29
  <img
40
30
  src="https://raw.githubusercontent.com/ortoniKC/ortoni-report/refs/heads/main/ortoni.png" />
41
31
  </a>
@@ -1,131 +1,237 @@
1
+ <style>
2
+ :root {
3
+ --primary-gradient: linear-gradient(135deg, #694F8E 0%, #B692C2 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
+ margin-left: auto;
113
+ opacity: 0.8;
114
+ }
115
+
116
+ @keyframes slideIn {
117
+ from {
118
+ opacity: 0;
119
+ transform: translateX(-5px);
120
+ }
121
+
122
+ to {
123
+ opacity: 1;
124
+ transform: translateX(0);
125
+ }
126
+ }
127
+
128
+ details[open]>.test-content {
129
+ animation: slideIn 0.2s ease-out;
130
+ }
131
+ </style>
1
132
  <div class="content sidebar">
2
133
  {{#if showProject}}
3
134
  {{#each groupedResults}}
4
- <details class="box">
5
- <summary class="is-size-5 has-icon-right">
135
+ <details class="test-group">
136
+ <summary class="is-size-5">
6
137
  <div class="icon-text">
7
- <span class="icon has-text-info">
8
- <svg class="image is-16x16" height="512" viewBox="0 0 32 32" width="512"
9
- xmlns="http://www.w3.org/2000/svg">
10
- <g data-name="Layer 2">
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>
138
+ <span class="icon">
139
+ <svg class="icon-chevron" width="16" height="16" viewBox="0 0 24 24" fill="none"
140
+ stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
141
+ <polyline points="9 18 15 12 9 6" />
18
142
  </svg>
19
143
  </span>
20
144
  <span>{{@key}}</span>
21
145
  </div>
22
146
  </summary>
23
- <ul class="mt-4 mb-4">
147
+ <div class="test-content">
24
148
  {{#each this}}
25
- <details class="mt-2 mb-2">
26
- <summary class="is-size-5 is-capitalized">
27
- <div class="icon-text">
28
- <span class="icon has-text-info">
29
- <svg class="image is-16x16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
30
- <path
31
- 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"
32
- fill="#e6e9ed" />
149
+ <details class="test-suite">
150
+ <summary class="is-size-6 is-capitalized">
151
+ <span class="icon is-small">
152
+ <svg class="image is-16x16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
153
+ <path
154
+ 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"
155
+ fill="#e6e9ed" />
156
+ <path
157
+ 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"
158
+ fill="#ccd1d9" />
159
+ <path
160
+ d="M181.344 192v245.327C181.344 478.562 214.781 512 256 512c41.25 0 74.672-33.438 74.672-74.673V192H181.344z"
161
+ fill="#a0d468" />
162
+ <g fill="#434a54">
33
163
  <path
34
- 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"
35
- fill="#ccd1d9" />
164
+ 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" />
165
+ </g>
166
+ </svg>
167
+ </span>
168
+ <span>{{@key}}</span>
169
+ </summary>
170
+ {{#each this}}
171
+ <details class="test-case">
172
+ <summary>
173
+ <span class="icon is-small">
174
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor"
175
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
36
176
  <path
37
- d="M181.344 192v245.327C181.344 478.562 214.781 512 256 512c41.25 0 74.672-33.438 74.672-74.673V192H181.344z"
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>
177
+ 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
178
  </svg>
44
179
  </span>
45
- <span>{{@key}}</span>
46
- </div>
47
- </summary>
48
- <ul class="mt-4 mb-4">
180
+ <span class="is-size-6">{{@key}}</span>
181
+ </summary>
49
182
  {{#each this}}
50
- <details class="mt-2 mb-2">
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>
183
+ {{> testStatus}}
63
184
  {{/each}}
64
- </ul>
185
+ </details>
186
+ {{/each}}
65
187
  </details>
66
188
  {{/each}}
67
- </ul>
189
+ </div>
68
190
  </details>
69
191
  {{/each}}
70
192
  {{else}}
71
193
  {{#each groupedResults}}
72
- <details class="box">
73
- <summary class="is-size-5 has-icon-right">
194
+ <details class="test-group">
195
+ <summary class="is-size-5">
74
196
  <div class="icon-text">
75
- <span class="icon has-text-info">
76
- <svg class="image is-16x16" height="512" viewBox="0 0 32 32" width="512"
77
- xmlns="http://www.w3.org/2000/svg">
78
- <g data-name="Layer 2">
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>
197
+ <span class="icon">
198
+ <svg class="icon-chevron" width="16" height="16" viewBox="0 0 24 24" fill="none"
199
+ stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
200
+ <polyline points="9 18 15 12 9 6" />
86
201
  </svg>
87
202
  </span>
88
203
  <span>{{@key}}</span>
89
204
  </div>
90
205
  </summary>
91
- <ul class="mt-4 mb-4">
206
+ <div class="test-content">
92
207
  {{#each this}}
93
- <details class="mt-2 mb-2">
94
- <summary class="is-size-5 is-capitalized">
95
- <div class="icon-text">
96
- <span class="icon has-text-info">
97
- <svg class="image is-16x16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
98
- <path
99
- 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"
100
- fill="#e6e9ed" />
101
- <path
102
- 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"
103
- fill="#ccd1d9" />
208
+ <details class="test-case">
209
+ <summary>
210
+ <span class="icon is-small">
211
+ <svg class="image is-16x16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
212
+ <path
213
+ 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"
214
+ fill="#e6e9ed" />
215
+ <path
216
+ 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"
217
+ fill="#ccd1d9" />
218
+ <path
219
+ d="M181.344 192v245.327C181.344 478.562 214.781 512 256 512c41.25 0 74.672-33.438 74.672-74.673V192H181.344z"
220
+ fill="#a0d468" />
221
+ <g fill="#434a54">
104
222
  <path
105
- d="M181.344 192v245.327C181.344 478.562 214.781 512 256 512c41.25 0 74.672-33.438 74.672-74.673V192H181.344z"
106
- fill="#a0d468" />
107
- <g fill="#434a54">
108
- <path
109
- 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" />
110
- </g>
111
- </svg>
112
- </span>
113
- <span>{{@key}}</span>
114
- </div>
223
+ 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" />
224
+ </g>
225
+ </svg>
226
+ </span>
227
+ <span class="is-size-6">{{@key}}</span>
115
228
  </summary>
116
- <ul class="mt-4 mb-4">
117
- {{#each this}}
118
- <li class="media {{#if (eq status 'skipped')}}is-hidden{{/if}}" data-suite-name="{{suite}}"
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>
229
+ {{#each this}}
230
+ {{> testStatus}}
231
+ {{/each}}
126
232
  </details>
127
233
  {{/each}}
128
- </ul>
234
+ </div>
129
235
  </details>
130
236
  {{/each}}
131
237
  {{/if}}
@@ -0,0 +1,13 @@
1
+ <div class="icon-text">
2
+ {{#if isRetry}}
3
+ <span class="icon has-text-info">
4
+ <i class="fa-solid fa-rotate-right" style="color: #fff;"></i>
5
+ </span>
6
+ {{/if}}
7
+ <span>{{title}}</span>
8
+ </div>
9
+ {{#if @root.showProject}}
10
+ <span class="tag duration-tag has-text-weight-medium">{{duration}}</span>
11
+ {{else}}
12
+ <span class="tag duration-tag has-text-weight-medium">{{projectName}}</span>
13
+ {{/if}}
@@ -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
- <h2 class="title is-4">Tests</h2>
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="fas fa-angle-down" aria-hidden="true"></i>
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}}"> {{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}}"> {{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="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" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1"><circle cx="256" cy="256" fill="#00ab5e" r="256"/><path 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" fill="#fff"/></svg>
5
- </span>
6
- {{else}}
7
- <span class="icon has-text-info">
8
- {{#if (eq status "passed")}}
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-history-id="{{testId}}" data-test-status="{{status}} {{retry}}" data-test-duration="{{duration}}">
8
+ {{> testIcons}}
33
9
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ortoni-report",
3
- "version": "2.0.5",
3
+ "version": "2.0.7",
4
4
  "description": "Playwright Report By LetCode with Koushik",
5
5
  "scripts": {
6
6
  "tsc": "tsc",
@@ -34,10 +34,13 @@
34
34
  "@playwright/test": "^1.44.1",
35
35
  "@types/express": "^5.0.0",
36
36
  "@types/node": "^22.0.2",
37
+ "@types/sqlite3": "^3.1.11",
37
38
  "@types/ws": "^8.5.12",
38
39
  "ansi-to-html": "^0.7.2",
39
40
  "express": "^4.21.1",
40
41
  "handlebars": "^4.7.8",
42
+ "sqlite": "^5.1.1",
43
+ "sqlite3": "^5.1.7",
41
44
  "tsup": "^6.5.0",
42
45
  "typescript": "^4.9.4",
43
46
  "ws": "^8.18.0"