@essential-apps/shopify-test-runner 1.0.29 → 1.0.30

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.
@@ -1 +1 @@
1
- {"version":3,"file":"edgeProxy.d.ts","sourceRoot":"","sources":["../../src/edge/edgeProxy.ts"],"names":[],"mappings":"AA4CA;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AA8KD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAkJ5E"}
1
+ {"version":3,"file":"edgeProxy.d.ts","sourceRoot":"","sources":["../../src/edge/edgeProxy.ts"],"names":[],"mappings":"AA4CA;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AA2LD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAkJ5E"}
@@ -67,6 +67,18 @@ function dispatch(hostHeader, pathWithQuery, shopDomain, backends) {
67
67
  if (host === 'fonts.shopifycdn.com') {
68
68
  return { internalBase: backends.storefront, overridePath: `/__shopify-fonts${path}` };
69
69
  }
70
+ // ── fonts.googleapis.com / fonts.gstatic.com → Google Fonts mirror ──
71
+ // Apps occasionally load a Google webfont in the admin (essential-upsell:
72
+ // Playfair Display). The storefront mock serves the `_google-fonts`
73
+ // mirror captured by the `google-fonts` probe: the stylesheet from
74
+ // googleapis, the subset .woff2 files from gstatic — byte-identical, so
75
+ // the admin renders with the real font instead of a system fallback.
76
+ if (host === 'fonts.googleapis.com') {
77
+ return { internalBase: backends.storefront, overridePath: `/__google-fonts/css${path}` };
78
+ }
79
+ if (host === 'fonts.gstatic.com') {
80
+ return { internalBase: backends.storefront, overridePath: `/__google-fonts/gstatic${path}` };
81
+ }
70
82
  // ── *.shopifycdn.com → storefront mirror ────────────────────
71
83
  // Any other Shopify CDN subdomain not handled above falls back to
72
84
  // the generic asset-mirror handler. Bundled by the `mirror` probe.
@@ -1 +1 @@
1
- {"version":3,"file":"edgeProxy.js","sourceRoot":"","sources":["../../src/edge/edgeProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edgeProxy.js","sourceRoot":"","sources":["../../src/edge/edgeProxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Probe } from './types.js';
2
+ declare const probe: Probe;
3
+ export default probe;
4
+ //# sourceMappingURL=google-fonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-fonts.d.ts","sourceRoot":"","sources":["../../src/probes/google-fonts.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAgBxC,QAAA,MAAM,KAAK,EAAE,KAgGZ,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Google Fonts mirror probe.
3
+ *
4
+ * Goal: keep a byte-identical local mirror of the Google-hosted webfonts
5
+ * a consuming app loads in the admin (e.g. essential-upsell pulls
6
+ * `Playfair Display` 700 from `fonts.googleapis.com` in `root.tsx`), so
7
+ * the network-sealed offline sandbox can serve them and the admin renders
8
+ * with the real typography — AND detect when Google changes the bytes.
9
+ *
10
+ * This is a conformance contract, same idea as the Shopify-contract
11
+ * probes: the committed mirror IS the contract. Re-running the probe
12
+ * re-fetches every stylesheet + subset `.woff2`, compares sha256 to the
13
+ * committed manifest, refreshes the files, and reports drift. A `git diff`
14
+ * after a run shows exactly what Google changed (new hash in the URL, a
15
+ * re-subsetted font, an added/removed `@font-face`), so an upstream change
16
+ * surfaces in review instead of silently diverging.
17
+ *
18
+ * Layout (mirrors the gstatic URL path-shape so serving is a path lookup):
19
+ * _google-fonts/stylesheets/<family>.css
20
+ * _google-fonts/s/<family>/<ver>/<file>.woff2
21
+ * _google-fonts/manifest.json { stylesheets: query→{file,sha256},
22
+ * files: gstatic-path→{sha256,bytes} }
23
+ *
24
+ * Add a font to the contract:
25
+ * runProbe google-fonts --css="css2?family=Inter:wght@400;700&display=swap"
26
+ * (or pass a full https://fonts.googleapis.com/... URL). With no --css it
27
+ * just refreshes + drift-checks whatever's already committed.
28
+ *
29
+ * Serving: the edge routes fonts.googleapis.com → storefront
30
+ * `/__google-fonts/css/*` and fonts.gstatic.com → `/__google-fonts/gstatic/*`;
31
+ * the host must be on the offline allowlist (see offlineStack.ts).
32
+ */
33
+ import { mkdirSync, readFileSync, writeFileSync, existsSync } from 'node:fs';
34
+ import { resolve, dirname } from 'node:path';
35
+ import { createHash } from 'node:crypto';
36
+ // A modern desktop Chrome UA so the css2 endpoint returns woff2 (the
37
+ // format the offline browser uses), not the legacy ttf/eot fallbacks.
38
+ const MODERN_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ' +
39
+ '(KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
40
+ const sha256 = (b) => createHash('sha256').update(b).digest('hex');
41
+ const probe = {
42
+ name: 'google-fonts',
43
+ description: 'Mirror the Google Fonts (googleapis CSS + gstatic woff2) an app loads + detect upstream drift.',
44
+ outputDir: 'packages/themes/themes/_google-fonts',
45
+ async run(ctx) {
46
+ const dir = ctx.outputDir;
47
+ const manifestPath = resolve(dir, 'manifest.json');
48
+ const manifest = existsSync(manifestPath)
49
+ ? JSON.parse(readFileSync(manifestPath, 'utf8'))
50
+ : { stylesheets: {}, files: {} };
51
+ manifest.stylesheets ??= {};
52
+ manifest.files ??= {};
53
+ // Optionally add a new stylesheet to the contract.
54
+ const addCss = ctx.args['css'];
55
+ if (addCss) {
56
+ const u = new URL(addCss.startsWith('http')
57
+ ? addCss
58
+ : `https://fonts.googleapis.com/${addCss.replace(/^\//, '')}`);
59
+ const key = u.pathname.replace(/^\//, '') + u.search;
60
+ if (!manifest.stylesheets[key]) {
61
+ const family = (u.searchParams.get('family') ?? 'font')
62
+ .split(':')[0]
63
+ .replace(/\+/g, '-')
64
+ .toLowerCase();
65
+ manifest.stylesheets[key] = { file: `stylesheets/${family}.css`, sha256: '' };
66
+ console.log(`[google-fonts] added "${key}" → stylesheets/${family}.css`);
67
+ }
68
+ }
69
+ if (Object.keys(manifest.stylesheets).length === 0) {
70
+ console.warn('[google-fonts] nothing to mirror. Add one: runProbe google-fonts ' +
71
+ '--css="css2?family=Playfair+Display:wght@700&display=swap"');
72
+ return;
73
+ }
74
+ let drift = 0;
75
+ for (const [key, entry] of Object.entries(manifest.stylesheets)) {
76
+ const cssUrl = `https://fonts.googleapis.com/${key}`;
77
+ const cssRes = await fetch(cssUrl, { headers: { 'user-agent': MODERN_UA } });
78
+ if (!cssRes.ok) {
79
+ console.warn(`[google-fonts] ${cssUrl} → HTTP ${cssRes.status}; skipping`);
80
+ continue;
81
+ }
82
+ const css = await cssRes.text();
83
+ const cssHash = sha256(css);
84
+ if (entry.sha256 && entry.sha256 !== cssHash) {
85
+ drift++;
86
+ console.warn(`[google-fonts] DRIFT — stylesheet changed: ${key}`);
87
+ }
88
+ const cssPath = resolve(dir, entry.file);
89
+ mkdirSync(dirname(cssPath), { recursive: true });
90
+ writeFileSync(cssPath, css);
91
+ entry.sha256 = cssHash;
92
+ const woff2Paths = [
93
+ ...css.matchAll(/https:\/\/fonts\.gstatic\.com(\/[^)]+\.woff2)/g),
94
+ ].map((m) => m[1]);
95
+ for (const p of woff2Paths) {
96
+ const rel = p.slice(1); // strip leading '/'
97
+ const res = await fetch(`https://fonts.gstatic.com${p}`, {
98
+ headers: { 'user-agent': MODERN_UA },
99
+ });
100
+ if (!res.ok) {
101
+ console.warn(`[google-fonts] gstatic ${p} → HTTP ${res.status}; skipping`);
102
+ continue;
103
+ }
104
+ const buf = Buffer.from(await res.arrayBuffer());
105
+ const hash = sha256(buf);
106
+ const prev = manifest.files[rel];
107
+ if (prev && prev.sha256 !== hash) {
108
+ drift++;
109
+ console.warn(`[google-fonts] DRIFT — font file changed: ${rel}`);
110
+ }
111
+ const dest = resolve(dir, rel);
112
+ mkdirSync(dirname(dest), { recursive: true });
113
+ writeFileSync(dest, buf);
114
+ manifest.files[rel] = { sha256: hash, bytes: buf.length };
115
+ }
116
+ }
117
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
118
+ console.log(`[google-fonts] ${Object.keys(manifest.stylesheets).length} stylesheet(s), ` +
119
+ `${Object.keys(manifest.files).length} font file(s); ${drift} drift change(s).`);
120
+ console.log(`[google-fonts] mirror: ${dir} — \`git diff\` to review; commit to update the contract.`);
121
+ },
122
+ };
123
+ export default probe;
124
+ //# sourceMappingURL=google-fonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-fonts.js","sourceRoot":"","sources":["../../src/probes/google-fonts.ts"],"names":[],"mappings":"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"}
@@ -23,12 +23,14 @@ import { resolve, dirname } from 'node:path';
23
23
  import { fileURLToPath } from 'node:url';
24
24
  import { readRegistry, storageStatePath, } from '@essential-apps/shopify-test-core';
25
25
  import fontsProbe from './fonts.js';
26
+ import googleFontsProbe from './google-fonts.js';
26
27
  import mirrorProbe from './mirror.js';
27
28
  import { launchStealthBrowser } from '../lib/stealthLaunch.js';
28
29
  // ── Registry of available probes ──────────────────────────────
29
30
  // Order matters only for `--help` listing.
30
31
  const PROBES = {
31
32
  [fontsProbe.name]: fontsProbe,
33
+ [googleFontsProbe.name]: googleFontsProbe,
32
34
  [mirrorProbe.name]: mirrorProbe,
33
35
  };
34
36
  function parseArgs(argv) {
@@ -1 +1 @@
1
- {"version":3,"file":"runProbe.js","sourceRoot":"","sources":["../../src/probes/runProbe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runProbe.js","sourceRoot":"","sources":["../../src/probes/runProbe.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@essential-apps/shopify-test-runner",
3
- "version": "1.0.29",
3
+ "version": "1.0.30",
4
4
  "description": "Orchestration scripts (container, auth capture, install) and Playwright config preset for Essential Apps' Shopify test suites. Internal use only.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -124,6 +124,19 @@ function dispatch(
124
124
  return { internalBase: backends.storefront, overridePath: `/__shopify-fonts${path}` };
125
125
  }
126
126
 
127
+ // ── fonts.googleapis.com / fonts.gstatic.com → Google Fonts mirror ──
128
+ // Apps occasionally load a Google webfont in the admin (essential-upsell:
129
+ // Playfair Display). The storefront mock serves the `_google-fonts`
130
+ // mirror captured by the `google-fonts` probe: the stylesheet from
131
+ // googleapis, the subset .woff2 files from gstatic — byte-identical, so
132
+ // the admin renders with the real font instead of a system fallback.
133
+ if (host === 'fonts.googleapis.com') {
134
+ return { internalBase: backends.storefront, overridePath: `/__google-fonts/css${path}` };
135
+ }
136
+ if (host === 'fonts.gstatic.com') {
137
+ return { internalBase: backends.storefront, overridePath: `/__google-fonts/gstatic${path}` };
138
+ }
139
+
127
140
  // ── *.shopifycdn.com → storefront mirror ────────────────────
128
141
  // Any other Shopify CDN subdomain not handled above falls back to
129
142
  // the generic asset-mirror handler. Bundled by the `mirror` probe.
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Google Fonts mirror probe.
3
+ *
4
+ * Goal: keep a byte-identical local mirror of the Google-hosted webfonts
5
+ * a consuming app loads in the admin (e.g. essential-upsell pulls
6
+ * `Playfair Display` 700 from `fonts.googleapis.com` in `root.tsx`), so
7
+ * the network-sealed offline sandbox can serve them and the admin renders
8
+ * with the real typography — AND detect when Google changes the bytes.
9
+ *
10
+ * This is a conformance contract, same idea as the Shopify-contract
11
+ * probes: the committed mirror IS the contract. Re-running the probe
12
+ * re-fetches every stylesheet + subset `.woff2`, compares sha256 to the
13
+ * committed manifest, refreshes the files, and reports drift. A `git diff`
14
+ * after a run shows exactly what Google changed (new hash in the URL, a
15
+ * re-subsetted font, an added/removed `@font-face`), so an upstream change
16
+ * surfaces in review instead of silently diverging.
17
+ *
18
+ * Layout (mirrors the gstatic URL path-shape so serving is a path lookup):
19
+ * _google-fonts/stylesheets/<family>.css
20
+ * _google-fonts/s/<family>/<ver>/<file>.woff2
21
+ * _google-fonts/manifest.json { stylesheets: query→{file,sha256},
22
+ * files: gstatic-path→{sha256,bytes} }
23
+ *
24
+ * Add a font to the contract:
25
+ * runProbe google-fonts --css="css2?family=Inter:wght@400;700&display=swap"
26
+ * (or pass a full https://fonts.googleapis.com/... URL). With no --css it
27
+ * just refreshes + drift-checks whatever's already committed.
28
+ *
29
+ * Serving: the edge routes fonts.googleapis.com → storefront
30
+ * `/__google-fonts/css/*` and fonts.gstatic.com → `/__google-fonts/gstatic/*`;
31
+ * the host must be on the offline allowlist (see offlineStack.ts).
32
+ */
33
+ import { mkdirSync, readFileSync, writeFileSync, existsSync } from 'node:fs';
34
+ import { resolve, dirname } from 'node:path';
35
+ import { createHash } from 'node:crypto';
36
+ import type { Probe } from './types.js';
37
+
38
+ // A modern desktop Chrome UA so the css2 endpoint returns woff2 (the
39
+ // format the offline browser uses), not the legacy ttf/eot fallbacks.
40
+ const MODERN_UA =
41
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ' +
42
+ '(KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
43
+
44
+ interface FontManifest {
45
+ stylesheets: Record<string, { file: string; sha256: string }>;
46
+ files: Record<string, { sha256: string; bytes: number }>;
47
+ }
48
+
49
+ const sha256 = (b: Buffer | string): string =>
50
+ createHash('sha256').update(b).digest('hex');
51
+
52
+ const probe: Probe = {
53
+ name: 'google-fonts',
54
+ description:
55
+ 'Mirror the Google Fonts (googleapis CSS + gstatic woff2) an app loads + detect upstream drift.',
56
+ outputDir: 'packages/themes/themes/_google-fonts',
57
+
58
+ async run(ctx) {
59
+ const dir = ctx.outputDir;
60
+ const manifestPath = resolve(dir, 'manifest.json');
61
+ const manifest: FontManifest = existsSync(manifestPath)
62
+ ? (JSON.parse(readFileSync(manifestPath, 'utf8')) as FontManifest)
63
+ : { stylesheets: {}, files: {} };
64
+ manifest.stylesheets ??= {};
65
+ manifest.files ??= {};
66
+
67
+ // Optionally add a new stylesheet to the contract.
68
+ const addCss = ctx.args['css'];
69
+ if (addCss) {
70
+ const u = new URL(
71
+ addCss.startsWith('http')
72
+ ? addCss
73
+ : `https://fonts.googleapis.com/${addCss.replace(/^\//, '')}`,
74
+ );
75
+ const key = u.pathname.replace(/^\//, '') + u.search;
76
+ if (!manifest.stylesheets[key]) {
77
+ const family = (u.searchParams.get('family') ?? 'font')
78
+ .split(':')[0]!
79
+ .replace(/\+/g, '-')
80
+ .toLowerCase();
81
+ manifest.stylesheets[key] = { file: `stylesheets/${family}.css`, sha256: '' };
82
+ console.log(`[google-fonts] added "${key}" → stylesheets/${family}.css`);
83
+ }
84
+ }
85
+
86
+ if (Object.keys(manifest.stylesheets).length === 0) {
87
+ console.warn(
88
+ '[google-fonts] nothing to mirror. Add one: runProbe google-fonts ' +
89
+ '--css="css2?family=Playfair+Display:wght@700&display=swap"',
90
+ );
91
+ return;
92
+ }
93
+
94
+ let drift = 0;
95
+ for (const [key, entry] of Object.entries(manifest.stylesheets)) {
96
+ const cssUrl = `https://fonts.googleapis.com/${key}`;
97
+ const cssRes = await fetch(cssUrl, { headers: { 'user-agent': MODERN_UA } });
98
+ if (!cssRes.ok) {
99
+ console.warn(`[google-fonts] ${cssUrl} → HTTP ${cssRes.status}; skipping`);
100
+ continue;
101
+ }
102
+ const css = await cssRes.text();
103
+ const cssHash = sha256(css);
104
+ if (entry.sha256 && entry.sha256 !== cssHash) {
105
+ drift++;
106
+ console.warn(`[google-fonts] DRIFT — stylesheet changed: ${key}`);
107
+ }
108
+ const cssPath = resolve(dir, entry.file);
109
+ mkdirSync(dirname(cssPath), { recursive: true });
110
+ writeFileSync(cssPath, css);
111
+ entry.sha256 = cssHash;
112
+
113
+ const woff2Paths = [
114
+ ...css.matchAll(/https:\/\/fonts\.gstatic\.com(\/[^)]+\.woff2)/g),
115
+ ].map((m) => m[1]!);
116
+ for (const p of woff2Paths) {
117
+ const rel = p.slice(1); // strip leading '/'
118
+ const res = await fetch(`https://fonts.gstatic.com${p}`, {
119
+ headers: { 'user-agent': MODERN_UA },
120
+ });
121
+ if (!res.ok) {
122
+ console.warn(`[google-fonts] gstatic ${p} → HTTP ${res.status}; skipping`);
123
+ continue;
124
+ }
125
+ const buf = Buffer.from(await res.arrayBuffer());
126
+ const hash = sha256(buf);
127
+ const prev = manifest.files[rel];
128
+ if (prev && prev.sha256 !== hash) {
129
+ drift++;
130
+ console.warn(`[google-fonts] DRIFT — font file changed: ${rel}`);
131
+ }
132
+ const dest = resolve(dir, rel);
133
+ mkdirSync(dirname(dest), { recursive: true });
134
+ writeFileSync(dest, buf);
135
+ manifest.files[rel] = { sha256: hash, bytes: buf.length };
136
+ }
137
+ }
138
+
139
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
140
+ console.log(
141
+ `[google-fonts] ${Object.keys(manifest.stylesheets).length} stylesheet(s), ` +
142
+ `${Object.keys(manifest.files).length} font file(s); ${drift} drift change(s).`,
143
+ );
144
+ console.log(
145
+ `[google-fonts] mirror: ${dir} — \`git diff\` to review; commit to update the contract.`,
146
+ );
147
+ },
148
+ };
149
+
150
+ export default probe;
@@ -29,6 +29,7 @@ import {
29
29
  } from '@essential-apps/shopify-test-core';
30
30
  import type { Probe, ProbeContext } from './types.js';
31
31
  import fontsProbe from './fonts.js';
32
+ import googleFontsProbe from './google-fonts.js';
32
33
  import mirrorProbe from './mirror.js';
33
34
  import { launchStealthBrowser } from '../lib/stealthLaunch.js';
34
35
 
@@ -36,6 +37,7 @@ import { launchStealthBrowser } from '../lib/stealthLaunch.js';
36
37
  // Order matters only for `--help` listing.
37
38
  const PROBES: Record<string, Probe> = {
38
39
  [fontsProbe.name]: fontsProbe,
40
+ [googleFontsProbe.name]: googleFontsProbe,
39
41
  [mirrorProbe.name]: mirrorProbe,
40
42
  };
41
43