@test2doc/playwright 0.0.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Test2DocReporter.test.d.ts","sourceRoot":"","sources":["../src/Test2DocReporter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,132 @@
1
+ import { describe, it, expect, vi } from "vitest";
2
+ import Test2DocReporter from "./index.js";
3
+ import { writeFileSync } from "node:fs";
4
+ describe("Test2DocReporter", () => {
5
+ const setup = () => {
6
+ return new Test2DocReporter({ outputDir: "test-output" });
7
+ };
8
+ it("should capture test steps", () => {
9
+ vi.mock("node:fs", () => ({
10
+ writeFileSync: vi.fn(),
11
+ }));
12
+ const reporter = setup();
13
+ const baseSuite = {
14
+ title: "",
15
+ suites: [],
16
+ tests: [],
17
+ location: { file: "", line: 0, column: 0 },
18
+ allTests: () => {
19
+ throw new Error("Function not implemented.");
20
+ },
21
+ entries: () => {
22
+ throw new Error("Function not implemented.");
23
+ },
24
+ project: () => {
25
+ throw new Error("Function not implemented.");
26
+ },
27
+ titlePath: () => {
28
+ throw new Error("Function not implemented.");
29
+ },
30
+ type: "root",
31
+ };
32
+ const baseTestCase = {
33
+ title: "base",
34
+ location: { file: "", line: 0, column: 0 },
35
+ ok: () => {
36
+ throw new Error("Function not implemented.");
37
+ },
38
+ outcome: () => {
39
+ throw new Error("Function not implemented.");
40
+ },
41
+ titlePath: () => [
42
+ "Root Suite",
43
+ "Parent Describe",
44
+ "Child Describe",
45
+ "login test",
46
+ ],
47
+ annotations: [],
48
+ expectedStatus: "passed",
49
+ id: "",
50
+ parent: baseSuite, // this is just mocked out
51
+ repeatEachIndex: 0,
52
+ results: [],
53
+ retries: 0,
54
+ tags: [],
55
+ timeout: 0,
56
+ type: "test",
57
+ };
58
+ const mockTestSuccess = {
59
+ ...baseTestCase,
60
+ title: "should rediect to dashboard on successful login",
61
+ };
62
+ const mockTestFail = {
63
+ ...baseTestCase,
64
+ title: "should display error message on failed login",
65
+ };
66
+ const mockSuite = {
67
+ ...baseSuite,
68
+ title: "", // Root Suite
69
+ suites: [
70
+ {
71
+ ...baseSuite,
72
+ title: "chromium", // or firefox, webkit, etc.
73
+ suites: [
74
+ {
75
+ ...baseSuite,
76
+ title: "Login Page", // First Describe Block in the test file
77
+ suites: [
78
+ {
79
+ ...baseSuite,
80
+ title: "Successful Login",
81
+ tests: [mockTestSuccess],
82
+ },
83
+ {
84
+ ...baseSuite,
85
+ title: "Failed Login",
86
+ tests: [mockTestFail],
87
+ },
88
+ ],
89
+ },
90
+ ],
91
+ },
92
+ ],
93
+ };
94
+ const baseTestStep = {
95
+ title: "Given user is on login page",
96
+ category: "test.step",
97
+ titlePath: () => {
98
+ throw new Error("Function not implemented.");
99
+ },
100
+ annotations: [],
101
+ attachments: [],
102
+ duration: 0,
103
+ startTime: new Date(),
104
+ steps: [],
105
+ };
106
+ const mockStep = {
107
+ ...baseTestStep,
108
+ title: "Given user is on login page",
109
+ };
110
+ reporter.onBegin({}, mockSuite);
111
+ reporter.onTestBegin(mockTestSuccess);
112
+ reporter.onStepBegin(mockTestSuccess, {}, mockStep);
113
+ reporter.onStepBegin(mockTestFail, {}, mockStep);
114
+ reporter.onEnd();
115
+ expect(writeFileSync).toHaveBeenCalledWith("test-output/login-page.md", `# Login Page
116
+
117
+ ## Successful Login
118
+
119
+ ### should rediect to dashboard on successful login
120
+
121
+ - Given user is on login page
122
+
123
+ ## Failed Login
124
+
125
+ ### should display error message on failed login
126
+
127
+ - Given user is on login page
128
+
129
+ `);
130
+ });
131
+ });
132
+ //# sourceMappingURL=Test2DocReporter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Test2DocReporter.test.js","sourceRoot":"","sources":["../src/Test2DocReporter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACT,MAAM,2BAA2B,CAAA;AAgBlC,UAAU,uBAAuB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,cAAM,gBAAiB,YAAW,QAAQ;IACxC,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,SAAS,CAAQ;gBAEb,OAAO,GAAE,uBAAiD;IAItE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK;IAOzC,OAAO,CAAC,YAAY;IAyBpB,WAAW,CAAC,IAAI,EAAE,QAAQ;IAM1B,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAYtE,OAAO,CAAC,kBAAkB;IAO1B,KAAK;IAML,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;CAuBzB;AAED,eAAe,gBAAgB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,96 @@
1
+ import { writeFileSync } from "node:fs";
2
+ /**
3
+ * Test2DocReporter is a Playwright reporter that generates documentation
4
+ * for tests in markdown and consumed by Docusaurus.
5
+ */
6
+ class Test2DocReporter {
7
+ docs = { title: "", children: [] };
8
+ docMap = new Map();
9
+ outputDir;
10
+ constructor(options = { outputDir: "./docs" }) {
11
+ this.outputDir = options.outputDir || "./docs";
12
+ }
13
+ onBegin(_config, suite) {
14
+ this.docs = { title: suite.title, children: [] };
15
+ this.docMap.clear();
16
+ this.docMap.set(suite.title, this.docs);
17
+ this.docs = this.buildDocTree(suite.suites[0]?.suites[0] ?? suite);
18
+ }
19
+ buildDocTree(suite) {
20
+ const docNode = {
21
+ title: suite.title,
22
+ children: [],
23
+ };
24
+ for (const child of suite.suites) {
25
+ const childDocNode = this.buildDocTree(child);
26
+ this.docMap.set(child.title, childDocNode);
27
+ docNode.children.push(childDocNode);
28
+ }
29
+ for (const test of suite.tests) {
30
+ const testDoc = {
31
+ title: test.title,
32
+ steps: [],
33
+ };
34
+ this.docMap.set(test.title, testDoc);
35
+ docNode.tests = docNode.tests || [];
36
+ docNode.tests.push(testDoc);
37
+ }
38
+ return docNode;
39
+ }
40
+ onTestBegin(test) {
41
+ const docSection = this.docMap.get(test.title);
42
+ console.log(`Test started: ${test.title}`, docSection);
43
+ // TODO: Add screenshots here?
44
+ }
45
+ onStepBegin(test, _result, step) {
46
+ const docSection = this.docMap.get(test.title);
47
+ if (docSection && step.category === "test.step" && "steps" in docSection) {
48
+ docSection.steps.push({ title: step.title });
49
+ // TODO: Add screenshots here?
50
+ console.log("Screen shot here?");
51
+ }
52
+ else {
53
+ console.warn(`No documentation section found for test ${test.id}`);
54
+ }
55
+ }
56
+ convertToKebabCase(title) {
57
+ return title
58
+ .trim()
59
+ .toLowerCase()
60
+ .replace(/[^a-z0-9]+/g, "-");
61
+ }
62
+ onEnd() {
63
+ const markdown = this.generateMarkdown(this.docs);
64
+ const filePath = `${this.outputDir}/${this.convertToKebabCase(this.docs.title)}.md`;
65
+ writeFileSync(filePath, markdown);
66
+ }
67
+ generateTitle(title, depth) {
68
+ let titleMarkdown = "";
69
+ for (let i = 0; i < depth; ++i) {
70
+ titleMarkdown += "#";
71
+ }
72
+ return `${titleMarkdown} ${title}\n\n`;
73
+ }
74
+ generateMarkdown(docNode, depth = 1) {
75
+ let markdown = this.generateTitle(docNode.title, depth);
76
+ if (docNode.tests) {
77
+ for (const test of docNode.tests) {
78
+ markdown += this.generateTitle(test.title, depth + 1);
79
+ if (test.steps.length > 0) {
80
+ for (const step of test.steps) {
81
+ markdown += `- ${step.title}\n`;
82
+ }
83
+ markdown += "\n";
84
+ }
85
+ }
86
+ }
87
+ if (docNode.children.length > 0) {
88
+ for (const child of docNode.children) {
89
+ markdown += this.generateMarkdown(child, depth + 1);
90
+ }
91
+ }
92
+ return markdown;
93
+ }
94
+ }
95
+ export default Test2DocReporter;
96
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@test2doc/playwright",
3
+ "version": "0.0.1",
4
+ "description": "A reporter that generates docs based off playwright test files",
5
+ "keywords": [
6
+ "docs",
7
+ "test",
8
+ "playwright",
9
+ "automation"
10
+ ],
11
+ "license": "GPL-3.0-or-later",
12
+ "author": "@dethstrobe",
13
+ "type": "module",
14
+ "main": "dist/index.js",
15
+ "module": "dist/index.js",
16
+ "types": "dist/index.d.ts",
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "peerDependencies": {
24
+ "@playwright/test": "^1.52.0"
25
+ },
26
+ "devDependencies": {
27
+ "vitest": "^3.2.4",
28
+ "@types/node": "^24.0.3"
29
+ },
30
+ "scripts": {
31
+ "clean": "rm -rf dist",
32
+ "build": "pnpm run clean && tsc --project tsconfig.json",
33
+ "build:watch": "tsc --project tsconfig.json --watch",
34
+ "test": "vitest",
35
+ "lint": "biome lint .",
36
+ "format": "biome format --write ."
37
+ }
38
+ }