astro-better-generate-screenshots 0.4.2 → 0.4.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astro-better-generate-screenshots",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "CLI that generates screenshot PNGs for astro-better-declarative-screenshots",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,7 +10,7 @@ import { loadConfig } from 'astro-better-declarative-screenshots';
10
10
  import { discoverScreenshots } from '../src/discover.mjs';
11
11
  import { startDocker, stopDocker } from '../src/docker.mjs';
12
12
  import { capturePage, createBrowserContext } from '../src/capture.mjs';
13
- import { addChrome } from '../src/chrome.mjs';
13
+ import { applyChrome } from '../src/chrome.mjs';
14
14
  import { diffScreenshot } from '../src/diff.mjs';
15
15
 
16
16
  const projectRoot = process.cwd();
@@ -92,16 +92,7 @@ async function main() {
92
92
  context,
93
93
  });
94
94
 
95
- let newBuffer = rawBuffer;
96
- if (config.chrome.style !== 'none') {
97
- newBuffer = await addChrome(rawBuffer, {
98
- url: fullUrl,
99
- dark: config.chrome.dark,
100
- showUrl: config.chrome.showUrl,
101
- shadowBlur: config.chrome.shadowBlur,
102
- shadowPadding: config.chrome.shadowPadding,
103
- });
104
- }
95
+ const newBuffer = await applyChrome(rawBuffer, config, fullUrl);
105
96
 
106
97
  const result = await diffScreenshot(referencePath, newBuffer, {
107
98
  threshold: args.pixelThreshold ?? 0.1,
@@ -177,6 +168,7 @@ function parseArgs(argv) {
177
168
  if (argv[i].startsWith('--filter=')) args.filter = argv[i].slice(9);
178
169
  if (argv[i].startsWith('--diff-dir=')) args.diffDir = argv[i].slice(11);
179
170
  if (argv[i] === '--diff-dir' && argv[i + 1]) args.diffDir = argv[++i];
171
+ if (argv[i] === '--threshold' && argv[i + 1]) args.thresholdRatio = parseFloat(argv[++i]);
180
172
  if (argv[i].startsWith('--threshold=')) args.thresholdRatio = parseFloat(argv[i].slice(12));
181
173
  }
182
174
  return args;
@@ -9,7 +9,7 @@ import { loadConfig } from 'astro-better-declarative-screenshots';
9
9
  import { discoverScreenshots } from '../src/discover.mjs';
10
10
  import { startDocker, stopDocker } from '../src/docker.mjs';
11
11
  import { capturePage, createBrowserContext } from '../src/capture.mjs';
12
- import { addChrome } from '../src/chrome.mjs';
12
+ import { applyChrome } from '../src/chrome.mjs';
13
13
  import { generatePlaceholder } from '../src/placeholder.mjs';
14
14
 
15
15
  const projectRoot = process.cwd();
@@ -91,17 +91,7 @@ async function main() {
91
91
  context,
92
92
  });
93
93
 
94
- let finalBuffer = rawBuffer;
95
-
96
- if (config.chrome.style !== 'none' && config.chrome.renderIn !== 'css') {
97
- finalBuffer = await addChrome(rawBuffer, {
98
- url: fullUrl,
99
- dark: config.chrome.theme === 'dark',
100
- showUrl: config.chrome.showUrl,
101
- shadowBlur: config.chrome.shadowBlur,
102
- shadowPadding: config.chrome.shadowPadding,
103
- });
104
- }
94
+ const finalBuffer = await applyChrome(rawBuffer, config, fullUrl);
105
95
 
106
96
  writeFileSync(outputPath, finalBuffer);
107
97
  process.stdout.write('done\n');
package/src/chrome.mjs CHANGED
@@ -15,6 +15,26 @@ const URL_BAR_X = 100;
15
15
  const URL_BAR_X_MARGIN_R = 20;
16
16
  const URL_BAR_RADIUS = 5;
17
17
 
18
+ /**
19
+ * Applies the window chrome the config asks for, or returns the buffer untouched.
20
+ *
21
+ * Both CLIs must decide this identically. With renderIn: 'css' the Screenshot
22
+ * component already draws the frame inside the page, so compositing here would add a
23
+ * second frame and change the image's dimensions. check-screenshots used to miss that
24
+ * condition and reported every image as 100% changed against a correct reference.
25
+ */
26
+ export async function applyChrome(screenshotBuffer, config, url) {
27
+ const { chrome } = config;
28
+ if (chrome.style === 'none' || chrome.renderIn === 'css') return screenshotBuffer;
29
+ return addChrome(screenshotBuffer, {
30
+ url,
31
+ dark: chrome.theme === 'dark',
32
+ showUrl: chrome.showUrl,
33
+ shadowBlur: chrome.shadowBlur,
34
+ shadowPadding: chrome.shadowPadding,
35
+ });
36
+ }
37
+
18
38
  export async function addChrome(screenshotBuffer, opts = {}) {
19
39
  const {
20
40
  url = '',