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.
- package/changelog.md +30 -0
- package/dist/chunk-45EJSEX2.mjs +632 -0
- package/dist/chunk-75EAJL2U.mjs +632 -0
- package/dist/chunk-FGIYOFIC.mjs +632 -0
- package/dist/chunk-FHKWBHU6.mjs +633 -0
- package/dist/chunk-GLICR3VS.mjs +637 -0
- package/dist/chunk-HFO6XSKC.mjs +633 -0
- package/dist/chunk-HOZD6YIV.mjs +634 -0
- package/dist/chunk-IJO2YIFE.mjs +637 -0
- package/dist/chunk-INS3E7E6.mjs +638 -0
- package/dist/chunk-JEIWNUQY.mjs +632 -0
- package/dist/chunk-JPLAGYR7.mjs +632 -0
- package/dist/chunk-NM6ULN2O.mjs +632 -0
- package/dist/chunk-OZS6QIJS.mjs +638 -0
- package/dist/chunk-P57227VN.mjs +633 -0
- package/dist/chunk-QMTRYN5N.js +635 -0
- package/dist/chunk-TI33PMMQ.mjs +639 -0
- package/dist/chunk-Z5NBP5TS.mjs +635 -0
- package/dist/cli/cli.cjs +678 -0
- package/dist/cli/cli.d.cts +1 -0
- package/dist/cli/cli.js +580 -11
- package/dist/cli/cli.mjs +62 -5
- package/dist/index.html +21 -0
- package/dist/ortoni-report.cjs +2134 -0
- package/dist/ortoni-report.d.cts +111 -0
- package/dist/ortoni-report.d.mts +3 -12
- package/dist/ortoni-report.d.ts +3 -12
- package/dist/ortoni-report.js +182 -314
- package/dist/ortoni-report.mjs +64 -740
- package/package.json +4 -5
- package/readme.md +26 -33
- package/dist/chunk-AY2PKDHU.mjs +0 -69
- package/dist/chunk-OOALU4XG.mjs +0 -72
- package/dist/chunk-ZSIRUQUA.mjs +0 -68
- package/dist/style/main.css +0 -80
- package/dist/views/analytics.hbs +0 -103
- package/dist/views/head.hbs +0 -11
- package/dist/views/main.hbs +0 -1295
- package/dist/views/project.hbs +0 -238
- package/dist/views/sidebar.hbs +0 -244
- package/dist/views/summaryCard.hbs +0 -15
- package/dist/views/testIcons.hbs +0 -13
- package/dist/views/testPanel.hbs +0 -45
- package/dist/views/testStatus.hbs +0 -9
- package/dist/views/userInfo.hbs +0 -260
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ortoni-report",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.2-beta.0",
|
|
4
4
|
"description": "Playwright Report By LetCode with Koushik",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"tsc": "tsc",
|
|
@@ -38,16 +38,15 @@
|
|
|
38
38
|
"@types/express": "^5.0.0",
|
|
39
39
|
"@types/node": "^22.0.2",
|
|
40
40
|
"@types/sqlite3": "^3.1.11",
|
|
41
|
+
"marked": "^16.0.0",
|
|
41
42
|
"tsup": "^8.4.0",
|
|
42
|
-
"typescript": "^4.9.4"
|
|
43
|
-
"marked": "^16.0.0"
|
|
43
|
+
"typescript": "^4.9.4"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@playwright/test": "
|
|
46
|
+
"@playwright/test": "^1.54.0",
|
|
47
47
|
"ansi-to-html": "^0.7.2",
|
|
48
48
|
"commander": "^12.1.0",
|
|
49
49
|
"express": "^4.21.1",
|
|
50
|
-
"handlebars": "^4.7.8",
|
|
51
50
|
"sqlite": "^5.1.1",
|
|
52
51
|
"sqlite3": "^5.1.7"
|
|
53
52
|
},
|
package/readme.md
CHANGED
|
@@ -17,19 +17,20 @@ A comprehensive and visually appealing HTML report generator tailored for Playwr
|
|
|
17
17
|
- **Dashboard**: High-level overview of test analytics and trends.
|
|
18
18
|
- **Tests**: Dive into individual test details including logs, screenshots, and errors.
|
|
19
19
|
- **Analytics**: Track overall execution metrics, trends, and flaky/slow test insights.
|
|
20
|
+
- **Glance**: See all the tests in a single Tabular view
|
|
20
21
|
- **Hierarchical Grouping**: Tests are organized by filename, suite, and project for better traceability.
|
|
21
|
-
- **Test History View**: Access up to 10 recent executions, categorized by suite and project.
|
|
22
|
+
- **Test History View**: Access up to 10 recent executions, categorized by suite and project with test Status, Duration.
|
|
22
23
|
- **Configurable Integration**: Easy setup with Playwright using TypeScript/JavaScript, along with customizable preferences.
|
|
23
|
-
- **Advanced Filtering**: Filter by
|
|
24
|
+
- **Advanced Filtering**: Filter by Project, Tags, and Status
|
|
24
25
|
|
|
25
26
|
### 2. **Detailed Reporting**
|
|
26
27
|
|
|
27
|
-
- **Comprehensive Test Data**: Includes status, duration, tags, logs, errors, screenshots, videos,
|
|
28
|
-
- **Native Trace Viewer**: Directly open the trace viewer within the reporter
|
|
28
|
+
- **Comprehensive Test Data**: Includes status, duration, tags, logs, errors, screenshots, videos, trace viewer & markdown
|
|
29
|
+
- **Native Trace Viewer**: Directly open the trace viewer within the reporter in a new tab
|
|
29
30
|
|
|
30
31
|
### 3. **Visualization & Insights**
|
|
31
32
|
|
|
32
|
-
- **Test Analytics Dashboard**
|
|
33
|
+
- **Test Analytics Dashboard**
|
|
33
34
|
|
|
34
35
|
- Summary of total test runs, passed/failed counts, pass rate, and average duration.
|
|
35
36
|
- **Trends Over Time**: Line chart showing test results across the last 30 runs.
|
|
@@ -38,7 +39,7 @@ A comprehensive and visually appealing HTML report generator tailored for Playwr
|
|
|
38
39
|
|
|
39
40
|
- **Chart Visualizations**:
|
|
40
41
|
|
|
41
|
-
-
|
|
42
|
+
- Charts for test summary, per-project breakdowns
|
|
42
43
|
- Bar charts for project-specific comparisons.
|
|
43
44
|
- **Line Chart for Trends**: Visualize execution status progression over time.
|
|
44
45
|
|
|
@@ -54,12 +55,11 @@ A comprehensive and visually appealing HTML report generator tailored for Playwr
|
|
|
54
55
|
### 5. **User Experience & Usability**
|
|
55
56
|
|
|
56
57
|
- **Search & Reset**: Quickly search by keyword or status, with easy reset controls.
|
|
57
|
-
- **Skip Management**: Skipped tests are hidden by default to declutter views.
|
|
58
58
|
- **Self-Contained Reports**: Easily share and review offline-friendly reports.
|
|
59
59
|
- **Multi-Filters**: Combine filters for targeted test analysis.
|
|
60
60
|
- **Meta Information**: Add custom user or environment metadata to reports.
|
|
61
61
|
- **CLI**: Open the reporter anytime using the builin CLI
|
|
62
|
-
- **Open Markdown**: View markdown
|
|
62
|
+
- **Open Markdown**: View markdown - Copy and use it in your AI prompt
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
@@ -84,25 +84,21 @@ import * as os from "os";
|
|
|
84
84
|
|
|
85
85
|
const reportConfig: OrtoniReportConfig = {
|
|
86
86
|
open: process.env.CI ? "never" : "always", // default to never
|
|
87
|
-
folderPath: "report
|
|
87
|
+
folderPath: "my-report",
|
|
88
88
|
filename: "index.html",
|
|
89
|
-
logo:"logo.{png, jpg}",
|
|
90
89
|
title: "Ortoni Test Report",
|
|
91
|
-
showProject:
|
|
92
|
-
projectName: "
|
|
90
|
+
showProject: false,
|
|
91
|
+
projectName: "Your Project title",
|
|
93
92
|
testType: "Functional",
|
|
94
93
|
authorName: os.userInfo().username,
|
|
95
94
|
base64Image: false,
|
|
96
95
|
stdIO: false,
|
|
97
|
-
preferredTheme: "light",
|
|
98
|
-
chartType: "doughnut" | "pie";
|
|
99
96
|
meta: {
|
|
100
|
-
|
|
97
|
+
"Test Cycle": "Aug 25, 2025",
|
|
101
98
|
version: "3",
|
|
102
|
-
description: "
|
|
103
|
-
testCycle: "04121994",
|
|
99
|
+
description: "My automation suite",
|
|
104
100
|
release: "0.3",
|
|
105
|
-
|
|
101
|
+
platform: os.type(),
|
|
106
102
|
},
|
|
107
103
|
};
|
|
108
104
|
|
|
@@ -118,26 +114,22 @@ export default defineConfig({
|
|
|
118
114
|
import { defineConfig } from "@playwright/test";
|
|
119
115
|
|
|
120
116
|
const reportConfig = {
|
|
121
|
-
open: process.env.CI ? "never" : "always",
|
|
122
|
-
folderPath: "report
|
|
117
|
+
open: process.env.CI ? "never" : "always", // default to never
|
|
118
|
+
folderPath: "my-report",
|
|
123
119
|
filename: "index.html",
|
|
124
|
-
logo:"logo.{png, jpg}",
|
|
125
120
|
title: "Ortoni Test Report",
|
|
126
|
-
showProject:
|
|
127
|
-
projectName: "
|
|
128
|
-
testType: "
|
|
129
|
-
authorName:
|
|
121
|
+
showProject: false,
|
|
122
|
+
projectName: "Your Project title",
|
|
123
|
+
testType: "Functional",
|
|
124
|
+
authorName: os.userInfo().username,
|
|
130
125
|
base64Image: false,
|
|
131
126
|
stdIO: false,
|
|
132
|
-
preferredTheme: "light",
|
|
133
|
-
chartType: "doughnut" | "pie";
|
|
134
127
|
meta: {
|
|
135
|
-
|
|
136
|
-
version: "3
|
|
137
|
-
description: "
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
platform: "Windows",
|
|
128
|
+
"Test Cycle": "Aug 25, 2025",
|
|
129
|
+
version: "3",
|
|
130
|
+
description: "My automation suite",
|
|
131
|
+
release: "0.3",
|
|
132
|
+
platform: os.type(),
|
|
141
133
|
},
|
|
142
134
|
};
|
|
143
135
|
|
|
@@ -152,6 +144,7 @@ export default defineConfig({
|
|
|
152
144
|
### Command: `show-report`
|
|
153
145
|
|
|
154
146
|
This command starts a local Express server and serves the generated Ortoni report. You can open the report in your default browser.
|
|
147
|
+
Trace viewer and markdown support only in local server or cloud server
|
|
155
148
|
|
|
156
149
|
#### Options
|
|
157
150
|
|
package/dist/chunk-AY2PKDHU.mjs
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
|
|
5
|
-
// src/utils/expressServer.ts
|
|
6
|
-
import express from "express";
|
|
7
|
-
import path from "path";
|
|
8
|
-
import { spawn } from "child_process";
|
|
9
|
-
function startReportServer(reportFolder, reportFilename, port = 2004, open) {
|
|
10
|
-
const app = express();
|
|
11
|
-
app.use(express.static(reportFolder));
|
|
12
|
-
app.get("/", (_req, res) => {
|
|
13
|
-
try {
|
|
14
|
-
res.sendFile(path.resolve(reportFolder, reportFilename));
|
|
15
|
-
} catch (error) {
|
|
16
|
-
console.error("Ortoni-Report: Error sending report file:", error);
|
|
17
|
-
res.status(500).send("Error loading report");
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
try {
|
|
21
|
-
const server = app.listen(port, () => {
|
|
22
|
-
console.log(
|
|
23
|
-
`Server is running at http://localhost:${port}
|
|
24
|
-
Press Ctrl+C to stop.`
|
|
25
|
-
);
|
|
26
|
-
if (open === "always" || open === "on-failure") {
|
|
27
|
-
try {
|
|
28
|
-
openBrowser(`http://localhost:${port}`);
|
|
29
|
-
} catch (error) {
|
|
30
|
-
console.error("Ortoni-Report: Error opening browser:", error);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
server.on("error", (error) => {
|
|
35
|
-
if (error.code === "EADDRINUSE") {
|
|
36
|
-
console.error(
|
|
37
|
-
`Ortoni-Report: Port ${port} is already in use. Trying a different port...`
|
|
38
|
-
);
|
|
39
|
-
} else {
|
|
40
|
-
console.error("Ortoni-Report: Server error:", error);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
} catch (error) {
|
|
44
|
-
console.error("Ortoni-Report: Error starting the server:", error);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function openBrowser(url) {
|
|
48
|
-
const platform = process.platform;
|
|
49
|
-
let command;
|
|
50
|
-
try {
|
|
51
|
-
if (platform === "win32") {
|
|
52
|
-
command = "cmd";
|
|
53
|
-
spawn(command, ["/c", "start", url]);
|
|
54
|
-
} else if (platform === "darwin") {
|
|
55
|
-
command = "open";
|
|
56
|
-
spawn(command, [url]);
|
|
57
|
-
} else {
|
|
58
|
-
command = "xdg-open";
|
|
59
|
-
spawn(command, [url]);
|
|
60
|
-
}
|
|
61
|
-
} catch (error) {
|
|
62
|
-
console.error("Ortoni-Report: Error opening the browser:", error);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export {
|
|
67
|
-
__publicField,
|
|
68
|
-
startReportServer
|
|
69
|
-
};
|
package/dist/chunk-OOALU4XG.mjs
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/utils/expressServer.ts
|
|
9
|
-
import express from "express";
|
|
10
|
-
import path from "path";
|
|
11
|
-
import { spawn } from "child_process";
|
|
12
|
-
function startReportServer(reportFolder, reportFilename, port = 2004, open) {
|
|
13
|
-
const app = express();
|
|
14
|
-
app.use(express.static(reportFolder));
|
|
15
|
-
app.get("/", (_req, res) => {
|
|
16
|
-
try {
|
|
17
|
-
res.sendFile(path.resolve(reportFolder, reportFilename));
|
|
18
|
-
} catch (error) {
|
|
19
|
-
console.error("Ortoni-Report: Error sending report file:", error);
|
|
20
|
-
res.status(500).send("Error loading report");
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
try {
|
|
24
|
-
const server = app.listen(port, () => {
|
|
25
|
-
console.log(
|
|
26
|
-
`Server is running at http://localhost:${port}
|
|
27
|
-
Press Ctrl+C to stop.`
|
|
28
|
-
);
|
|
29
|
-
if (open === "always" || open === "on-failure") {
|
|
30
|
-
try {
|
|
31
|
-
openBrowser(`http://localhost:${port}`);
|
|
32
|
-
} catch (error) {
|
|
33
|
-
console.error("Ortoni-Report: Error opening browser:", error);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
server.on("error", (error) => {
|
|
38
|
-
if (error.code === "EADDRINUSE") {
|
|
39
|
-
console.error(
|
|
40
|
-
`Ortoni-Report: Port ${port} is already in use. Trying a different port...`
|
|
41
|
-
);
|
|
42
|
-
} else {
|
|
43
|
-
console.error("Ortoni-Report: Server error:", error);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
} catch (error) {
|
|
47
|
-
console.error("Ortoni-Report: Error starting the server:", error);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
function openBrowser(url) {
|
|
51
|
-
const platform = process.platform;
|
|
52
|
-
let command;
|
|
53
|
-
try {
|
|
54
|
-
if (platform === "win32") {
|
|
55
|
-
command = "cmd";
|
|
56
|
-
spawn(command, ["/c", "start", url]);
|
|
57
|
-
} else if (platform === "darwin") {
|
|
58
|
-
command = "open";
|
|
59
|
-
spawn(command, [url]);
|
|
60
|
-
} else {
|
|
61
|
-
command = "xdg-open";
|
|
62
|
-
spawn(command, [url]);
|
|
63
|
-
}
|
|
64
|
-
} catch (error) {
|
|
65
|
-
console.error("Ortoni-Report: Error opening the browser:", error);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export {
|
|
70
|
-
__require,
|
|
71
|
-
startReportServer
|
|
72
|
-
};
|
package/dist/chunk-ZSIRUQUA.mjs
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/utils/expressServer.ts
|
|
9
|
-
import express from "express";
|
|
10
|
-
import path from "path";
|
|
11
|
-
import { spawn } from "child_process";
|
|
12
|
-
function startReportServer(reportFolder, reportFilename, port = 2004, open) {
|
|
13
|
-
const app = express();
|
|
14
|
-
app.use(express.static(reportFolder));
|
|
15
|
-
app.get("/", (_req, res) => {
|
|
16
|
-
try {
|
|
17
|
-
res.sendFile(path.resolve(reportFolder, reportFilename));
|
|
18
|
-
} catch (error) {
|
|
19
|
-
console.error("Ortoni-Report: Error sending report file:", error);
|
|
20
|
-
res.status(500).send("Error loading report");
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
try {
|
|
24
|
-
const server = app.listen(port, () => {
|
|
25
|
-
console.log(`Server is running at http://localhost:${port}
|
|
26
|
-
Press Ctrl+C to stop.`);
|
|
27
|
-
if (open === "always" || open === "on-failure") {
|
|
28
|
-
try {
|
|
29
|
-
openBrowser(`http://localhost:${port}`);
|
|
30
|
-
} catch (error) {
|
|
31
|
-
console.error("Ortoni-Report: Error opening browser:", error);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
server.on("error", (error) => {
|
|
36
|
-
if (error.code === "EADDRINUSE") {
|
|
37
|
-
console.error(`Ortoni-Report: Port ${port} is already in use. Trying a different port...`);
|
|
38
|
-
} else {
|
|
39
|
-
console.error("Ortoni-Report: Server error:", error);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
} catch (error) {
|
|
43
|
-
console.error("Ortoni-Report: Error starting the server:", error);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
function openBrowser(url) {
|
|
47
|
-
const platform = process.platform;
|
|
48
|
-
let command;
|
|
49
|
-
try {
|
|
50
|
-
if (platform === "win32") {
|
|
51
|
-
command = "cmd";
|
|
52
|
-
spawn(command, ["/c", "start", url]);
|
|
53
|
-
} else if (platform === "darwin") {
|
|
54
|
-
command = "open";
|
|
55
|
-
spawn(command, [url]);
|
|
56
|
-
} else {
|
|
57
|
-
command = "xdg-open";
|
|
58
|
-
spawn(command, [url]);
|
|
59
|
-
}
|
|
60
|
-
} catch (error) {
|
|
61
|
-
console.error("Ortoni-Report: Error opening the browser:", error);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export {
|
|
66
|
-
__require,
|
|
67
|
-
startReportServer
|
|
68
|
-
};
|