@test2doc/playwright 0.5.1 → 0.5.3

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 CHANGED
@@ -106,6 +106,74 @@ The `TEST2DOC=true` is required to activate the test2doc metadata to pass to the
106
106
  ## Verify installation
107
107
  To verify your setup works, run `npm run docs:generate` and check that markdown files appear in your `./doc/docs` directory, or wherever you specified the output directory in the `playwright-test2doc.config.ts` file.
108
108
 
109
+ ## Filtering Tests
110
+ It is possible you may wish to opt-in some tests or opt-out other tests from doc generation. This is possible with playwright tags.
111
+
112
+ ### Tag tests
113
+ Adding tags to playwright tests is easy. See the [official docs](https://playwright.dev/docs/test-annotations#tag-tests) for more details.
114
+
115
+ There are a few different approaches to tagging, but for this README we're going with passing in a tag array to help support multiple tags. But if you prefer one of the other options playwright supports, feel free to use it.
116
+
117
+ ```ts
118
+ // Add tag to describe block level
119
+ test.describe('Describe Block', {
120
+ tag: ['@test2doc']
121
+ }, () => {
122
+ test('this test inherits from the describe block', () => {
123
+ ...
124
+ })
125
+ })
126
+
127
+ // Add tag to tests
128
+ // This example has multiple tags
129
+ test('test title', {
130
+ tag: ['@test2doc', '@other-tag'],
131
+ }, async ({ page }) => {
132
+ ...
133
+ });
134
+
135
+ // Add tag to skip doc generation
136
+ test('test will skip doc generation', {
137
+ tag: ['@skip-docs'],
138
+ }, async ({ page }) => {
139
+ ...
140
+ });
141
+ ```
142
+
143
+ ### Opt-in Approach
144
+ **Best for:** Legacy codebases or when you want explicit control over which tests generate documentation.
145
+
146
+ Run only tests with the `@test2doc` tag.
147
+
148
+ #### Update package.json
149
+ ```json
150
+ {
151
+ ...
152
+ "scripts": {
153
+ ...
154
+ "docs:generate": "TEST2DOC=true playwright test --config=playwright-test2doc.config.ts --grep @test2doc"
155
+ }
156
+ ...
157
+ }
158
+ ```
159
+
160
+ ### Opt-out Approach
161
+ **Best for:** Tests that don't need documentation generated, like flaky tests or internal API tests.
162
+
163
+ Skip tests with the `@skip-docs` tag.
164
+
165
+ #### Update package.json
166
+ ```json
167
+ {
168
+ ...
169
+ "scripts": {
170
+ ...
171
+ "docs:generate": "TEST2DOC=true playwright test --config=playwright-test2doc.config.ts --grep-invert @skip-docs"
172
+ }
173
+ ...
174
+ }
175
+ ```
176
+
109
177
  ## How it works
110
178
 
111
179
  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 test file and/or top-level describe block found in your Playwright test files.
@@ -1 +1 @@
1
- {"version":3,"file":"screenshots.d.ts","sourceRoot":"","sources":["../src/screenshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,IAAI,EACJ,qCAAqC,EACrC,qBAAqB,EACrB,QAAQ,EACT,MAAM,kBAAkB,CAAA;AAIzB,eAAO,MAAM,UAAU,GACrB,UAAU,QAAQ,EAClB,QAAQ,IAAI,GAAG,OAAO,EACtB,UAAU,qBAAqB,GAAG,qCAAqC,kBA0BxE,CAAA"}
1
+ {"version":3,"file":"screenshots.d.ts","sourceRoot":"","sources":["../src/screenshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,IAAI,EACJ,qCAAqC,EACrC,qBAAqB,EACrB,QAAQ,EACT,MAAM,kBAAkB,CAAA;AAIzB,eAAO,MAAM,UAAU,GACrB,UAAU,QAAQ,EAClB,QAAQ,IAAI,GAAG,OAAO,EACtB,UAAU,qBAAqB,GAAG,qCAAqC,kBA+DxE,CAAA"}
@@ -3,15 +3,49 @@ export const screenshot = async (testInfo, target, options) => {
3
3
  const filename = `test2doc-${Date.now()}-${++screenshotCounter}.png`;
4
4
  let screenshot;
5
5
  if ("highlight" in target) {
6
- // Target is a locator - highlight it first, then get its page
7
- await target.highlight();
8
6
  const page = target.page();
9
- screenshot = await page.screenshot(options);
10
- // Remove highlighting after taking the screenshot
11
- const glassElements = page.locator("X-PW-GLASS");
12
- await glassElements.evaluateAll((elements) => {
13
- elements.forEach((el) => el.remove());
14
- });
7
+ const boundingBox = await target.boundingBox();
8
+ if (boundingBox) {
9
+ await page.evaluate((box) => {
10
+ const canvas = document.createElement("canvas");
11
+ canvas.id = "test2doc-highlight-canvas";
12
+ canvas.style.cssText = `
13
+ position: fixed !important;
14
+ top: 0 !important;
15
+ left: 0 !important;
16
+ width: 100vw !important;
17
+ height: 100vh !important;
18
+ pointer-events: none !important;
19
+ z-index: 9999 !important;
20
+ display: block !important;
21
+ visibility: visible !important;
22
+ opacity: 1 !important;
23
+ `;
24
+ canvas.width = window.innerWidth;
25
+ canvas.height = window.innerHeight;
26
+ const ctx = canvas.getContext("2d");
27
+ if (ctx) {
28
+ // Draw highlight rectangle
29
+ ctx.strokeStyle = "rgba(246, 255, 0, 0.8)";
30
+ ctx.lineWidth = 2;
31
+ ctx.strokeRect(box.x, box.y, box.width, box.height);
32
+ // Add subtle fill
33
+ ctx.fillStyle = "rgba(240, 255, 107, 0.25)";
34
+ ctx.fillRect(box.x, box.y, box.width, box.height);
35
+ }
36
+ document.body.appendChild(canvas);
37
+ }, boundingBox);
38
+ screenshot = await page.screenshot(options);
39
+ // Clean up canvas
40
+ await page.evaluate(() => {
41
+ const canvas = document.getElementById("test2doc-highlight-canvas");
42
+ if (canvas)
43
+ canvas.remove();
44
+ });
45
+ }
46
+ else {
47
+ screenshot = await page.screenshot(options);
48
+ }
15
49
  }
16
50
  else {
17
51
  // Target is already a page
@@ -1 +1 @@
1
- {"version":3,"file":"screenshots.js","sourceRoot":"","sources":["../src/screenshots.ts"],"names":[],"mappings":"AAQA,IAAI,iBAAiB,GAAG,CAAC,CAAA;AAEzB,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,QAAkB,EAClB,MAAsB,EACtB,OAAuE,EACvE,EAAE;IACF,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,iBAAiB,MAAM,CAAA;IAEpE,IAAI,UAAkB,CAAA;IACtB,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;QAC1B,8DAA8D;QAC9D,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;QAE1B,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAE3C,kDAAkD;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAChD,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3C,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,2BAA2B;QAC3B,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,WAAW;KACzB,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"screenshots.js","sourceRoot":"","sources":["../src/screenshots.ts"],"names":[],"mappings":"AAQA,IAAI,iBAAiB,GAAG,CAAC,CAAA;AAEzB,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,QAAkB,EAClB,MAAsB,EACtB,OAAuE,EACvE,EAAE;IACF,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,iBAAiB,MAAM,CAAA;IAEpE,IAAI,UAAkB,CAAA;IACtB,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;QAE1B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAA;QAC9C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;gBAC/C,MAAM,CAAC,EAAE,GAAG,2BAA2B,CAAA;gBACvC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG;;;;;;;;;;;SAWtB,CAAA;gBAED,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAA;gBAChC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAA;gBAElC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBACnC,IAAI,GAAG,EAAE,CAAC;oBACR,2BAA2B;oBAC3B,GAAG,CAAC,WAAW,GAAG,wBAAwB,CAAA;oBAC1C,GAAG,CAAC,SAAS,GAAG,CAAC,CAAA;oBACjB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;oBAEnD,kBAAkB;oBAClB,GAAG,CAAC,SAAS,GAAG,2BAA2B,CAAA;oBAC3C,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;gBACnD,CAAC;gBAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YACnC,CAAC,EAAE,WAAW,CAAC,CAAA;YAEf,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAE3C,kBAAkB;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAA;gBACnE,IAAI,MAAM;oBAAE,MAAM,CAAC,MAAM,EAAE,CAAA;YAC7B,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,2BAA2B;QAC3B,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,WAAW;KACzB,CAAC,CAAA;AACJ,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,11 +1,19 @@
1
1
  {
2
2
  "name": "@test2doc/playwright",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "description": "A reporter that generates docs based off playwright test files",
5
5
  "keywords": [
6
+ "documentation",
7
+ "document",
8
+ "living documentation",
9
+ "markdown",
10
+ "generation",
11
+ "generator",
6
12
  "docs",
7
13
  "test",
8
14
  "playwright",
15
+ "docusaurus",
16
+ "reporter",
9
17
  "automation"
10
18
  ],
11
19
  "homepage": "https://github.com/dethstrobe/theDenverNexus/tree/main/packages/test2doc-playwright",
@@ -48,7 +56,7 @@
48
56
  "access": "public"
49
57
  },
50
58
  "peerDependencies": {
51
- "@playwright/test": "^1.52.0"
59
+ "@playwright/test": "^1.54.1"
52
60
  },
53
61
  "devDependencies": {
54
62
  "vitest": "^3.2.4",