@essential-apps/shopify-test-runner 1.0.12 → 1.0.14

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.
Files changed (100) hide show
  1. package/dist/edge/edgeProxy.d.ts.map +1 -1
  2. package/dist/edge/edgeProxy.js +18 -12
  3. package/dist/edge/edgeProxy.js.map +1 -1
  4. package/dist/lib/guestVnc.d.ts +31 -0
  5. package/dist/lib/guestVnc.d.ts.map +1 -0
  6. package/dist/lib/guestVnc.js +111 -0
  7. package/dist/lib/guestVnc.js.map +1 -0
  8. package/dist/probes/runProbe.js +0 -0
  9. package/dist/scripts/addStore.js +0 -0
  10. package/dist/scripts/buildImage.d.ts +3 -0
  11. package/dist/scripts/buildImage.d.ts.map +1 -0
  12. package/dist/scripts/{buildDockerImage.js → buildImage.js} +12 -10
  13. package/dist/scripts/buildImage.js.map +1 -0
  14. package/dist/scripts/captureAuth.js +0 -0
  15. package/dist/scripts/captureContracts.js +0 -0
  16. package/dist/scripts/captureRestContracts.js +0 -0
  17. package/dist/scripts/captureSharedContracts.d.ts +3 -0
  18. package/dist/scripts/captureSharedContracts.d.ts.map +1 -0
  19. package/dist/scripts/captureSharedContracts.js +209 -0
  20. package/dist/scripts/captureSharedContracts.js.map +1 -0
  21. package/dist/scripts/checkOperationCoverage.js +0 -0
  22. package/dist/scripts/cleanupStores.js +0 -0
  23. package/dist/scripts/createStores.js +0 -0
  24. package/dist/scripts/deployAppVersion.js +0 -0
  25. package/dist/scripts/devOnlineBackend.js +0 -0
  26. package/dist/scripts/installApp.js +0 -0
  27. package/dist/scripts/listStores.js +0 -0
  28. package/dist/scripts/runOffline.js +78 -1
  29. package/dist/scripts/runOffline.js.map +1 -1
  30. package/dist/scripts/runOfflineFullTests.js +49 -21
  31. package/dist/scripts/runOfflineFullTests.js.map +1 -1
  32. package/dist/scripts/runTests.js +0 -0
  33. package/dist/scripts/runVm.js +0 -0
  34. package/dist/scripts/runVmAuth.js +0 -0
  35. package/dist/scripts/setupTestDb.js +0 -0
  36. package/dist/scripts/verifyContracts.js +20 -29
  37. package/dist/scripts/verifyContracts.js.map +1 -1
  38. package/dist/scripts/verifyRestContracts.js +17 -30
  39. package/dist/scripts/verifyRestContracts.js.map +1 -1
  40. package/package.json +11 -9
  41. package/src/edge/edgeProxy.ts +19 -12
  42. package/src/lib/guestVnc.ts +147 -0
  43. package/src/scripts/{buildDockerImage.ts → buildImage.ts} +11 -9
  44. package/src/scripts/captureSharedContracts.ts +228 -0
  45. package/src/scripts/runOffline.ts +82 -1
  46. package/src/scripts/runOfflineFullTests.ts +56 -21
  47. package/src/scripts/verifyContracts.ts +22 -38
  48. package/src/scripts/verifyRestContracts.ts +23 -42
  49. package/dist/edge/nodeShim.d.ts +0 -2
  50. package/dist/edge/nodeShim.d.ts.map +0 -1
  51. package/dist/edge/nodeShim.js +0 -217
  52. package/dist/edge/nodeShim.js.map +0 -1
  53. package/dist/scripts/_probeSourceUrl.d.ts +0 -3
  54. package/dist/scripts/_probeSourceUrl.d.ts.map +0 -1
  55. package/dist/scripts/_probeSourceUrl.js +0 -119
  56. package/dist/scripts/_probeSourceUrl.js.map +0 -1
  57. package/dist/scripts/buildDockerImage.d.ts +0 -3
  58. package/dist/scripts/buildDockerImage.d.ts.map +0 -1
  59. package/dist/scripts/buildDockerImage.js.map +0 -1
  60. package/dist/scripts/devE2eBackend.d.ts +0 -3
  61. package/dist/scripts/devE2eBackend.d.ts.map +0 -1
  62. package/dist/scripts/devE2eBackend.js +0 -117
  63. package/dist/scripts/devE2eBackend.js.map +0 -1
  64. package/dist/scripts/runDocker.d.ts +0 -3
  65. package/dist/scripts/runDocker.d.ts.map +0 -1
  66. package/dist/scripts/runDocker.js +0 -88
  67. package/dist/scripts/runDocker.js.map +0 -1
  68. package/dist/scripts/runDockerAuth.d.ts +0 -3
  69. package/dist/scripts/runDockerAuth.d.ts.map +0 -1
  70. package/dist/scripts/runDockerAuth.js +0 -108
  71. package/dist/scripts/runDockerAuth.js.map +0 -1
  72. package/dist/scripts/runDockerOffline.d.ts +0 -3
  73. package/dist/scripts/runDockerOffline.d.ts.map +0 -1
  74. package/dist/scripts/runDockerOffline.js +0 -129
  75. package/dist/scripts/runDockerOffline.js.map +0 -1
  76. package/dist/scripts/runDockerOfflineExplore.d.ts +0 -3
  77. package/dist/scripts/runDockerOfflineExplore.d.ts.map +0 -1
  78. package/dist/scripts/runDockerOfflineExplore.js +0 -116
  79. package/dist/scripts/runDockerOfflineExplore.js.map +0 -1
  80. package/dist/scripts/runIsolatedDockerOffline.d.ts +0 -3
  81. package/dist/scripts/runIsolatedDockerOffline.d.ts.map +0 -1
  82. package/dist/scripts/runIsolatedDockerOffline.js +0 -351
  83. package/dist/scripts/runIsolatedDockerOffline.js.map +0 -1
  84. package/dist/scripts/runOfflineE2e.d.ts +0 -3
  85. package/dist/scripts/runOfflineE2e.d.ts.map +0 -1
  86. package/dist/scripts/runOfflineE2e.js +0 -408
  87. package/dist/scripts/runOfflineE2e.js.map +0 -1
  88. package/dist/scripts/runSupermachine.d.ts +0 -3
  89. package/dist/scripts/runSupermachine.d.ts.map +0 -1
  90. package/dist/scripts/runSupermachine.js +0 -474
  91. package/dist/scripts/runSupermachine.js.map +0 -1
  92. package/dist/scripts/runSupermachineAuth.d.ts +0 -3
  93. package/dist/scripts/runSupermachineAuth.d.ts.map +0 -1
  94. package/dist/scripts/runSupermachineAuth.js +0 -454
  95. package/dist/scripts/runSupermachineAuth.js.map +0 -1
  96. package/dist/vite/offlineConfig.d.ts +0 -34
  97. package/dist/vite/offlineConfig.d.ts.map +0 -1
  98. package/dist/vite/offlineConfig.js +0 -61
  99. package/dist/vite/offlineConfig.js.map +0 -1
  100. package/src/scripts/runDockerAuth.ts +0 -120
@@ -1,351 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * runIsolatedDockerOffline — one libkrun microVM per test.
4
- *
5
- * Same target as `runDockerOffline.ts`, different parallelism model.
6
- *
7
- * runDockerOffline:
8
- * One container. One Postgres. One Remix. Playwright runs all
9
- * tests serially (or sharded via `E2E_OFFLINE_WORKERS=N` which
10
- * forks shards INSIDE the container, sharing the kernel + image).
11
- *
12
- * runIsolatedDockerOffline (this script):
13
- * N microVMs in parallel, one per test. Each VM gets its own
14
- * filesystem, kernel, Postgres binary, Remix backend, mock stack,
15
- * Chromium. A buggy test cannot leak processes, file handles, or
16
- * in-memory state into the next test — the entire VM is
17
- * destroyed after each test.
18
- *
19
- * Same isolation model the live-test suite already uses (#2 in the
20
- * architecture doc). Offline mode now matches.
21
- *
22
- * Pool model:
23
- * - Host enumerates tests once via `playwright --list --reporter=json`.
24
- * - Worker pool of `E2E_PARALLEL_VMS` slots (default: cpus/2).
25
- * - Each slot claims the next test off the queue, spawns
26
- * `container run` with env identifying the test, waits for exit,
27
- * loops until queue empty.
28
- *
29
- * Per-test container envelope:
30
- * - The whole runOfflineFullTests.ts boot runs inside, but
31
- * Playwright is invoked with `<file> --grep "<exact title>"` so
32
- * only ONE test runs. The Postgres/Remix/mock-server boot is
33
- * overhead-per-test (~5-8s); accept it for the isolation
34
- * guarantee.
35
- *
36
- * Reporting:
37
- * - Per-test stdout/stderr is captured to
38
- * `<repo>/test-results-isolated/<slug>/output.log`.
39
- * - JUnit XML per test (Playwright's built-in reporter) lands in
40
- * the same dir.
41
- * - This script aggregates final pass/fail counts to stdout and
42
- * prints failed-test names + log paths for triage.
43
- */
44
- import { spawn, execSync } from 'node:child_process';
45
- import { existsSync, mkdirSync, readFileSync, writeFileSync, createWriteStream } from 'node:fs';
46
- import { homedir, cpus } from 'node:os';
47
- import { resolve, relative } from 'node:path';
48
- const repoRoot = process.cwd();
49
- function readAppName() {
50
- const pkgPath = resolve(repoRoot, 'package.json');
51
- if (!existsSync(pkgPath)) {
52
- throw new Error(`No package.json at ${pkgPath}. Run this from the consuming app's repo root.`);
53
- }
54
- const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
55
- if (!pkg.name) {
56
- throw new Error(`package.json at ${pkgPath} has no \`name\` field.`);
57
- }
58
- return pkg.name.replace(/^@[^/]+\//, '');
59
- }
60
- /**
61
- * Slug-ify a test title for use as a directory name. Keep it human-
62
- * readable: strip emoji-like chars and tag markers, collapse spaces
63
- * to dashes, truncate. Collisions (two tests sharing the same slug)
64
- * are appended with an index — the caller handles that.
65
- */
66
- function slugify(s) {
67
- return s
68
- .toLowerCase()
69
- .replace(/[^a-z0-9]+/g, '-')
70
- .replace(/^-+|-+$/g, '')
71
- .slice(0, 80);
72
- }
73
- /**
74
- * Enumerate tests via Playwright's JSON list output. Runs on the
75
- * HOST (not inside the container) because `--list` doesn't construct
76
- * fixtures — it just parses test files and emits structure. Means
77
- * the host needs a `node_modules` deep enough to load Playwright +
78
- * the spec imports, which it already does (the same dir is
79
- * bind-mounted into containers).
80
- */
81
- function discoverTests(playwrightConfig, grep) {
82
- const args = [
83
- 'playwright',
84
- 'test',
85
- '--config',
86
- playwrightConfig,
87
- '--list',
88
- '--reporter=json',
89
- ];
90
- if (grep)
91
- args.push('--grep', grep);
92
- let output;
93
- try {
94
- output = execSync(`npx ${args.map((a) => JSON.stringify(a)).join(' ')}`, {
95
- encoding: 'utf8',
96
- stdio: ['ignore', 'pipe', 'pipe'],
97
- });
98
- }
99
- catch (err) {
100
- const stderr = err.stderr?.toString() ?? '';
101
- throw new Error(`playwright --list failed:\n${stderr || err.message}`);
102
- }
103
- const data = JSON.parse(output);
104
- // Playwright reports `spec.file` relative to testDir, not cwd. To
105
- // pass that file back to `playwright test <file>` we need a path
106
- // Playwright can resolve — easiest is testDir-relative (Playwright
107
- // resolves positional args against testDir first) but we'll go
108
- // cwd-relative to be unambiguous. Walk the config tree to find
109
- // the testDir for project 0 (we have one project).
110
- const testDirAbs = data.config?.projects?.[0]?.testDir ?? '';
111
- const testDirRelToCwd = testDirAbs ? relative(repoRoot, testDirAbs) : '';
112
- const tests = [];
113
- const usedSlugs = new Map();
114
- const walk = (suite, ancestors) => {
115
- // Skip the file-level suite from the title path. Playwright
116
- // emits the tree as: project ("") → file (titled with the spec
117
- // file path) → describe → … → spec. `--grep` matches against
118
- // the test's full name which is `describe > … > spec`, NOT
119
- // including the file. So we drop any suite whose title looks
120
- // like a spec file path.
121
- const isFileSuite = !!suite.title && /\.spec\.[tj]sx?$/.test(suite.title);
122
- const path = suite.title && !isFileSuite ? [...ancestors, suite.title] : ancestors;
123
- for (const child of suite.suites ?? [])
124
- walk(child, path);
125
- for (const spec of suite.specs ?? []) {
126
- // A spec maps to ONE test name (its title). Tests array under
127
- // it lists projected runs (per-project / browser config) —
128
- // we have one project, so length 1.
129
- const fileRelToTestDir = spec.file ?? '';
130
- const fileRelToCwd = testDirRelToCwd
131
- ? `${testDirRelToCwd}/${fileRelToTestDir}`
132
- : fileRelToTestDir;
133
- const displayTitle = [...path, spec.title].join(' > ');
134
- // Playwright's --grep target: describes + test title joined
135
- // by single spaces. See the comment on DiscoveredTest.grepTitle.
136
- const grepTitle = [...path, spec.title].join(' ');
137
- const baseSlug = slugify(`${fileRelToTestDir.split('/').pop() ?? 'spec'}-${spec.title}`);
138
- const count = usedSlugs.get(baseSlug) ?? 0;
139
- usedSlugs.set(baseSlug, count + 1);
140
- const slug = count === 0 ? baseSlug : `${baseSlug}-${count + 1}`;
141
- tests.push({ file: fileRelToCwd, displayTitle, grepTitle, slug });
142
- }
143
- };
144
- for (const root of data.suites ?? [])
145
- walk(root, []);
146
- return tests;
147
- }
148
- /**
149
- * Spawn one libkrun container that runs exactly one test, wait for
150
- * exit, return the result. Stdout/stderr are streamed to a per-test
151
- * log file AND mirrored to the host stdout with a `[slot K] ` prefix
152
- * so live runs show progress.
153
- */
154
- async function runOneTestInContainer(test, slot, ctx) {
155
- const outDir = resolve(ctx.outRoot, test.slug);
156
- mkdirSync(outDir, { recursive: true });
157
- const logPath = resolve(outDir, 'output.log');
158
- const logStream = createWriteStream(logPath);
159
- const escapedTitle = escapeForGrep(test.grepTitle);
160
- // `${file} --grep "${title}"` — Playwright's positional file arg
161
- // restricts to that spec, --grep restricts to that test title.
162
- // The runOfflineFullTests script forwards any extra argv to
163
- // playwright.
164
- //
165
- // `--output` is critical when running multiple VMs in parallel.
166
- // `/workspace` is bind-mounted from the host into every VM, so a
167
- // shared `test-results/` write path causes traces + screenshots
168
- // from one VM to overwrite the other (Playwright's
169
- // `.playwright-artifacts-N` temp files in particular race and
170
- // throw ENOENT on cleanup). Per-test output dir under
171
- // `test-results-isolated/<slug>/` keeps each VM's artifacts in
172
- // its own slot.
173
- const forwarded = [
174
- JSON.stringify(test.file),
175
- '--grep',
176
- JSON.stringify(escapedTitle),
177
- '--output',
178
- JSON.stringify(`test-results-isolated/${test.slug}/playwright`),
179
- ].join(' ');
180
- const innerCmd = [
181
- // Same node_modules guard as runDockerOffline: tolerate stale
182
- // caches from previous failed installs.
183
- 'if [ ! -f node_modules/.package-lock.json ] || [ ! -f node_modules/hono/package.json ]; then ' +
184
- 'echo "[runIsolated] node_modules empty/partial — running fresh npm install…"; ' +
185
- 'rm -rf node_modules; ' +
186
- 'npm install --legacy-peer-deps --engine-strict=false; ' +
187
- 'fi',
188
- `node --env-file=.env.test --import tsx node_modules/@essential-apps/shopify-test-runner/src/scripts/runOfflineFullTests.ts ${forwarded}`,
189
- ].join(' && ');
190
- const args = [
191
- 'run',
192
- '--rm',
193
- '--arch',
194
- 'amd64',
195
- // Smaller per-VM footprint than `runDockerOffline` (8 GB) — we
196
- // run many in parallel and each is doing one test's worth of
197
- // work. Bump if your tests need more.
198
- '--memory',
199
- ctx.perVmMemory,
200
- '--cpus',
201
- ctx.perVmCpus,
202
- ...ctx.passthroughEnv,
203
- '--env',
204
- // Each VM gets its own slot index so anything that wants a
205
- // deterministic per-slot value (port base, log prefix) can use it.
206
- `E2E_ISOLATED_SLOT=${slot}`,
207
- '--env',
208
- `E2E_ISOLATED_TEST_SLUG=${test.slug}`,
209
- '--mount',
210
- `type=bind,source=${repoRoot},target=/workspace`,
211
- '--mount',
212
- `type=bind,source=${ctx.linuxModules},target=/workspace/node_modules`,
213
- '-w',
214
- '/workspace',
215
- ctx.image,
216
- 'bash',
217
- '-c',
218
- innerCmd,
219
- ];
220
- const start = Date.now();
221
- return new Promise((resolveRun) => {
222
- const proc = spawn('container', args, { stdio: ['ignore', 'pipe', 'pipe'] });
223
- const prefix = `[slot ${slot} | ${test.slug}] `;
224
- const relay = (chunk) => {
225
- const text = chunk.toString('utf8');
226
- logStream.write(text);
227
- // Prefix each non-empty line on the host stdout so logs
228
- // interleave readably across slots.
229
- for (const line of text.split('\n')) {
230
- if (line.length > 0)
231
- process.stdout.write(prefix + line + '\n');
232
- }
233
- };
234
- proc.stdout.on('data', relay);
235
- proc.stderr.on('data', relay);
236
- proc.on('exit', (code) => {
237
- logStream.end();
238
- resolveRun({
239
- test,
240
- exitCode: code ?? 1,
241
- durationMs: Date.now() - start,
242
- logPath,
243
- });
244
- });
245
- });
246
- }
247
- /**
248
- * Playwright's `--grep` is interpreted as a regex. Test titles
249
- * frequently contain regex meta-characters (parens, brackets, `?`,
250
- * `+`) so we escape them to a literal match.
251
- */
252
- function escapeForGrep(s) {
253
- return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
254
- }
255
- async function main() {
256
- const appName = readAppName();
257
- const image = process.env['E2E_IMAGE'] ?? `${appName}-e2e:latest`;
258
- const linuxModules = process.env['E2E_LINUX_NODE_MODULES'] ??
259
- resolve(homedir(), `.cache/${appName}-e2e/node_modules`);
260
- mkdirSync(linuxModules, { recursive: true });
261
- const playwrightConfig = process.env['E2E_PLAYWRIGHT_CONFIG'] ??
262
- 'tests/e2e/playwright.offline-full.config.ts';
263
- // Forward any positional non-flag arg as a `--grep` filter so
264
- // `npm run e2e:offline-full:isolated -- --grep "cart-page"` works.
265
- // We don't parse arbitrary playwright flags here — keep this
266
- // script's surface small.
267
- const argv = process.argv.slice(2);
268
- let listGrep;
269
- for (let i = 0; i < argv.length; i++) {
270
- if (argv[i] === '--grep' && i + 1 < argv.length) {
271
- listGrep = argv[i + 1];
272
- i++;
273
- }
274
- }
275
- console.log(`[runIsolated] enumerating tests via Playwright (config=${playwrightConfig})…`);
276
- const tests = discoverTests(playwrightConfig, listGrep);
277
- if (tests.length === 0) {
278
- console.error('[runIsolated] no tests discovered — exiting');
279
- process.exit(1);
280
- }
281
- console.log(`[runIsolated] discovered ${tests.length} test(s)`);
282
- const concurrency = Math.max(1, Number(process.env['E2E_PARALLEL_VMS'] ?? Math.max(2, Math.floor(cpus().length / 2))));
283
- console.log(`[runIsolated] parallelism: ${concurrency} VM(s)`);
284
- const outRoot = resolve(repoRoot, 'test-results-isolated');
285
- mkdirSync(outRoot, { recursive: true });
286
- const passthroughEnv = [
287
- 'E2E_OFFLINE_EXTENSIONS_JSON',
288
- 'E2E_OFFLINE_POST_PURCHASE_EXT',
289
- 'E2E_OFFLINE_FIXTURE_DEBUG',
290
- 'E2E_OFFLINE_EDGE_DEBUG',
291
- 'E2E_OFFLINE_SHIM_DEBUG',
292
- 'E2E_OFFLINE_SKIP_LEAK_CHECK',
293
- 'E2E_OFFLINE_STRICT_GRAPHQL',
294
- ].flatMap((k) => process.env[k] !== undefined ? ['--env', `${k}=${process.env[k]}`] : []);
295
- const ctx = {
296
- image,
297
- linuxModules,
298
- outRoot,
299
- perVmMemory: process.env['E2E_PER_VM_MEMORY'] ?? '4096M',
300
- perVmCpus: process.env['E2E_PER_VM_CPUS'] ?? '2',
301
- passthroughEnv,
302
- };
303
- const queue = [...tests];
304
- const results = [];
305
- const startedAt = Date.now();
306
- await Promise.all(Array.from({ length: concurrency }, async (_, slot) => {
307
- while (queue.length > 0) {
308
- const test = queue.shift();
309
- if (!test)
310
- return;
311
- console.log(`[runIsolated] slot ${slot} starting: ${test.slug} (${queue.length} left in queue)`);
312
- const result = await runOneTestInContainer(test, slot, ctx);
313
- results.push(result);
314
- const verb = result.exitCode === 0 ? '✓' : '✗';
315
- console.log(`[runIsolated] slot ${slot} ${verb} ${test.slug} (${(result.durationMs / 1000).toFixed(1)}s, exit=${result.exitCode})`);
316
- }
317
- }));
318
- const totalMs = Date.now() - startedAt;
319
- const passed = results.filter((r) => r.exitCode === 0);
320
- const failed = results.filter((r) => r.exitCode !== 0);
321
- console.log(`\n[runIsolated] done: ${passed.length}/${results.length} passed in ${(totalMs / 1000).toFixed(1)}s wall-clock`);
322
- if (failed.length > 0) {
323
- console.log(`\n[runIsolated] failed tests:`);
324
- for (const f of failed) {
325
- console.log(` ✗ ${f.test.displayTitle}`);
326
- console.log(` file: ${f.test.file}`);
327
- console.log(` log: ${relative(repoRoot, f.logPath)}`);
328
- }
329
- }
330
- // Summary JSON for CI consumers — single source of truth on
331
- // pass/fail counts + per-test outcomes.
332
- writeFileSync(resolve(outRoot, 'summary.json'), JSON.stringify({
333
- totalMs,
334
- concurrency,
335
- passed: passed.length,
336
- failed: failed.length,
337
- tests: results.map((r) => ({
338
- file: r.test.file,
339
- title: r.test.displayTitle,
340
- slug: r.test.slug,
341
- exitCode: r.exitCode,
342
- durationMs: r.durationMs,
343
- })),
344
- }, null, 2));
345
- process.exit(failed.length === 0 ? 0 : 1);
346
- }
347
- main().catch((err) => {
348
- console.error(err);
349
- process.exit(1);
350
- });
351
- //# sourceMappingURL=runIsolatedDockerOffline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runIsolatedDockerOffline.js","sourceRoot":"","sources":["../../src/scripts/runIsolatedDockerOffline.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=runOfflineE2e.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runOfflineE2e.d.ts","sourceRoot":"","sources":["../../src/scripts/runOfflineE2e.ts"],"names":[],"mappings":""}