ortoni-report 3.0.5 → 4.0.2-beta.0

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.
Files changed (45) hide show
  1. package/changelog.md +30 -0
  2. package/dist/chunk-45EJSEX2.mjs +632 -0
  3. package/dist/chunk-75EAJL2U.mjs +632 -0
  4. package/dist/chunk-FGIYOFIC.mjs +632 -0
  5. package/dist/chunk-FHKWBHU6.mjs +633 -0
  6. package/dist/chunk-GLICR3VS.mjs +637 -0
  7. package/dist/chunk-HFO6XSKC.mjs +633 -0
  8. package/dist/chunk-HOZD6YIV.mjs +634 -0
  9. package/dist/chunk-IJO2YIFE.mjs +637 -0
  10. package/dist/chunk-INS3E7E6.mjs +638 -0
  11. package/dist/chunk-JEIWNUQY.mjs +632 -0
  12. package/dist/chunk-JPLAGYR7.mjs +632 -0
  13. package/dist/chunk-NM6ULN2O.mjs +632 -0
  14. package/dist/chunk-OZS6QIJS.mjs +638 -0
  15. package/dist/chunk-P57227VN.mjs +633 -0
  16. package/dist/chunk-QMTRYN5N.js +635 -0
  17. package/dist/chunk-TI33PMMQ.mjs +639 -0
  18. package/dist/chunk-Z5NBP5TS.mjs +635 -0
  19. package/dist/cli/cli.cjs +678 -0
  20. package/dist/cli/cli.d.cts +1 -0
  21. package/dist/cli/cli.js +580 -11
  22. package/dist/cli/cli.mjs +62 -5
  23. package/dist/index.html +21 -0
  24. package/dist/ortoni-report.cjs +2134 -0
  25. package/dist/ortoni-report.d.cts +111 -0
  26. package/dist/ortoni-report.d.mts +3 -12
  27. package/dist/ortoni-report.d.ts +3 -12
  28. package/dist/ortoni-report.js +182 -314
  29. package/dist/ortoni-report.mjs +64 -740
  30. package/package.json +4 -5
  31. package/readme.md +26 -33
  32. package/dist/chunk-AY2PKDHU.mjs +0 -69
  33. package/dist/chunk-OOALU4XG.mjs +0 -72
  34. package/dist/chunk-ZSIRUQUA.mjs +0 -68
  35. package/dist/style/main.css +0 -80
  36. package/dist/views/analytics.hbs +0 -103
  37. package/dist/views/head.hbs +0 -11
  38. package/dist/views/main.hbs +0 -1295
  39. package/dist/views/project.hbs +0 -238
  40. package/dist/views/sidebar.hbs +0 -244
  41. package/dist/views/summaryCard.hbs +0 -15
  42. package/dist/views/testIcons.hbs +0 -13
  43. package/dist/views/testPanel.hbs +0 -45
  44. package/dist/views/testStatus.hbs +0 -9
  45. package/dist/views/userInfo.hbs +0 -260
@@ -1,238 +0,0 @@
1
- <style>
2
- :root {
3
- --primary-gradient: hsl(var(--bulma-primary-h), var(--bulma-primary-s), var(--bulma-primary-l)) !important;
4
- --flaky-gradient: hsl(var(--bulma-warning-h), var(--bulma-warning-s), var(--bulma-warning-l)) !important;
5
- --retry-gradient: linear-gradient(135deg, #94a3b8 0%, #c0cad9 100%);
6
- --skip-gradient: hsl(var(--bulma-info-h), var(--bulma-info-s), var(--bulma-info-l)) !important;
7
- --success-gradient: hsl(var(--bulma-success-h), var(--bulma-success-s), var(--bulma-success-l)) !important;
8
- --error-gradient: hsl(var(--bulma-danger-h), var(--bulma-danger-s), var(--bulma-danger-l)) !important;
9
- }
10
-
11
- .projectsidebar {
12
- overflow-y: auto;
13
- max-height: 60vh;
14
- padding: 0px 10px 0px 0px;
15
- }
16
-
17
- .test-group {
18
- margin-bottom: 0.5rem;
19
- border-radius: 8px;
20
- transition: all 0.2s ease;
21
- }
22
-
23
- .test-group summary {
24
- padding: 0.5rem;
25
- cursor: pointer;
26
- user-select: none;
27
- display: flex;
28
- align-items: center;
29
- gap: 0.5rem;
30
- border-radius: 8px;
31
- border-left: 3px solid var(--primary-gradient);
32
- }
33
-
34
- .test-suite {
35
- margin: 0.35rem;
36
- border-radius: 6px;
37
- }
38
-
39
- .test-suite summary {
40
- padding: 0.35rem 0.5rem;
41
- color: inherit;
42
- background: transparent;
43
- transition: background-color 0.2s ease;
44
- }
45
-
46
- .test-case {
47
- margin: 0.35rem;
48
- border-radius: 6px;
49
- }
50
-
51
- .test-case summary {
52
- border-left: transparent;
53
- padding: 0.35rem 0.5rem;
54
- background: transparent;
55
- transition: background-color 0.2s ease;
56
- }
57
-
58
- .test-item {
59
- padding: 0.4rem 0.5rem;
60
- margin: 0.35rem;
61
- border-radius: 6px;
62
- display: flex;
63
- align-items: center;
64
- gap: 0.5rem;
65
- flex-wrap: wrap;
66
- }
67
-
68
- .test-item span {
69
- overflow: hidden;
70
- white-space: nowrap;
71
- text-overflow: ellipsis;
72
- max-width: 35ch;
73
- }
74
-
75
- .status-passed {
76
- border-left: 4px solid var(--success-gradient);
77
- }
78
-
79
- .status-skipped {
80
- border-left: 4px solid var(--skip-gradient);
81
- }
82
-
83
- .status-failed {
84
- border-left: 4px solid var(--error-gradient);
85
- }
86
-
87
- .status-flaky {
88
- border-left: 4px solid var(--flaky-gradient);
89
- }
90
-
91
- .status-retry {
92
- border-left: 4px solid #69748c;
93
- }
94
-
95
- .icon-chevron {
96
- transition: transform 0.2s ease;
97
- width: 16px;
98
- height: 16px;
99
- }
100
-
101
- details[open]>summary .icon-chevron {
102
- transform: rotate(90deg);
103
- }
104
-
105
- .listselected {
106
- font-weight: bold;
107
- border-right: 4px solid var(--bulma-primary);
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>
132
- <div class="content projectsidebar">
133
- {{#if showProject}}
134
- {{#each groupedResults}}
135
- <details class="test-group">
136
- <summary class="is-size-5">
137
- <div class="icon-text">
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" />
142
- </svg>
143
- </span>
144
- <span>{{@key}}</span>
145
- </div>
146
- </summary>
147
- <div class="test-content">
148
- {{#each this}}
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">
163
- <path
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">
176
- <path
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" />
178
- </svg>
179
- </span>
180
- <span class="is-size-6">{{@key}}</span>
181
- </summary>
182
- {{#each this}}
183
- {{> testStatus}}
184
- {{/each}}
185
- </details>
186
- {{/each}}
187
- </details>
188
- {{/each}}
189
- </div>
190
- </details>
191
- {{/each}}
192
- {{else}}
193
- {{#each groupedResults}}
194
- <details class="test-group">
195
- <summary class="is-size-5">
196
- <div class="icon-text">
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" />
201
- </svg>
202
- </span>
203
- <span>{{@key}}</span>
204
- </div>
205
- </summary>
206
- <div class="test-content">
207
- {{#each this}}
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">
222
- <path
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>
228
- </summary>
229
- {{#each this}}
230
- {{> testStatus}}
231
- {{/each}}
232
- </details>
233
- {{/each}}
234
- </div>
235
- </details>
236
- {{/each}}
237
- {{/if}}
238
- </div>
@@ -1,244 +0,0 @@
1
- <style>
2
- /* Additional styles for sidebar layout */
3
- :root {
4
- --sidebar-width: 250px;
5
- --sidebar-collapsed-width: 60px;
6
- --primary-color: #735DA5;
7
- }
8
-
9
- body {
10
- display: flex;
11
- flex-direction: column;
12
- min-height: 100vh;
13
- margin: 0;
14
- padding: 0;
15
- }
16
-
17
- .app-container {
18
- display: flex;
19
- flex: 1;
20
- overflow: hidden;
21
- }
22
-
23
- .sidebar {
24
- width: var(--sidebar-width);
25
- border-right: 1px solid #e0e0e0;
26
- height: 100vh;
27
- position: fixed;
28
- left: 0;
29
- transition: width 0.3s ease;
30
- z-index: 10;
31
- }
32
-
33
- .sidebar.collapsed {
34
- width: var(--sidebar-collapsed-width);
35
- }
36
-
37
- .sidebar-header {
38
- padding: 1rem;
39
- border-bottom: 1px solid #e0e0e0;
40
- font-weight: bold;
41
- }
42
-
43
- .sidebar-menu {
44
- list-style: none;
45
- padding: 0;
46
- margin: 0;
47
- }
48
-
49
- .sidebar-footer {
50
- list-style: none;
51
- padding: 0;
52
- margin: 0;
53
- }
54
-
55
- .sidebar-menu-item {
56
- padding: 0;
57
- }
58
-
59
- .sidebar-menu-link {
60
- display: flex;
61
- align-items: center;
62
- padding: 0.75rem 1rem;
63
- text-decoration: none;
64
- transition: background-color 0.2s;
65
- }
66
-
67
- .sidebar-menu-link.active {
68
- font-weight: bold;
69
- border-left: 3px solid var(--primary-color);
70
- }
71
-
72
- .sidebar-menu-link .icon {
73
- margin-right: 0.5rem;
74
- }
75
-
76
- .main-content {
77
- flex: 1;
78
- margin-left: var(--sidebar-width);
79
- padding: 1.5rem;
80
- overflow-y: auto;
81
- transition: margin-left 0.3s ease;
82
- }
83
-
84
- .navbar {
85
- position: fixed;
86
- top: 0;
87
- left: 0;
88
- right: 0;
89
- height: var(--header-height);
90
- z-index: 20;
91
- }
92
-
93
- .theme {
94
- display: flex;
95
- align-items: center;
96
- padding: 0.75rem 1rem;
97
- text-decoration: none;
98
- transition: background-color 0.2s;
99
- bottom: 65px;
100
- position: absolute;
101
- }
102
-
103
- .theme .icon {
104
- margin-right: 0.5rem;
105
- }
106
-
107
-
108
- .section {
109
- margin-top: var(--header-height);
110
- padding-top: 1rem;
111
- }
112
-
113
- /* Mobile responsive styles */
114
- @media screen and (max-width: 768px) {
115
- .sidebar {
116
- transform: translateX(-100%);
117
- }
118
-
119
- .sidebar.is-active {
120
- transform: translateX(0);
121
- }
122
-
123
- .main-content {
124
- margin-left: 0;
125
- }
126
-
127
- .sidebar-toggle {
128
- display: block;
129
- }
130
-
131
- .sidebar-toggle-btn {
132
- display: none;
133
- }
134
- }
135
-
136
- .sidebar-toggle-btn {
137
- position: absolute;
138
- bottom: 20px;
139
- right: -15px;
140
- width: 30px;
141
- height: 30px;
142
- background-color: var(--primary-color);;
143
- color: white;
144
- border-radius: 50%;
145
- display: flex;
146
- align-items: center;
147
- justify-content: center;
148
- cursor: pointer;
149
- z-index: 20;
150
- border: none;
151
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
152
- }
153
-
154
- .sidebar-menu-text {
155
- transition: opacity 0.2s ease;
156
- white-space: nowrap;
157
- }
158
-
159
- .sidebar.collapsed .sidebar-menu-text {
160
- opacity: 0;
161
- visibility: hidden;
162
- }
163
-
164
- .sidebar.collapsed .sidebar-header {
165
- text-align: center;
166
- padding: 1rem 0.5rem;
167
- }
168
-
169
- .main-content.expanded {
170
- margin-left: var(--sidebar-collapsed-width);
171
- }
172
- .sidebar-header {
173
- cursor: none;
174
- display: flex;
175
- align-items: center;
176
- justify-content: start;
177
- padding: 1rem;
178
- border-bottom: 1px solid #e0e0e0;
179
- font-weight: bold;
180
- height: 60px; /* Fixed height for consistency */
181
- }
182
-
183
- .sidebar-header .logo {
184
- width: 30px; /* Adjust logo size as needed */
185
- height: 30px;
186
- }
187
-
188
- .sidebar-header .header-text {
189
- display: block; /* Show text by default */
190
- }
191
-
192
- /* Collapsed state adjustments */
193
- .sidebar.collapsed .sidebar-header .header-text {
194
- display: none; /* Hide text when collapsed */
195
- }
196
-
197
- .sidebar.collapsed .sidebar-header .logo {
198
- display: block; /* Show logo when collapsed */
199
- }
200
- </style>
201
- <aside class="sidebar" id="sidebar">
202
- <div class="sidebar-header">
203
- <figure class="image">
204
- <img alt="Logo" class="logo" src="https://raw.githubusercontent.com/ortoniKC/ortoni-report/refs/heads/main/ortoni.png" />
205
- </figure>
206
- <span class="header-text ml-4 title is-5">Ortoni Report</span>
207
- </div>
208
- <ul class="sidebar-menu">
209
- <li class="sidebar-menu-item">
210
- <a class="sidebar-menu-link active" data-section="dashboard">
211
- <span class="icon">
212
- <i class="fa fa-chart-bar"></i>
213
- </span>
214
- <span class="sidebar-menu-text">Dashboard</span>
215
- </a>
216
- </li>
217
- <li class="sidebar-menu-item">
218
- <a class="sidebar-menu-link" data-section="tests">
219
- <span class="icon">
220
- <i class="fa fa-vial"></i>
221
- </span>
222
- <span class="sidebar-menu-text">Tests</span>
223
- </a>
224
- </li>
225
- <li class="sidebar-menu-item">
226
- <a class="sidebar-menu-link" data-section="analytics">
227
- <span class="icon">
228
- <i class="fa fa-chart-line"></i>
229
- </span>
230
- <span class="sidebar-menu-text">Analytics</span>
231
- </a>
232
- </li>
233
- </ul>
234
- <a class="theme" data-theme-status="{{preferredTheme}}" id="toggle-theme">
235
- <span class="icon">
236
- <i class="" id="theme-icon"></i>
237
- </span>
238
- <span class="sidebar-menu-text">Theme</span>
239
- </a>
240
-
241
- <button class="sidebar-toggle-btn" id="sidebar-toggle">
242
- <i class="fa fa-chevron-left" id="sidebar-toggle-icon"></i>
243
- </button>
244
- </aside>
@@ -1,15 +0,0 @@
1
- {{#if (gr statusCount) }}
2
- <div class="column is-one-sixth">
3
- <div class="box {{filter}} {{#if filter}}is-clickable{{/if}}" style="border-left: 5px solid {{bg}}"
4
- data-status="{{status}}">
5
- {{#if icon}}
6
- <p class="title is-size-6 mb-0">
7
- {{statusCount}} <span class="icon is-small"><i class="{{icon}}"></i></span>
8
- </p>
9
- {{else}}
10
- <p class="title is-size-3 mb-0">{{statusCount}}</p>
11
- <p class="subtitle is-size-7">{{statusHeader}}</p>
12
- {{/if}}
13
- </div>
14
- </div>
15
- {{/if}}
@@ -1,13 +0,0 @@
1
- <div class="icon-text">
2
- {{#if isRetry}}
3
- <span class="icon has-text-info">
4
- <i class="fa-solid fa-rotate-right"></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,45 +0,0 @@
1
- <div class="columns is-mobile is-vcentered is-gapless">
2
- <div class="column">
3
- <div class="control">
4
- <input class="input" name="search" type="search" placeholder="Search by test" />
5
- </div>
6
- </div>
7
- <div class="column is-2 mr-3">
8
- <div id="project-filter" class="dropdown is-right is-hoverable is-pulled-right">
9
- <div class="dropdown-trigger">
10
- <button class="button is-primary" aria-haspopup="true" aria-controls="select-filter">
11
- <span>Filters</span>
12
- <span class="icon is-small">
13
- <i class="fa-solid fa-filter" aria-hidden="true"></i>
14
- </span>
15
- </button>
16
- </div>
17
- <div class="dropdown-menu" id="select-filter" role="menu">
18
- <div class="dropdown-content">
19
- <p class="dropdown-item has-text-weight-semibold has-text-primary">Projects</p>
20
- {{#each projects}}
21
- <div class="dropdown-item">
22
- <label class="checkbox is-capitalized">
23
- <input name="{{this}}" type="checkbox" data-filter-type="project" value="{{this}}" />
24
- {{this}}
25
- </label>
26
- </div>
27
- {{/each}}
28
- <hr class="dropdown-divider" />
29
- <p class="dropdown-item has-text-weight-semibold has-text-primary">Tags</p>
30
- {{#each allTags}}
31
- <div class="dropdown-item">
32
- <label class="checkbox">
33
- <input name="{{this}}" type="checkbox" data-filter-type="test-tags" value="{{this}}" />
34
- {{this}}
35
- </label>
36
- </div>
37
- {{/each}}
38
- </div>
39
- </div>
40
- </div>
41
- </div>
42
- </div>
43
- <div class="content">
44
- <span id="selected-filters"></span>
45
- </div>
@@ -1,9 +0,0 @@
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}} ml-4" 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}}
9
- </div>