@test2doc/playwright 0.0.1 → 0.0.2
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/README.md +70 -0
- package/dist/Test2DocReporter.test.js +14 -8
- package/dist/Test2DocReporter.test.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
The Test2Doc is a project that generates documentation based on tests, helping you keep your technical documentation automatically in sync with your code.
|
|
2
|
+
|
|
3
|
+
# Test2Doc Playwright Reporter
|
|
4
|
+
The `@test2doc/playwright` package is a [Playwright](https://playwright.dev/) reporter that generates documentation in markdown. It is intended to work with [Docusaurus](https://docusaurus.io/).
|
|
5
|
+
|
|
6
|
+
## Installation & Setup
|
|
7
|
+
|
|
8
|
+
### Install the Reporter
|
|
9
|
+
If you don't have Playwright currently installed, you can follow [Playwright's installation guide](https://playwright.dev/docs/intro#installing-playwright). (Don't forget to run `npx playwright install` to install browsers after Playwright itself!)
|
|
10
|
+
|
|
11
|
+
After installing Playwright you can add the `@test2doc/playwright` with your package manager of choice:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
# npm
|
|
15
|
+
npm install @test2doc/playwright -D
|
|
16
|
+
# yarn
|
|
17
|
+
yarn add @test2doc/playwright --dev
|
|
18
|
+
# pnpm
|
|
19
|
+
pnpm install @test2doc/playwright -D
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
#### Configure Playwright
|
|
23
|
+
Add the reporter to your `playwright.config.ts`
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
// playwright.config.ts or playwright.config.js
|
|
27
|
+
import { defineConfig, ... } from "@playwright/test"
|
|
28
|
+
|
|
29
|
+
...
|
|
30
|
+
|
|
31
|
+
export default defineConfig({
|
|
32
|
+
...
|
|
33
|
+
reporter: [
|
|
34
|
+
...
|
|
35
|
+
["@test2doc/playwright", { outputDir: "./path/to/docs" }],
|
|
36
|
+
],
|
|
37
|
+
...
|
|
38
|
+
})
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Replace `"./path/to/docs"` with a path to the `doc` directory of your Docusaurus app.
|
|
42
|
+
|
|
43
|
+
#### Setup Docusaurus
|
|
44
|
+
This reporter generates markdown files for Docusaurus. If you don't have a Docusaurus app set up yet there is an install guide [here](https://docusaurus.io/docs/installation). If you have a monorepo I recommend using these [instructions](https://docusaurus.io/docs/installation#monorepos)
|
|
45
|
+
|
|
46
|
+
Else you can install the Docusaurus app within your current repo with:
|
|
47
|
+
|
|
48
|
+
```sh
|
|
49
|
+
npx create-docusaurus@latest doc classic --typescript
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This will make a `doc` directory with your Docusaurus app.
|
|
53
|
+
|
|
54
|
+
Then set the `outputDir` in the `playwright.config.ts` to `"./doc/docs"`
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
// playwright.config.ts
|
|
58
|
+
export default defineConfig({
|
|
59
|
+
...
|
|
60
|
+
reporter: [
|
|
61
|
+
...
|
|
62
|
+
["@test2doc/playwright", { outputDir: "./doc/docs" }],
|
|
63
|
+
],
|
|
64
|
+
...
|
|
65
|
+
})
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## How it works
|
|
69
|
+
|
|
70
|
+
After this setup, every time you run your Playwright tests, the `@test2doc/playwright` reporter will automatically generate a new markdown file in your specified Docusaurus docs directory for each top-level describe block found in your Playwright test files.
|
|
@@ -73,17 +73,23 @@ describe("Test2DocReporter", () => {
|
|
|
73
73
|
suites: [
|
|
74
74
|
{
|
|
75
75
|
...baseSuite,
|
|
76
|
-
title: "
|
|
76
|
+
title: "login.test.ts", // Test file name
|
|
77
77
|
suites: [
|
|
78
78
|
{
|
|
79
79
|
...baseSuite,
|
|
80
|
-
title: "
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
title: "Login Page", // First Describe Block in the test file
|
|
81
|
+
suites: [
|
|
82
|
+
{
|
|
83
|
+
...baseSuite,
|
|
84
|
+
title: "Successful Login",
|
|
85
|
+
tests: [mockTestSuccess],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
...baseSuite,
|
|
89
|
+
title: "Failed Login",
|
|
90
|
+
tests: [mockTestFail],
|
|
91
|
+
},
|
|
92
|
+
],
|
|
87
93
|
},
|
|
88
94
|
],
|
|
89
95
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test2DocReporter.test.js","sourceRoot":"","sources":["../src/Test2DocReporter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,gBAAgB,MAAM,YAAY,CAAA;AASzC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,OAAO,IAAI,gBAAgB,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAA;IAED,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACxB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;SACvB,CAAC,CAAC,CAAA;QACH,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAA;QAExB,MAAM,SAAS,GAAU;YACvB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YAC1C,QAAQ,EAAE,GAAoB,EAAE;gBAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC9C,CAAC;YACD,OAAO,EAAE,GAA4B,EAAE;gBACrC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC9C,CAAC;YACD,OAAO,EAAE,GAA4B,EAAE;gBACrC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC9C,CAAC;YACD,SAAS,EAAE,GAAkB,EAAE;gBAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC9C,CAAC;YACD,IAAI,EAAE,MAAM;SACb,CAAA;QAED,MAAM,YAAY,GAAa;YAC7B,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YAC1C,EAAE,EAAE,GAAY,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC9C,CAAC;YACD,OAAO,EAAE,GAAoD,EAAE;gBAC7D,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC9C,CAAC;YACD,SAAS,EAAE,GAAkB,EAAE,CAAC;gBAC9B,YAAY;gBACZ,iBAAiB;gBACjB,gBAAgB;gBAChB,YAAY;aACb;YACD,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,QAAQ;YACxB,EAAE,EAAE,EAAE;YACN,MAAM,EAAE,SAAS,EAAE,0BAA0B;YAC7C,eAAe,EAAE,CAAC;YAClB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,MAAM;SACb,CAAA;QAED,MAAM,eAAe,GAAa;YAChC,GAAG,YAAY;YACf,KAAK,EAAE,iDAAiD;SACzD,CAAA;QAED,MAAM,YAAY,GAAa;YAC7B,GAAG,YAAY;YACf,KAAK,EAAE,8CAA8C;SACtD,CAAA;QAED,MAAM,SAAS,GAAU;YACvB,GAAG,SAAS;YACZ,KAAK,EAAE,EAAE,EAAE,aAAa;YACxB,MAAM,EAAE;gBACN;oBACE,GAAG,SAAS;oBACZ,KAAK,EAAE,UAAU,EAAE,2BAA2B;oBAC9C,MAAM,EAAE;wBACN;4BACE,GAAG,SAAS;4BACZ,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Test2DocReporter.test.js","sourceRoot":"","sources":["../src/Test2DocReporter.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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;IASzC,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
CHANGED
|
@@ -14,7 +14,7 @@ class Test2DocReporter {
|
|
|
14
14
|
this.docs = { title: suite.title, children: [] };
|
|
15
15
|
this.docMap.clear();
|
|
16
16
|
this.docMap.set(suite.title, this.docs);
|
|
17
|
-
this.docs = this.buildDocTree(suite.suites[0]?.suites[0] ?? suite);
|
|
17
|
+
this.docs = this.buildDocTree(suite.suites[0]?.suites[0]?.suites[0] ?? suite);
|
|
18
18
|
}
|
|
19
19
|
buildDocTree(suite) {
|
|
20
20
|
const docNode = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAmBvC;;;GAGG;AACH,MAAM,gBAAgB;IACZ,IAAI,GAAY,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IAC3C,MAAM,GAAmC,IAAI,GAAG,EAAE,CAAA;IAClD,SAAS,CAAQ;IAEzB,YAAY,UAAmC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACpE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAA;IAChD,CAAC;IAED,OAAO,CAAC,OAAmB,EAAE,KAAY;QACvC,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|