@essential-apps/shopify-test-runner 1.0.28 → 1.0.29
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/dist/edge/edgeProxy.js +1 -1
- package/dist/edge/edgeProxy.js.map +1 -1
- package/dist/lib/neonWsProxy.d.ts +1 -1
- package/dist/lib/neonWsProxy.js +1 -1
- package/dist/playwright/baseConfig.d.ts +1 -1
- package/dist/scripts/devOnlineBackend.js +1 -1
- package/dist/scripts/devOnlineBackend.js.map +1 -1
- package/dist/scripts/runOffline.js +12 -12
- package/dist/scripts/runOffline.js.map +1 -1
- package/dist/scripts/runOfflineTests.d.ts +3 -0
- package/dist/scripts/runOfflineTests.d.ts.map +1 -0
- package/dist/scripts/{runOfflineFullTests.js → runOfflineTests.js} +68 -68
- package/dist/scripts/runOfflineTests.js.map +1 -0
- package/dist/scripts/runTests.js +1 -1
- package/dist/scripts/runTests.js.map +1 -1
- package/dist/scripts/runVm.js +2 -2
- package/dist/scripts/runVm.js.map +1 -1
- package/dist/vite/onlineConfig.d.ts +1 -1
- package/dist/vite/onlineConfig.js +1 -1
- package/package.json +1 -1
- package/src/edge/edgeProxy.ts +1 -1
- package/src/lib/neonWsProxy.ts +1 -1
- package/src/playwright/baseConfig.ts +1 -1
- package/src/scripts/devOnlineBackend.ts +1 -1
- package/src/scripts/runOffline.ts +12 -12
- package/src/scripts/{runOfflineFullTests.ts → runOfflineTests.ts} +67 -67
- package/src/scripts/runTests.ts +1 -1
- package/src/scripts/runVm.ts +2 -2
- package/src/vite/onlineConfig.ts +1 -1
- package/dist/scripts/runOfflineFullTests.d.ts +0 -3
- package/dist/scripts/runOfflineFullTests.d.ts.map +0 -1
- package/dist/scripts/runOfflineFullTests.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* runOfflineTests — full-stack offline orchestrator.
|
|
4
4
|
*
|
|
5
5
|
* Boots the entire offline stack in ONE Node process:
|
|
6
6
|
*
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
* reaches our Admin GraphQL mock
|
|
14
14
|
* - Playwright as a child process, with mock URLs in env
|
|
15
15
|
*
|
|
16
|
-
* The Playwright fixture (`
|
|
16
|
+
* The Playwright fixture (`offlineTest`, orchestrated mode)
|
|
17
17
|
* reads the mock URLs from env and routes browser requests via
|
|
18
18
|
* `page.route()`. Tests mutate ShopState via control-plane HTTP
|
|
19
19
|
* endpoints exposed by the storefront mock (mounted under
|
|
20
20
|
* `/__test__/state/*`).
|
|
21
21
|
*
|
|
22
22
|
* This is the offline counterpart to runTests.ts (online mode).
|
|
23
|
-
* Online tests still go via runTests.ts; offline
|
|
23
|
+
* Online tests still go via runTests.ts; offline tests via this.
|
|
24
24
|
*
|
|
25
25
|
* Env it sets in the spawned Remix backend:
|
|
26
26
|
* SHOPIFY_API_SECRET = mock JWT secret (so JWTs validate)
|
|
@@ -135,7 +135,7 @@ function dropOrphanDatabases(prefix: string): void {
|
|
|
135
135
|
.map((s) => s.trim())
|
|
136
136
|
.filter((s) => s.length > 0);
|
|
137
137
|
if (orphans.length === 0) return;
|
|
138
|
-
console.log(`[
|
|
138
|
+
console.log(`[runOfflineTests] cleanup: dropping ${orphans.length} orphan DB(s)…`);
|
|
139
139
|
for (const name of orphans) {
|
|
140
140
|
try {
|
|
141
141
|
// `--force` (psql 13+) terminates any leftover connections
|
|
@@ -152,7 +152,7 @@ function dropOrphanDatabases(prefix: string): void {
|
|
|
152
152
|
} catch (err) {
|
|
153
153
|
// If psql isn't available at all we just skip cleanup; the
|
|
154
154
|
// primary createdb below will fail loudly anyway.
|
|
155
|
-
console.warn(`[
|
|
155
|
+
console.warn(`[runOfflineTests] orphan-DB cleanup failed: ${(err as Error).message}`);
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
|
|
@@ -289,7 +289,7 @@ function ensureOfflineSetup(): void {
|
|
|
289
289
|
try {
|
|
290
290
|
hostsContent = readFileSync(hostsPath, 'utf8');
|
|
291
291
|
} catch {
|
|
292
|
-
console.warn(`[
|
|
292
|
+
console.warn(`[runOfflineTests] could not read ${hostsPath}; skipping /etc/hosts setup`);
|
|
293
293
|
return;
|
|
294
294
|
}
|
|
295
295
|
const hostsToAdd: string[] = [];
|
|
@@ -316,10 +316,10 @@ function ensureOfflineSetup(): void {
|
|
|
316
316
|
if (hostsToAdd.length > 0) {
|
|
317
317
|
try {
|
|
318
318
|
writeFileSync(hostsPath, hostsContent + '\n' + hostsToAdd.join('\n') + '\n');
|
|
319
|
-
console.log(`[
|
|
319
|
+
console.log(`[runOfflineTests] wrote ${hostsToAdd.length} /etc/hosts entries`);
|
|
320
320
|
} catch (err) {
|
|
321
321
|
console.warn(
|
|
322
|
-
`[
|
|
322
|
+
`[runOfflineTests] could not write ${hostsPath}: ${(err as Error).message}. ` +
|
|
323
323
|
`Browser may resolve Shopify hostnames to real Shopify on the internet.`,
|
|
324
324
|
);
|
|
325
325
|
}
|
|
@@ -340,12 +340,12 @@ function ensureOfflineSetup(): void {
|
|
|
340
340
|
if (existing !== TEST_CA_CERT_PEM) {
|
|
341
341
|
writeFileSync(systemCertDest, TEST_CA_CERT_PEM);
|
|
342
342
|
execSync('update-ca-certificates >/dev/null 2>&1 || true', { stdio: 'ignore' });
|
|
343
|
-
console.log('[
|
|
343
|
+
console.log('[runOfflineTests] installed edge CA into system trust store');
|
|
344
344
|
}
|
|
345
345
|
process.env['NODE_EXTRA_CA_CERTS'] = systemCertDest;
|
|
346
346
|
} catch (err) {
|
|
347
347
|
console.warn(
|
|
348
|
-
`[
|
|
348
|
+
`[runOfflineTests] could not install edge CA: ${(err as Error).message}. ` +
|
|
349
349
|
`TLS connections to the edge may fail.`,
|
|
350
350
|
);
|
|
351
351
|
}
|
|
@@ -385,10 +385,10 @@ function ensureOfflineSetup(): void {
|
|
|
385
385
|
{ stdio: 'ignore' },
|
|
386
386
|
);
|
|
387
387
|
unlinkSync(tmpCaPath);
|
|
388
|
-
console.log('[
|
|
388
|
+
console.log('[runOfflineTests] installed edge CA into NSS DB (Chrome)');
|
|
389
389
|
} catch (err) {
|
|
390
390
|
console.warn(
|
|
391
|
-
`[
|
|
391
|
+
`[runOfflineTests] could not install edge CA into NSS DB: ${(err as Error).message}. ` +
|
|
392
392
|
`Chrome will reject the edge's cert. Verify libnss3-tools is installed in the image.`,
|
|
393
393
|
);
|
|
394
394
|
}
|
|
@@ -425,7 +425,7 @@ async function startOfflineDnsRedirect(): Promise<OfflineResolver | null> {
|
|
|
425
425
|
resolver = await startOfflineResolver({ upstream });
|
|
426
426
|
} catch (err) {
|
|
427
427
|
console.warn(
|
|
428
|
-
`[
|
|
428
|
+
`[runOfflineTests] offline DNS resolver failed to bind 127.0.0.1:53: ` +
|
|
429
429
|
`${(err as Error).message}. page.request may resolve Shopify ` +
|
|
430
430
|
`hostnames to real Shopify on the internet.`,
|
|
431
431
|
);
|
|
@@ -441,12 +441,12 @@ async function startOfflineDnsRedirect(): Promise<OfflineResolver | null> {
|
|
|
441
441
|
// so an aggressive timeout would spuriously fail real lookups.
|
|
442
442
|
writeFileSync('/etc/resolv.conf', 'nameserver 127.0.0.1\n');
|
|
443
443
|
console.log(
|
|
444
|
-
'[
|
|
444
|
+
'[runOfflineTests] offline DNS resolver on 127.0.0.1:53 ' +
|
|
445
445
|
`(Shopify → loopback${upstream ? `, else → ${upstream}` : ', else → SERVFAIL'})`,
|
|
446
446
|
);
|
|
447
447
|
} catch (err) {
|
|
448
448
|
console.warn(
|
|
449
|
-
`[
|
|
449
|
+
`[runOfflineTests] could not repoint /etc/resolv.conf: ` +
|
|
450
450
|
`${(err as Error).message}. c-ares clients may bypass the resolver.`,
|
|
451
451
|
);
|
|
452
452
|
}
|
|
@@ -552,7 +552,7 @@ function seedSession(env: Record<string, string>, shopDomain: string): void {
|
|
|
552
552
|
* - Supervisor (no `TEST_OFFLINE_SHARD_INDEX` set, N>1):
|
|
553
553
|
* 1. Build cache check + build once (so shards don't race)
|
|
554
554
|
* 2. Orphan-DB cleanup once
|
|
555
|
-
* 3. Spawn N child processes (`node ...
|
|
555
|
+
* 3. Spawn N child processes (`node ... runOfflineTests.ts`)
|
|
556
556
|
* each with `TEST_OFFLINE_SHARD_INDEX=k`, `TEST_OFFLINE_SKIP_BUILD=true`
|
|
557
557
|
* 4. Stream child stdout/stderr prefixed with [shard k]
|
|
558
558
|
* 5. Wait for all, exit with worst exit code
|
|
@@ -584,14 +584,14 @@ async function main(): Promise<void> {
|
|
|
584
584
|
// strategy or invasive Chromium/Node bypasses. We tried that path
|
|
585
585
|
// (page.route() + host-resolver-rules + a Node socket-layer shim);
|
|
586
586
|
// it worked but maintained ~400 lines of bypass code in parallel.
|
|
587
|
-
// Use `npm run test:offline
|
|
587
|
+
// Use `npm run test:offline` from the consuming app — it
|
|
588
588
|
// routes through `runDockerOffline.ts` which spawns the
|
|
589
589
|
// `essential-upsell-test:latest` image where TEST_IN_CONTAINER=true
|
|
590
590
|
// is set by docker/entrypoint.sh.
|
|
591
591
|
if (process.env['TEST_IN_CONTAINER'] !== 'true') {
|
|
592
592
|
console.error(
|
|
593
|
-
'[
|
|
594
|
-
' Run: `npm run test:offline
|
|
593
|
+
'[runOfflineTests] FATAL: must run inside the offline container.\n' +
|
|
594
|
+
' Run: `npm run test:offline` (which invokes runDockerOffline.ts)\n' +
|
|
595
595
|
' If you are seeing this from inside what should be a container, the\n' +
|
|
596
596
|
" entrypoint script (tests/offline/docker/entrypoint.sh) didn't run or\n" +
|
|
597
597
|
" didn't export TEST_IN_CONTAINER=true.",
|
|
@@ -646,7 +646,7 @@ async function main(): Promise<void> {
|
|
|
646
646
|
const scopes = process.env['SCOPES'] ?? 'write_products,read_products,write_discounts,read_discounts';
|
|
647
647
|
const playwrightConfig =
|
|
648
648
|
process.env['TEST_PLAYWRIGHT_CONFIG'] ??
|
|
649
|
-
'tests/offline/playwright.offline
|
|
649
|
+
'tests/offline/playwright.offline.config.ts';
|
|
650
650
|
const isChildShard = shardIndex !== null;
|
|
651
651
|
// Backend port: shard k uses BASE + (k-1); single-worker uses BASE.
|
|
652
652
|
const baseBackendPort = Number(process.env['TEST_OFFLINE_BACKEND_PORT'] ?? '8181');
|
|
@@ -654,9 +654,9 @@ async function main(): Promise<void> {
|
|
|
654
654
|
isChildShard ? baseBackendPort + (shardIndex - 1) : baseBackendPort,
|
|
655
655
|
);
|
|
656
656
|
// Production Remix serves via plain HTTP (remix-serve has no TLS).
|
|
657
|
-
// Vite dev had self-signed HTTPS; offline
|
|
657
|
+
// Vite dev had self-signed HTTPS; offline uses HTTP. The mock
|
|
658
658
|
// admin shell serves the iframe pointing here; mixed-content
|
|
659
|
-
// warnings are silenced via Chrome flags in the
|
|
659
|
+
// warnings are silenced via Chrome flags in the offlineStack
|
|
660
660
|
// fixture.
|
|
661
661
|
const backendUrl = `http://localhost:${backendPort}`;
|
|
662
662
|
// Skip the build if TEST_OFFLINE_SKIP_BUILD=true and a recent build
|
|
@@ -671,8 +671,8 @@ async function main(): Promise<void> {
|
|
|
671
671
|
const dbConn = dbUrl(dbName);
|
|
672
672
|
const preserveDb = process.env['TEST_PRESERVE_DB'] === 'true';
|
|
673
673
|
|
|
674
|
-
console.log(`[
|
|
675
|
-
console.log(`[
|
|
674
|
+
console.log(`[runOfflineTests] Test DB: ${dbConn}`);
|
|
675
|
+
console.log(`[runOfflineTests] Backend: ${backendUrl}`);
|
|
676
676
|
|
|
677
677
|
// Drop orphan DBs from previous crashed runs. The supervisor
|
|
678
678
|
// already did this once — children skip.
|
|
@@ -680,7 +680,7 @@ async function main(): Promise<void> {
|
|
|
680
680
|
dropOrphanDatabases(dbPrefix);
|
|
681
681
|
}
|
|
682
682
|
|
|
683
|
-
console.log('[
|
|
683
|
+
console.log('[runOfflineTests] createdb…');
|
|
684
684
|
execSync(`createdb -h ${PG_HOST} -p ${PG_PORT} ${dbName}`, { stdio: 'inherit' });
|
|
685
685
|
|
|
686
686
|
// ── Mock servers (in-process, sharing one ShopState) ─────
|
|
@@ -706,7 +706,7 @@ async function main(): Promise<void> {
|
|
|
706
706
|
seedExploreProducts(state);
|
|
707
707
|
}
|
|
708
708
|
|
|
709
|
-
console.log('[
|
|
709
|
+
console.log('[runOfflineTests] booting mock servers…');
|
|
710
710
|
// 127.0.0.1 binding is the safe default — orchestrator and child
|
|
711
711
|
// both reach the mocks on loopback. Used to be subtly broken
|
|
712
712
|
// because we ran Playwright via execSync (sync, blocks the event
|
|
@@ -736,7 +736,7 @@ async function main(): Promise<void> {
|
|
|
736
736
|
: undefined;
|
|
737
737
|
if (postPurchaseExtensionPath && !existsSync(postPurchaseExtensionPath)) {
|
|
738
738
|
throw new Error(
|
|
739
|
-
`[
|
|
739
|
+
`[runOfflineTests] TEST_OFFLINE_POST_PURCHASE_EXT points at ${postPurchaseExtensionPath} but the file doesn't exist. ` +
|
|
740
740
|
`Build the extension first — the bundled .js must exist on disk before the test run.`,
|
|
741
741
|
);
|
|
742
742
|
}
|
|
@@ -782,7 +782,7 @@ async function main(): Promise<void> {
|
|
|
782
782
|
startOpts,
|
|
783
783
|
);
|
|
784
784
|
console.log(
|
|
785
|
-
`[
|
|
785
|
+
`[runOfflineTests] mocks ready:\n` +
|
|
786
786
|
` shell: ${adminShell.baseUrl}\n` +
|
|
787
787
|
` admin GQL: ${adminApi.baseUrl}\n` +
|
|
788
788
|
` storefront GQL: ${storefrontApi.baseUrl}\n` +
|
|
@@ -800,9 +800,9 @@ async function main(): Promise<void> {
|
|
|
800
800
|
for (const p of probes) {
|
|
801
801
|
try {
|
|
802
802
|
const r = await fetch(p.url, p.init);
|
|
803
|
-
console.log(`[
|
|
803
|
+
console.log(`[runOfflineTests] probe ${p.name}: ${r.status}`);
|
|
804
804
|
} catch (e) {
|
|
805
|
-
console.log(`[
|
|
805
|
+
console.log(`[runOfflineTests] probe ${p.name}: FAILED ${(e as Error).message}`);
|
|
806
806
|
}
|
|
807
807
|
}
|
|
808
808
|
|
|
@@ -847,7 +847,7 @@ async function main(): Promise<void> {
|
|
|
847
847
|
hostname: '0.0.0.0',
|
|
848
848
|
port: 443,
|
|
849
849
|
});
|
|
850
|
-
console.log(`[
|
|
850
|
+
console.log(`[runOfflineTests] edge proxy: ${edge.baseUrl}`);
|
|
851
851
|
|
|
852
852
|
// ── Neon-local WS proxy (zero-app-touch) ──────────────────
|
|
853
853
|
// Bridge the app's @neondatabase/serverless driver to THIS run's local
|
|
@@ -856,7 +856,7 @@ async function main(): Promise<void> {
|
|
|
856
856
|
// the proxy reads the driver's `?address=` and forwards to Postgres.
|
|
857
857
|
const neonProxy = await startNeonWsProxy({ targetHost: PG_HOST, targetPort: Number(PG_PORT) });
|
|
858
858
|
console.log(
|
|
859
|
-
`[
|
|
859
|
+
`[runOfflineTests] neon ws-proxy: 127.0.0.1:${neonProxy.port} → Postgres ${PG_HOST}:${PG_PORT}`,
|
|
860
860
|
);
|
|
861
861
|
|
|
862
862
|
// ── Backend env ───────────────────────────────────────────
|
|
@@ -956,7 +956,7 @@ async function main(): Promise<void> {
|
|
|
956
956
|
: {}),
|
|
957
957
|
};
|
|
958
958
|
|
|
959
|
-
console.log('[
|
|
959
|
+
console.log('[runOfflineTests] prisma migrate deploy…');
|
|
960
960
|
// Strip the MSW loader from NODE_OPTIONS for prisma's invocation.
|
|
961
961
|
// MSW shouldn't intercept Postgres connections (it's HTTP-only),
|
|
962
962
|
// but loading it from inside `npx prisma` triggers a silent
|
|
@@ -979,19 +979,19 @@ async function main(): Promise<void> {
|
|
|
979
979
|
// a no-op for apps that don't need it.
|
|
980
980
|
const extraSchema = resolve(process.cwd(), 'tests/offline/offline-extra-schema.sql');
|
|
981
981
|
if (existsSync(extraSchema)) {
|
|
982
|
-
console.log('[
|
|
982
|
+
console.log('[runOfflineTests] applying extra schema (tests/offline/offline-extra-schema.sql)…');
|
|
983
983
|
execSync(
|
|
984
984
|
`psql -h ${PG_HOST} -p ${PG_PORT} -d ${dbName} -v ON_ERROR_STOP=1 -f ${JSON.stringify(extraSchema)}`,
|
|
985
985
|
{ stdio: 'inherit', env: prismaEnv },
|
|
986
986
|
);
|
|
987
987
|
}
|
|
988
988
|
|
|
989
|
-
console.log('[
|
|
989
|
+
console.log('[runOfflineTests] seeding session row…');
|
|
990
990
|
try {
|
|
991
991
|
seedSession(prismaEnv as Record<string, string>, DEFAULT_SHOP_DOMAIN);
|
|
992
992
|
} catch (err) {
|
|
993
993
|
console.warn(
|
|
994
|
-
`[
|
|
994
|
+
`[runOfflineTests] session seed failed (continuing): ${(err as Error).message}`,
|
|
995
995
|
);
|
|
996
996
|
}
|
|
997
997
|
|
|
@@ -1049,7 +1049,7 @@ async function main(): Promise<void> {
|
|
|
1049
1049
|
* the conventional exit code (`128 + signal`).
|
|
1050
1050
|
*/
|
|
1051
1051
|
const onSignal = (sig: 'SIGINT' | 'SIGTERM'): void => {
|
|
1052
|
-
console.log(`\n[
|
|
1052
|
+
console.log(`\n[runOfflineTests] received ${sig}, tearing down…`);
|
|
1053
1053
|
cleanup();
|
|
1054
1054
|
// 128 + signal number is the POSIX convention.
|
|
1055
1055
|
process.exit(sig === 'SIGINT' ? 130 : 143);
|
|
@@ -1087,15 +1087,15 @@ async function main(): Promise<void> {
|
|
|
1087
1087
|
const skipBuildBecauseCache = cachedHash === currentBuildHash;
|
|
1088
1088
|
|
|
1089
1089
|
if (skipBuildBecauseExplicit) {
|
|
1090
|
-
console.log('[
|
|
1090
|
+
console.log('[runOfflineTests] skipping build (TEST_OFFLINE_SKIP_BUILD=true)');
|
|
1091
1091
|
} else if (skipBuildBecauseCache) {
|
|
1092
1092
|
console.log(
|
|
1093
|
-
`[
|
|
1093
|
+
`[runOfflineTests] build cache HIT (${currentBuildHash.slice(0, 12)}) — skipping npm run build. ` +
|
|
1094
1094
|
`Force with TEST_OFFLINE_FORCE_BUILD=true.`,
|
|
1095
1095
|
);
|
|
1096
1096
|
} else {
|
|
1097
1097
|
console.log(
|
|
1098
|
-
`[
|
|
1098
|
+
`[runOfflineTests] build cache MISS — running npm run build. ` +
|
|
1099
1099
|
`(${cachedHash ? `was ${cachedHash.slice(0, 12)}, now ` : 'no cache, '}${currentBuildHash.slice(0, 12)})`,
|
|
1100
1100
|
);
|
|
1101
1101
|
execSync('npm run build', {
|
|
@@ -1106,7 +1106,7 @@ async function main(): Promise<void> {
|
|
|
1106
1106
|
// crashed build leaves stale `build/` we shouldn't endorse.
|
|
1107
1107
|
writeFileSync(buildCachePath, currentBuildHash);
|
|
1108
1108
|
}
|
|
1109
|
-
console.log('[
|
|
1109
|
+
console.log('[runOfflineTests] booting Remix prod server (remix-serve)…');
|
|
1110
1110
|
// Resolve remix-serve's CLI path directly — `npx remix-serve`
|
|
1111
1111
|
// on some systems alters NODE_OPTIONS (it spawns a child via
|
|
1112
1112
|
// npm-cli with PATH manipulation), which silently drops our
|
|
@@ -1145,9 +1145,9 @@ async function main(): Promise<void> {
|
|
|
1145
1145
|
env: backendRuntimeEnv,
|
|
1146
1146
|
},
|
|
1147
1147
|
);
|
|
1148
|
-
console.log(`[
|
|
1148
|
+
console.log(`[runOfflineTests] waiting for backend at ${backendUrl}…`);
|
|
1149
1149
|
await waitForReady(backendUrl, READY_TIMEOUT_MS);
|
|
1150
|
-
console.log('[
|
|
1150
|
+
console.log('[runOfflineTests] backend ready.');
|
|
1151
1151
|
|
|
1152
1152
|
// ── Pre-warm Remix routes ──────────────────────────────────
|
|
1153
1153
|
// remix-serve lazy-compiles each route's loader/action module on
|
|
@@ -1167,7 +1167,7 @@ async function main(): Promise<void> {
|
|
|
1167
1167
|
//
|
|
1168
1168
|
// Failures are non-fatal — the next real test request will
|
|
1169
1169
|
// surface a clearer error than "warm-up failed".
|
|
1170
|
-
console.log('[
|
|
1170
|
+
console.log('[runOfflineTests] pre-warming hot Remix routes…');
|
|
1171
1171
|
const warmupToken = await mintIdToken({
|
|
1172
1172
|
shop: DEFAULT_SHOP_DOMAIN,
|
|
1173
1173
|
clientId: MOCK_CLIENT_ID,
|
|
@@ -1202,7 +1202,7 @@ async function main(): Promise<void> {
|
|
|
1202
1202
|
authorization: `Bearer ${warmupToken}`,
|
|
1203
1203
|
// shopify-app-remix's `isbot` check returns 410 for
|
|
1204
1204
|
// Node's default User-Agent. Match the same UA the
|
|
1205
|
-
// browser context uses in tests (see
|
|
1205
|
+
// browser context uses in tests (see offlineStack
|
|
1206
1206
|
// fixture) so the request reaches the loader.
|
|
1207
1207
|
'user-agent':
|
|
1208
1208
|
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ' +
|
|
@@ -1223,7 +1223,7 @@ async function main(): Promise<void> {
|
|
|
1223
1223
|
}),
|
|
1224
1224
|
);
|
|
1225
1225
|
console.log(
|
|
1226
|
-
`[
|
|
1226
|
+
`[runOfflineTests] route pre-warm done (${Date.now() - t0}ms):`,
|
|
1227
1227
|
);
|
|
1228
1228
|
for (const r of warmupResults) {
|
|
1229
1229
|
const status =
|
|
@@ -1251,7 +1251,7 @@ async function main(): Promise<void> {
|
|
|
1251
1251
|
const adminUrl =
|
|
1252
1252
|
process.env['TEST_OFFLINE_EXPLORE_URL'] ??
|
|
1253
1253
|
`https://admin.shopify.com/store/test/apps/${DEFAULT_APP_HANDLE}/app`;
|
|
1254
|
-
console.log('[
|
|
1254
|
+
console.log('[runOfflineTests] explore mode — launching Chrome at:');
|
|
1255
1255
|
console.log(` ${adminUrl}`);
|
|
1256
1256
|
console.log('');
|
|
1257
1257
|
console.log(' Useful URLs you can navigate to (all routed via the edge proxy):');
|
|
@@ -1361,7 +1361,7 @@ async function main(): Promise<void> {
|
|
|
1361
1361
|
await sfPage.goto(storefrontUrl, { waitUntil: 'domcontentloaded' });
|
|
1362
1362
|
} catch (err) {
|
|
1363
1363
|
console.error(
|
|
1364
|
-
`[
|
|
1364
|
+
`[runOfflineTests] explore: storefront tab failed to load (${(err as Error).message}) — continuing`,
|
|
1365
1365
|
);
|
|
1366
1366
|
}
|
|
1367
1367
|
// Leave the admin tab focused as the active one.
|
|
@@ -1386,7 +1386,7 @@ async function main(): Promise<void> {
|
|
|
1386
1386
|
}
|
|
1387
1387
|
|
|
1388
1388
|
// ── Playwright ─────────────────────────────────────────
|
|
1389
|
-
console.log('[
|
|
1389
|
+
console.log('[runOfflineTests] running Playwright…');
|
|
1390
1390
|
// Headed-under-Xvfb is the DEFAULT for offline runs (production-
|
|
1391
1391
|
// faithful, ~4% slower than headless). Opt OUT with
|
|
1392
1392
|
// TEST_OFFLINE_HEADLESS=true. Full-screen recording (TEST_OFFLINE_VIDEO)
|
|
@@ -1411,7 +1411,7 @@ async function main(): Promise<void> {
|
|
|
1411
1411
|
}
|
|
1412
1412
|
if (!hasFfmpeg) {
|
|
1413
1413
|
console.error(
|
|
1414
|
-
'[
|
|
1414
|
+
'[runOfflineTests] TEST_OFFLINE_VIDEO set but `ffmpeg` is missing from the ' +
|
|
1415
1415
|
'VM image — rebuild it (it predates video support): ' +
|
|
1416
1416
|
'`container image rm essential-apps/shopify-test-vm:latest` then re-run. ' +
|
|
1417
1417
|
'Continuing headed WITHOUT recording.',
|
|
@@ -1438,7 +1438,7 @@ async function main(): Promise<void> {
|
|
|
1438
1438
|
headedReady = existsSync('/tmp/.X11-unix/X99');
|
|
1439
1439
|
if (!headedReady) {
|
|
1440
1440
|
console.error(
|
|
1441
|
-
'[
|
|
1441
|
+
'[runOfflineTests] WARNING: Xvfb :99 did not start — falling back to headless',
|
|
1442
1442
|
);
|
|
1443
1443
|
videoOn = false;
|
|
1444
1444
|
headedOn = false;
|
|
@@ -1446,7 +1446,7 @@ async function main(): Promise<void> {
|
|
|
1446
1446
|
process.env['TEST_OFFLINE_HEADED'] = 'false';
|
|
1447
1447
|
} else {
|
|
1448
1448
|
console.error(
|
|
1449
|
-
`[
|
|
1449
|
+
`[runOfflineTests] headed under Xvfb :99 (${videoOn ? 'recording' : 'no recording'})`,
|
|
1450
1450
|
);
|
|
1451
1451
|
}
|
|
1452
1452
|
}
|
|
@@ -1525,7 +1525,7 @@ async function main(): Promise<void> {
|
|
|
1525
1525
|
// a file path, `--repeat-each`, etc. The docker runner already
|
|
1526
1526
|
// forwards user args verbatim into this script's argv; we just
|
|
1527
1527
|
// pass them through to playwright so single-test iteration is
|
|
1528
|
-
// possible (`npm run test:offline
|
|
1528
|
+
// possible (`npm run test:offline -- --grep "PDP form"`).
|
|
1529
1529
|
// Skip our own known flags (currently none after the launcher
|
|
1530
1530
|
// strips them — process.argv[0] is `node`, argv[1] is this
|
|
1531
1531
|
// script).
|
|
@@ -1548,9 +1548,9 @@ async function main(): Promise<void> {
|
|
|
1548
1548
|
}
|
|
1549
1549
|
exitCode = 0;
|
|
1550
1550
|
} catch (err) {
|
|
1551
|
-
console.error(`[
|
|
1551
|
+
console.error(`[runOfflineTests] failed: ${(err as Error).message}`);
|
|
1552
1552
|
} finally {
|
|
1553
|
-
console.log('[
|
|
1553
|
+
console.log('[runOfflineTests] tearing down…');
|
|
1554
1554
|
// `cleanup()` kills the backend AND drops the DB (with
|
|
1555
1555
|
// preserveDb honored). It's the same function the signal
|
|
1556
1556
|
// handlers call, so the teardown path is identical whether
|
|
@@ -1570,7 +1570,7 @@ async function main(): Promise<void> {
|
|
|
1570
1570
|
]);
|
|
1571
1571
|
|
|
1572
1572
|
if (preserveDb) {
|
|
1573
|
-
console.log(`[
|
|
1573
|
+
console.log(`[runOfflineTests] DB preserved: ${dbName}`);
|
|
1574
1574
|
}
|
|
1575
1575
|
}
|
|
1576
1576
|
|
|
@@ -1599,28 +1599,28 @@ function loadExtensions(): ExtensionConfig[] {
|
|
|
1599
1599
|
parsed = JSON.parse(raw);
|
|
1600
1600
|
} catch (err) {
|
|
1601
1601
|
throw new Error(
|
|
1602
|
-
`[
|
|
1602
|
+
`[runOfflineTests] TEST_OFFLINE_EXTENSIONS_JSON is not valid JSON: ${(err as Error).message}`,
|
|
1603
1603
|
);
|
|
1604
1604
|
}
|
|
1605
1605
|
if (!Array.isArray(parsed)) {
|
|
1606
1606
|
throw new Error(
|
|
1607
|
-
`[
|
|
1607
|
+
`[runOfflineTests] TEST_OFFLINE_EXTENSIONS_JSON must be a JSON array; got ${typeof parsed}`,
|
|
1608
1608
|
);
|
|
1609
1609
|
}
|
|
1610
1610
|
const out: ExtensionConfig[] = [];
|
|
1611
1611
|
for (const entry of parsed) {
|
|
1612
1612
|
if (typeof entry !== 'object' || entry === null) {
|
|
1613
|
-
throw new Error(`[
|
|
1613
|
+
throw new Error(`[runOfflineTests] extension entry must be an object: ${JSON.stringify(entry)}`);
|
|
1614
1614
|
}
|
|
1615
1615
|
const e = entry as { name?: unknown; rootDir?: unknown; enabled?: unknown };
|
|
1616
1616
|
if (typeof e.name !== 'string' || typeof e.rootDir !== 'string') {
|
|
1617
1617
|
throw new Error(
|
|
1618
|
-
`[
|
|
1618
|
+
`[runOfflineTests] each extension needs { name: string, rootDir: string }; got ${JSON.stringify(entry)}`,
|
|
1619
1619
|
);
|
|
1620
1620
|
}
|
|
1621
1621
|
const rootDir = resolve(process.cwd(), e.rootDir);
|
|
1622
1622
|
if (!existsSync(rootDir)) {
|
|
1623
|
-
throw new Error(`[
|
|
1623
|
+
throw new Error(`[runOfflineTests] extension rootDir does not exist: ${rootDir}`);
|
|
1624
1624
|
}
|
|
1625
1625
|
out.push({
|
|
1626
1626
|
name: e.name,
|
|
@@ -1630,7 +1630,7 @@ function loadExtensions(): ExtensionConfig[] {
|
|
|
1630
1630
|
}
|
|
1631
1631
|
if (out.length > 0) {
|
|
1632
1632
|
console.log(
|
|
1633
|
-
`[
|
|
1633
|
+
`[runOfflineTests] loaded ${out.length} extension(s): ${out.map((e) => `${e.name}=${e.rootDir}`).join(', ')}`,
|
|
1634
1634
|
);
|
|
1635
1635
|
}
|
|
1636
1636
|
return out;
|
|
@@ -1754,7 +1754,7 @@ function seedExploreProducts(state: ShopState): void {
|
|
|
1754
1754
|
}
|
|
1755
1755
|
|
|
1756
1756
|
async function runSupervisor(workers: number): Promise<number> {
|
|
1757
|
-
console.log(`[
|
|
1757
|
+
console.log(`[runOfflineTests] supervisor: spawning ${workers} shard(s)…`);
|
|
1758
1758
|
|
|
1759
1759
|
// Pre-build: each child would otherwise duplicate the build (or
|
|
1760
1760
|
// race on the cache). Build here once, then pass SKIP_BUILD=true
|
|
@@ -1768,9 +1768,9 @@ async function runSupervisor(workers: number): Promise<number> {
|
|
|
1768
1768
|
? readFileSync(buildCachePath, 'utf8').trim()
|
|
1769
1769
|
: null;
|
|
1770
1770
|
if (cachedHash === currentBuildHash) {
|
|
1771
|
-
console.log(`[
|
|
1771
|
+
console.log(`[runOfflineTests] supervisor: build cache HIT (${currentBuildHash.slice(0, 12)})`);
|
|
1772
1772
|
} else {
|
|
1773
|
-
console.log(`[
|
|
1773
|
+
console.log(`[runOfflineTests] supervisor: build cache MISS — running npm run build…`);
|
|
1774
1774
|
execSync('npm run build', {
|
|
1775
1775
|
stdio: 'inherit',
|
|
1776
1776
|
// `TEST_OFFLINE=true` switches the consuming app's
|
|
@@ -1806,7 +1806,7 @@ async function runSupervisor(workers: number): Promise<number> {
|
|
|
1806
1806
|
children.push(
|
|
1807
1807
|
new Promise<number>((resolveChild, rejectChild) => {
|
|
1808
1808
|
// Re-exec ourselves through `node --import tsx` so TS still
|
|
1809
|
-
// parses. argv[1] points at the user's `
|
|
1809
|
+
// parses. argv[1] points at the user's `runOfflineTests.ts`
|
|
1810
1810
|
// by the time we're invoked from the consuming app's
|
|
1811
1811
|
// npm script.
|
|
1812
1812
|
const proc = spawn(
|
|
@@ -1822,7 +1822,7 @@ async function runSupervisor(workers: number): Promise<number> {
|
|
|
1822
1822
|
const exitCodes = await Promise.all(children);
|
|
1823
1823
|
const worst = exitCodes.reduce((a, b) => Math.max(a, b), 0);
|
|
1824
1824
|
console.log(
|
|
1825
|
-
`[
|
|
1825
|
+
`[runOfflineTests] supervisor: shard exit codes [${exitCodes.join(', ')}]; overall=${worst}`,
|
|
1826
1826
|
);
|
|
1827
1827
|
return worst;
|
|
1828
1828
|
}
|
package/src/scripts/runTests.ts
CHANGED
|
@@ -164,7 +164,7 @@ async function main(): Promise<void> {
|
|
|
164
164
|
// from .env.test only.
|
|
165
165
|
const backendEnv: NodeJS.ProcessEnv = {
|
|
166
166
|
PATH: process.env['PATH'] ?? '',
|
|
167
|
-
// See
|
|
167
|
+
// See runOfflineTests.ts for the long-form note — empty HOME
|
|
168
168
|
// makes npm write its cache to literal `~/.npm` in cwd.
|
|
169
169
|
HOME: process.env['HOME'] || '/root',
|
|
170
170
|
USER: process.env['USER'] ?? '',
|
package/src/scripts/runVm.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* ───────── ────────────
|
|
11
11
|
* amd64 image (Rosetta) arm64 image (native)
|
|
12
12
|
* ~10 s cold boot ~5 s cold bake / ~1 s warm restore
|
|
13
|
-
* ~30 s/test wall-clock ~3× faster end-to-end on offline
|
|
13
|
+
* ~30 s/test wall-clock ~3× faster end-to-end on offline
|
|
14
14
|
* Google Chrome amd64 in Xvfb Playwright bundled chromium in
|
|
15
15
|
* Xvfb (patchright stealth still works)
|
|
16
16
|
*
|
|
@@ -553,7 +553,7 @@ async function main(): Promise<void> {
|
|
|
553
553
|
});
|
|
554
554
|
|
|
555
555
|
// Stream + collect output. Hard 10-min cap by default, with a
|
|
556
|
-
// 60 s no-output stall guard (mirrors the offline
|
|
556
|
+
// 60 s no-output stall guard (mirrors the offline bench's
|
|
557
557
|
// proven pattern for live processes).
|
|
558
558
|
const maxMs = Number(process.env['TEST_ONLINE_VM_TIMEOUT_MS'] ?? 10 * 60 * 1000);
|
|
559
559
|
// Stall guard: kill the test process if no output for N seconds.
|
package/src/vite/onlineConfig.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { loadConfigFromFile, mergeConfig, type ConfigEnv, type UserConfig } from
|
|
|
5
5
|
* suite — `runTests.ts` boots the dev server with
|
|
6
6
|
* `vite --config <this file>`. It is never referenced by an app's own
|
|
7
7
|
* `vite dev` / `vite build`, so it cannot change any app's production
|
|
8
|
-
* or local-dev behaviour. (Offline
|
|
8
|
+
* or local-dev behaviour. (Offline serves a production build via
|
|
9
9
|
* remix-serve; conformance runs VM probes — neither uses Vite dev, so
|
|
10
10
|
* this is online-only.)
|
|
11
11
|
*
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runOfflineFullTests.d.ts","sourceRoot":"","sources":["../../src/scripts/runOfflineFullTests.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runOfflineFullTests.js","sourceRoot":"","sources":["../../src/scripts/runOfflineFullTests.ts"],"names":[],"mappings":"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"}
|