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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ortoni-report",
3
- "version": "3.0.5",
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": "<2.0.0",
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 project, tags, and status — with a reset option for full visibility.
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, and trace viewer.
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** 🌟 **(New!)**
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
- - Pie or doughnut charts for test summary and per-project breakdowns **(Improved!)**
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 as HTML - Copy and use it in your AI prompt
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-db",
87
+ folderPath: "my-report",
88
88
  filename: "index.html",
89
- logo:"logo.{png, jpg}",
90
89
  title: "Ortoni Test Report",
91
- showProject: !true,
92
- projectName: "Ortoni-Report",
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
- project: "Playwright",
97
+ "Test Cycle": "Aug 25, 2025",
101
98
  version: "3",
102
- description: "Playwright test report",
103
- testCycle: "04121994",
99
+ description: "My automation suite",
104
100
  release: "0.3",
105
- platform: os.type(),
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-db",
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: !true,
127
- projectName: "Ortoni-Report",
128
- testType: "e2e",
129
- authorName: "Koushik",
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
- project: "Playwright",
136
- version: "3.0.0",
137
- description: "Playwright test report",
138
- testCycle: "1",
139
- release: "1.0.0",
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
 
@@ -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
- };
@@ -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
- };
@@ -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
- };