@essential-apps/shopify-test-runner 1.0.12 → 1.0.13
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/lib/guestVnc.d.ts +31 -0
- package/dist/lib/guestVnc.d.ts.map +1 -0
- package/dist/lib/guestVnc.js +111 -0
- package/dist/lib/guestVnc.js.map +1 -0
- package/dist/probes/runProbe.js +0 -0
- package/dist/scripts/addStore.js +0 -0
- package/dist/scripts/buildImage.d.ts +3 -0
- package/dist/scripts/buildImage.d.ts.map +1 -0
- package/dist/scripts/{buildDockerImage.js → buildImage.js} +12 -10
- package/dist/scripts/buildImage.js.map +1 -0
- package/dist/scripts/captureAuth.js +0 -0
- package/dist/scripts/captureContracts.js +0 -0
- package/dist/scripts/captureRestContracts.js +0 -0
- package/dist/scripts/captureSharedContracts.d.ts +3 -0
- package/dist/scripts/captureSharedContracts.d.ts.map +1 -0
- package/dist/scripts/captureSharedContracts.js +209 -0
- package/dist/scripts/captureSharedContracts.js.map +1 -0
- package/dist/scripts/checkOperationCoverage.js +0 -0
- package/dist/scripts/cleanupStores.js +0 -0
- package/dist/scripts/createStores.js +0 -0
- package/dist/scripts/deployAppVersion.js +0 -0
- package/dist/scripts/devOnlineBackend.js +0 -0
- package/dist/scripts/installApp.js +0 -0
- package/dist/scripts/listStores.js +0 -0
- package/dist/scripts/runOffline.js +78 -1
- package/dist/scripts/runOffline.js.map +1 -1
- package/dist/scripts/runOfflineFullTests.js +49 -21
- package/dist/scripts/runOfflineFullTests.js.map +1 -1
- package/dist/scripts/runTests.js +0 -0
- package/dist/scripts/runVm.js +0 -0
- package/dist/scripts/runVmAuth.js +0 -0
- package/dist/scripts/setupTestDb.js +0 -0
- package/dist/scripts/verifyContracts.js +20 -29
- package/dist/scripts/verifyContracts.js.map +1 -1
- package/dist/scripts/verifyRestContracts.js +17 -30
- package/dist/scripts/verifyRestContracts.js.map +1 -1
- package/package.json +11 -9
- package/src/lib/guestVnc.ts +147 -0
- package/src/scripts/{buildDockerImage.ts → buildImage.ts} +11 -9
- package/src/scripts/captureSharedContracts.ts +228 -0
- package/src/scripts/runOffline.ts +82 -1
- package/src/scripts/runOfflineFullTests.ts +56 -21
- package/src/scripts/verifyContracts.ts +22 -38
- package/src/scripts/verifyRestContracts.ts +23 -42
- package/dist/edge/nodeShim.d.ts +0 -2
- package/dist/edge/nodeShim.d.ts.map +0 -1
- package/dist/edge/nodeShim.js +0 -217
- package/dist/edge/nodeShim.js.map +0 -1
- package/dist/scripts/_probeSourceUrl.d.ts +0 -3
- package/dist/scripts/_probeSourceUrl.d.ts.map +0 -1
- package/dist/scripts/_probeSourceUrl.js +0 -119
- package/dist/scripts/_probeSourceUrl.js.map +0 -1
- package/dist/scripts/buildDockerImage.d.ts +0 -3
- package/dist/scripts/buildDockerImage.d.ts.map +0 -1
- package/dist/scripts/buildDockerImage.js.map +0 -1
- package/dist/scripts/devE2eBackend.d.ts +0 -3
- package/dist/scripts/devE2eBackend.d.ts.map +0 -1
- package/dist/scripts/devE2eBackend.js +0 -117
- package/dist/scripts/devE2eBackend.js.map +0 -1
- package/dist/scripts/runDocker.d.ts +0 -3
- package/dist/scripts/runDocker.d.ts.map +0 -1
- package/dist/scripts/runDocker.js +0 -88
- package/dist/scripts/runDocker.js.map +0 -1
- package/dist/scripts/runDockerAuth.d.ts +0 -3
- package/dist/scripts/runDockerAuth.d.ts.map +0 -1
- package/dist/scripts/runDockerAuth.js +0 -108
- package/dist/scripts/runDockerAuth.js.map +0 -1
- package/dist/scripts/runDockerOffline.d.ts +0 -3
- package/dist/scripts/runDockerOffline.d.ts.map +0 -1
- package/dist/scripts/runDockerOffline.js +0 -129
- package/dist/scripts/runDockerOffline.js.map +0 -1
- package/dist/scripts/runDockerOfflineExplore.d.ts +0 -3
- package/dist/scripts/runDockerOfflineExplore.d.ts.map +0 -1
- package/dist/scripts/runDockerOfflineExplore.js +0 -116
- package/dist/scripts/runDockerOfflineExplore.js.map +0 -1
- package/dist/scripts/runIsolatedDockerOffline.d.ts +0 -3
- package/dist/scripts/runIsolatedDockerOffline.d.ts.map +0 -1
- package/dist/scripts/runIsolatedDockerOffline.js +0 -351
- package/dist/scripts/runIsolatedDockerOffline.js.map +0 -1
- package/dist/scripts/runOfflineE2e.d.ts +0 -3
- package/dist/scripts/runOfflineE2e.d.ts.map +0 -1
- package/dist/scripts/runOfflineE2e.js +0 -408
- package/dist/scripts/runOfflineE2e.js.map +0 -1
- package/dist/scripts/runSupermachine.d.ts +0 -3
- package/dist/scripts/runSupermachine.d.ts.map +0 -1
- package/dist/scripts/runSupermachine.js +0 -474
- package/dist/scripts/runSupermachine.js.map +0 -1
- package/dist/scripts/runSupermachineAuth.d.ts +0 -3
- package/dist/scripts/runSupermachineAuth.d.ts.map +0 -1
- package/dist/scripts/runSupermachineAuth.js +0 -454
- package/dist/scripts/runSupermachineAuth.js.map +0 -1
- package/dist/vite/offlineConfig.d.ts +0 -34
- package/dist/vite/offlineConfig.d.ts.map +0 -1
- package/dist/vite/offlineConfig.js +0 -61
- package/dist/vite/offlineConfig.js.map +0 -1
- package/src/scripts/runDockerAuth.ts +0 -120
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* One-time interactive Shopify auth capture inside the test container.
|
|
4
|
-
*
|
|
5
|
-
* Why a separate script: tests run with the chromium browser invisible
|
|
6
|
-
* inside Xvfb, which means there's no way to interactively log in.
|
|
7
|
-
* This script starts the same container, exposes the Xvfb display via
|
|
8
|
-
* x11vnc on host port 5900, and opens macOS's built-in Screen Sharing
|
|
9
|
-
* (`vnc://localhost:5900`) so a developer can log in once. The
|
|
10
|
-
* resulting tests/test-online/.auth/storageState.json is bind-mounted into
|
|
11
|
-
* the project, so subsequent test runs use the captured cookies —
|
|
12
|
-
* bound to the container's Linux Chrome fingerprint, which is what
|
|
13
|
-
* Cloudflare expects to see during automated runs.
|
|
14
|
-
*
|
|
15
|
-
* Usage (one-time per developer machine, or whenever cookies expire):
|
|
16
|
-
* npm run test:online:capture-auth
|
|
17
|
-
*
|
|
18
|
-
* macOS Screen Sharing.app opens automatically; just log in to
|
|
19
|
-
* Shopify, wait until you see the Partner Dashboard, then hit Enter
|
|
20
|
-
* back in the terminal where this script is running.
|
|
21
|
-
*/
|
|
22
|
-
import { spawn } from 'node:child_process';
|
|
23
|
-
import { existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
24
|
-
import { homedir, platform } from 'node:os';
|
|
25
|
-
import { resolve } from 'node:path';
|
|
26
|
-
import { setTimeout as sleep } from 'node:timers/promises';
|
|
27
|
-
import { envFileArgs } from '@essential-apps/shopify-test-core';
|
|
28
|
-
const repoRoot = process.cwd();
|
|
29
|
-
const VNC_PORT = 5900;
|
|
30
|
-
function readAppName() {
|
|
31
|
-
const pkgPath = resolve(repoRoot, 'package.json');
|
|
32
|
-
if (!existsSync(pkgPath)) {
|
|
33
|
-
throw new Error(`No package.json at ${pkgPath}. Run this from the consuming app's repo root.`);
|
|
34
|
-
}
|
|
35
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
36
|
-
if (!pkg.name)
|
|
37
|
-
throw new Error(`package.json at ${pkgPath} has no \`name\` field.`);
|
|
38
|
-
return pkg.name.replace(/^@[^/]+\//, '');
|
|
39
|
-
}
|
|
40
|
-
async function main() {
|
|
41
|
-
const appName = readAppName();
|
|
42
|
-
const image = process.env['TEST_IMAGE'] ?? `${appName}-test:latest`;
|
|
43
|
-
const linuxModules = process.env['TEST_LINUX_NODE_MODULES'] ??
|
|
44
|
-
resolve(homedir(), `.cache/${appName}-test/node_modules`);
|
|
45
|
-
const vncPassword = process.env['TEST_ONLINE_VNC_PASSWORD'] ?? 'test';
|
|
46
|
-
mkdirSync(linuxModules, { recursive: true });
|
|
47
|
-
const args = [
|
|
48
|
-
'run',
|
|
49
|
-
'--rm',
|
|
50
|
-
'--arch',
|
|
51
|
-
'amd64',
|
|
52
|
-
'--memory',
|
|
53
|
-
'4096M',
|
|
54
|
-
'--cpus',
|
|
55
|
-
'2',
|
|
56
|
-
'--publish',
|
|
57
|
-
`127.0.0.1:${VNC_PORT}:${VNC_PORT}`,
|
|
58
|
-
'--env',
|
|
59
|
-
'TEST_ONLINE_VNC=1',
|
|
60
|
-
'--env',
|
|
61
|
-
`TEST_ONLINE_VNC_PASSWORD=${vncPassword}`,
|
|
62
|
-
'--mount',
|
|
63
|
-
`type=bind,source=${repoRoot},target=/workspace`,
|
|
64
|
-
'--mount',
|
|
65
|
-
`type=bind,source=${linuxModules},target=/workspace/node_modules`,
|
|
66
|
-
'-w',
|
|
67
|
-
'/workspace',
|
|
68
|
-
image,
|
|
69
|
-
'bash',
|
|
70
|
-
'-c',
|
|
71
|
-
[
|
|
72
|
-
'sleep 1',
|
|
73
|
-
`echo "[runDockerAuth] Container ready. VNC server should be on 127.0.0.1:${VNC_PORT}."`,
|
|
74
|
-
'echo ""',
|
|
75
|
-
// captureAuth is now in @essential-apps/shopify-test-runner.
|
|
76
|
-
`node ${envFileArgs(repoRoot)} node_modules/@essential-apps/shopify-test-runner/dist/scripts/captureAuth.js`,
|
|
77
|
-
].join(' && '),
|
|
78
|
-
];
|
|
79
|
-
console.log(`[runDockerAuth] Starting container with VNC on 127.0.0.1:${VNC_PORT}…`);
|
|
80
|
-
console.log(`[runDockerAuth] VNC password (paste into Screen Sharing): ${vncPassword}`);
|
|
81
|
-
console.log('');
|
|
82
|
-
const p = spawn('container', args, { stdio: 'inherit' });
|
|
83
|
-
if (platform() === 'darwin') {
|
|
84
|
-
void (async () => {
|
|
85
|
-
await sleep(4_000);
|
|
86
|
-
// Embed the password in the URL (vnc://:<pw>@host) so Screen Sharing
|
|
87
|
-
// connects WITHOUT prompting — prefilled, not typed.
|
|
88
|
-
const vncUrl = `vnc://:${encodeURIComponent(vncPassword)}@localhost:${VNC_PORT}`;
|
|
89
|
-
console.log(`[runDockerAuth] Opening macOS Screen Sharing → vnc://localhost:${VNC_PORT} (password prefilled)`);
|
|
90
|
-
console.log(`[runDockerAuth] (If nothing opens, run manually: open '${vncUrl}')`);
|
|
91
|
-
spawn('open', [vncUrl], {
|
|
92
|
-
stdio: 'ignore',
|
|
93
|
-
detached: true,
|
|
94
|
-
}).unref();
|
|
95
|
-
})();
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
console.log(`[runDockerAuth] Connect any VNC viewer to localhost:${VNC_PORT}.`);
|
|
99
|
-
}
|
|
100
|
-
p.on('exit', (code) => process.exit(code ?? 0));
|
|
101
|
-
process.on('SIGINT', () => p.kill('SIGINT'));
|
|
102
|
-
process.on('SIGTERM', () => p.kill('SIGTERM'));
|
|
103
|
-
}
|
|
104
|
-
main().catch((err) => {
|
|
105
|
-
console.error(err);
|
|
106
|
-
process.exit(1);
|
|
107
|
-
});
|
|
108
|
-
//# sourceMappingURL=runDockerAuth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runDockerAuth.js","sourceRoot":"","sources":["../../src/scripts/runDockerAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runDockerOffline.d.ts","sourceRoot":"","sources":["../../src/scripts/runDockerOffline.ts"],"names":[],"mappings":""}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Run the OFFLINE-FULL test suite inside Apple's `container`
|
|
4
|
-
* (libkrun-based microVM) — same image as `runDocker.ts`, different
|
|
5
|
-
* entrypoint.
|
|
6
|
-
*
|
|
7
|
-
* Why a separate script vs. `runDocker`:
|
|
8
|
-
* - runDocker invokes `runTests.js` (live tests against real cloud Shopify)
|
|
9
|
-
* - runDockerOffline invokes `runOfflineFullTests.js` (mock stack, no internet)
|
|
10
|
-
*
|
|
11
|
-
* Why offline tests in a container at all (vs. running host-native,
|
|
12
|
-
* which also works):
|
|
13
|
-
* - /etc/hosts + system CA trust eliminate three layers of bypass
|
|
14
|
-
* we'd otherwise need on host: --host-resolver-rules,
|
|
15
|
-
* --ignore-certificate-errors, and the Node socket shim.
|
|
16
|
-
* - Production-shape DNS + TLS: real getaddrinfo, real cert trust
|
|
17
|
-
* chain, real port 443 binding. Closer to "1-to-1 production
|
|
18
|
-
* recreation" than the host-native approach.
|
|
19
|
-
* - Architectural consistency: live tests already run in this
|
|
20
|
-
* container, offline tests should too.
|
|
21
|
-
*
|
|
22
|
-
* Architecture mirrors runDocker.ts: bind-mount the app repo and a
|
|
23
|
-
* cached Linux node_modules, plus the shopify-test repo if it lives
|
|
24
|
-
* outside the app (for `file:`-symlink stability).
|
|
25
|
-
*/
|
|
26
|
-
import { spawn } from 'node:child_process';
|
|
27
|
-
import { existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
28
|
-
import { homedir } from 'node:os';
|
|
29
|
-
import { resolve } from 'node:path';
|
|
30
|
-
const repoRoot = process.cwd();
|
|
31
|
-
function readAppName() {
|
|
32
|
-
const pkgPath = resolve(repoRoot, 'package.json');
|
|
33
|
-
if (!existsSync(pkgPath)) {
|
|
34
|
-
throw new Error(`No package.json at ${pkgPath}. Run this from the consuming app's repo root.`);
|
|
35
|
-
}
|
|
36
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
37
|
-
if (!pkg.name) {
|
|
38
|
-
throw new Error(`package.json at ${pkgPath} has no \`name\` field.`);
|
|
39
|
-
}
|
|
40
|
-
return pkg.name.replace(/^@[^/]+\//, '');
|
|
41
|
-
}
|
|
42
|
-
async function main() {
|
|
43
|
-
const appName = readAppName();
|
|
44
|
-
const image = process.env['E2E_IMAGE'] ?? `${appName}-e2e:latest`;
|
|
45
|
-
const linuxModules = process.env['E2E_LINUX_NODE_MODULES'] ??
|
|
46
|
-
resolve(homedir(), `.cache/${appName}-e2e/node_modules`);
|
|
47
|
-
mkdirSync(linuxModules, { recursive: true });
|
|
48
|
-
// Forward any extra args (e.g. `--grep "..."`) to the offline
|
|
49
|
-
// runner. The container's bash -c sees a single string; we
|
|
50
|
-
// JSON-escape each forwarded arg.
|
|
51
|
-
const forwarded = process.argv
|
|
52
|
-
.slice(2)
|
|
53
|
-
.map((a) => JSON.stringify(a))
|
|
54
|
-
.join(' ');
|
|
55
|
-
// Most envs flow through process.env naturally because of how
|
|
56
|
-
// `container run` inherits env. Two we explicitly set:
|
|
57
|
-
// - E2E_OFFLINE_EXTENSIONS_JSON: extensions to mount in storefront
|
|
58
|
-
// - E2E_OFFLINE_POST_PURCHASE_EXT: post-purchase extension JS path
|
|
59
|
-
// The consuming app provides these in its `npm run e2e:offline-full`
|
|
60
|
-
// script; we forward them so the equivalent docker run picks them up.
|
|
61
|
-
const passthroughEnv = [
|
|
62
|
-
'E2E_OFFLINE_EXTENSIONS_JSON',
|
|
63
|
-
'E2E_OFFLINE_POST_PURCHASE_EXT',
|
|
64
|
-
'E2E_OFFLINE_WORKERS',
|
|
65
|
-
'E2E_OFFLINE_FIXTURE_DEBUG',
|
|
66
|
-
'E2E_OFFLINE_EDGE_DEBUG',
|
|
67
|
-
'E2E_OFFLINE_SHIM_DEBUG',
|
|
68
|
-
'E2E_OFFLINE_SKIP_LEAK_CHECK',
|
|
69
|
-
'E2E_OFFLINE_STRICT_GRAPHQL',
|
|
70
|
-
// Contract-conformance toggles (see docs/CONTRACTS.md). The
|
|
71
|
-
// capture mode for Liquid contracts is driven by an env var
|
|
72
|
-
// because Playwright specs don't otherwise take CLI flags;
|
|
73
|
-
// `LIQUID_CONTRACTS_CAPTURE=true npm run e2e:offline-full`
|
|
74
|
-
// does a one-time bootstrap write.
|
|
75
|
-
'LIQUID_CONTRACTS_CAPTURE',
|
|
76
|
-
'CONTRACTS_LIVE_ENDPOINT',
|
|
77
|
-
'CONTRACTS_LIVE_ACCESS_TOKEN',
|
|
78
|
-
'CONTRACTS_LIVE_SHOP',
|
|
79
|
-
]
|
|
80
|
-
.flatMap((k) => process.env[k] !== undefined ? ['--env', `${k}=${process.env[k]}`] : []);
|
|
81
|
-
const args = [
|
|
82
|
-
'run',
|
|
83
|
-
'--rm',
|
|
84
|
-
'--arch',
|
|
85
|
-
'amd64',
|
|
86
|
-
'--memory',
|
|
87
|
-
'8192M',
|
|
88
|
-
'--cpus',
|
|
89
|
-
'4',
|
|
90
|
-
...passthroughEnv,
|
|
91
|
-
'--mount',
|
|
92
|
-
`type=bind,source=${repoRoot},target=/workspace`,
|
|
93
|
-
'--mount',
|
|
94
|
-
`type=bind,source=${linuxModules},target=/workspace/node_modules`,
|
|
95
|
-
'-w',
|
|
96
|
-
'/workspace',
|
|
97
|
-
image,
|
|
98
|
-
'bash',
|
|
99
|
-
'-c',
|
|
100
|
-
[
|
|
101
|
-
// Run `npm install` if node_modules looks empty OR partial.
|
|
102
|
-
// A previous failed install can leave package dirs without
|
|
103
|
-
// their package.json — ESM resolution then crashes on import.
|
|
104
|
-
// Use `node_modules/.package-lock.json` as the "install
|
|
105
|
-
// completed cleanly" signal (npm writes this after success),
|
|
106
|
-
// and hono's package.json as a sentinel for transitively-
|
|
107
|
-
// required deps.
|
|
108
|
-
'if [ ! -f node_modules/.package-lock.json ] || [ ! -f node_modules/hono/package.json ]; then ' +
|
|
109
|
-
'echo "[runDockerOffline] node_modules empty/partial — running fresh npm install…"; ' +
|
|
110
|
-
'rm -rf node_modules; ' +
|
|
111
|
-
'npm install --legacy-peer-deps --engine-strict=false; ' +
|
|
112
|
-
'fi',
|
|
113
|
-
// The offline runner uses TSX-compiled source for stack-trace
|
|
114
|
-
// fidelity. Inside the container we have the same node_modules
|
|
115
|
-
// layout as the host, so the same `--import tsx` works.
|
|
116
|
-
`node --env-file=.env.test --import tsx node_modules/@essential-apps/shopify-test-runner/src/scripts/runOfflineFullTests.ts ${forwarded}`,
|
|
117
|
-
].join(' && '),
|
|
118
|
-
];
|
|
119
|
-
console.log('[runDockerOffline] container run', args.slice(0, 14).join(' '), '…');
|
|
120
|
-
const p = spawn('container', args, { stdio: 'inherit' });
|
|
121
|
-
p.on('exit', (code) => process.exit(code ?? 0));
|
|
122
|
-
process.on('SIGINT', () => p.kill('SIGINT'));
|
|
123
|
-
process.on('SIGTERM', () => p.kill('SIGTERM'));
|
|
124
|
-
}
|
|
125
|
-
main().catch((err) => {
|
|
126
|
-
console.error(err);
|
|
127
|
-
process.exit(1);
|
|
128
|
-
});
|
|
129
|
-
//# sourceMappingURL=runDockerOffline.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runDockerOffline.js","sourceRoot":"","sources":["../../src/scripts/runDockerOffline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runDockerOfflineExplore.d.ts","sourceRoot":"","sources":["../../src/scripts/runDockerOfflineExplore.ts"],"names":[],"mappings":""}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Spawn the offline e2e container in EXPLORE mode — interactive
|
|
4
|
-
* "click around the offline Shopify dev store" workflow.
|
|
5
|
-
*
|
|
6
|
-
* What this gets you:
|
|
7
|
-
* - The full offline stack (Postgres + Remix backend + mocks +
|
|
8
|
-
* edge proxy) running inside the container, same as the test
|
|
9
|
-
* runner.
|
|
10
|
-
* - A non-headless Chrome instance inside the container, pointed
|
|
11
|
-
* at the admin app's URL.
|
|
12
|
-
* - The container's Xvfb display exposed via VNC on
|
|
13
|
-
* 127.0.0.1:5900 (password: `e2e`).
|
|
14
|
-
*
|
|
15
|
-
* Connect: `open vnc://localhost:5900` on macOS, or any VNC client
|
|
16
|
-
* elsewhere. You'll see a desktop with Chrome open at the admin
|
|
17
|
-
* URL — click anywhere, mutate state via the app, navigate to
|
|
18
|
-
* https://test-shop.myshopify.com/ to see the storefront, etc.
|
|
19
|
-
*
|
|
20
|
-
* Stop: Ctrl-C in the terminal where this script runs (or close
|
|
21
|
-
* Chrome).
|
|
22
|
-
*
|
|
23
|
-
* Mirrors `runDockerOffline.ts` (the test runner inside the
|
|
24
|
-
* container) but with three differences:
|
|
25
|
-
* 1. `E2E_VNC=1` to make the entrypoint start x11vnc
|
|
26
|
-
* 2. `--publish 127.0.0.1:5900:5900` to expose VNC to the host
|
|
27
|
-
* 3. `E2E_OFFLINE_EXPLORE=true` to make the orchestrator skip
|
|
28
|
-
* Playwright and launch Chrome instead
|
|
29
|
-
*/
|
|
30
|
-
import { spawn } from 'node:child_process';
|
|
31
|
-
import { existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
32
|
-
import { homedir } from 'node:os';
|
|
33
|
-
import { resolve } from 'node:path';
|
|
34
|
-
const repoRoot = process.cwd();
|
|
35
|
-
function readAppName() {
|
|
36
|
-
const pkgPath = resolve(repoRoot, 'package.json');
|
|
37
|
-
if (!existsSync(pkgPath)) {
|
|
38
|
-
throw new Error(`No package.json at ${pkgPath}. Run this from the consuming app's repo root.`);
|
|
39
|
-
}
|
|
40
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
41
|
-
if (!pkg.name) {
|
|
42
|
-
throw new Error(`package.json at ${pkgPath} has no \`name\` field.`);
|
|
43
|
-
}
|
|
44
|
-
return pkg.name.replace(/^@[^/]+\//, '');
|
|
45
|
-
}
|
|
46
|
-
async function main() {
|
|
47
|
-
const appName = readAppName();
|
|
48
|
-
const image = process.env['E2E_IMAGE'] ?? `${appName}-e2e:latest`;
|
|
49
|
-
const linuxModules = process.env['E2E_LINUX_NODE_MODULES'] ??
|
|
50
|
-
resolve(homedir(), `.cache/${appName}-e2e/node_modules`);
|
|
51
|
-
mkdirSync(linuxModules, { recursive: true });
|
|
52
|
-
const passthroughEnv = [
|
|
53
|
-
'E2E_OFFLINE_EXTENSIONS_JSON',
|
|
54
|
-
'E2E_OFFLINE_POST_PURCHASE_EXT',
|
|
55
|
-
'E2E_OFFLINE_FIXTURE_DEBUG',
|
|
56
|
-
'E2E_OFFLINE_EDGE_DEBUG',
|
|
57
|
-
'E2E_OFFLINE_EXPLORE_URL',
|
|
58
|
-
].flatMap((k) => process.env[k] !== undefined ? ['--env', `${k}=${process.env[k]}`] : []);
|
|
59
|
-
const args = [
|
|
60
|
-
'run',
|
|
61
|
-
'--rm',
|
|
62
|
-
'--arch',
|
|
63
|
-
'amd64',
|
|
64
|
-
'--memory',
|
|
65
|
-
'8192M',
|
|
66
|
-
'--cpus',
|
|
67
|
-
'4',
|
|
68
|
-
// Expose Xvfb display via VNC to the host. The entrypoint starts
|
|
69
|
-
// x11vnc when E2E_VNC=1 is set (see tests/e2e/docker/entrypoint.sh).
|
|
70
|
-
'--publish',
|
|
71
|
-
'127.0.0.1:5900:5900',
|
|
72
|
-
'--env',
|
|
73
|
-
'E2E_VNC=1',
|
|
74
|
-
'--env',
|
|
75
|
-
'E2E_OFFLINE_EXPLORE=true',
|
|
76
|
-
...passthroughEnv,
|
|
77
|
-
'--mount',
|
|
78
|
-
`type=bind,source=${repoRoot},target=/workspace`,
|
|
79
|
-
'--mount',
|
|
80
|
-
`type=bind,source=${linuxModules},target=/workspace/node_modules`,
|
|
81
|
-
'-w',
|
|
82
|
-
'/workspace',
|
|
83
|
-
image,
|
|
84
|
-
'bash',
|
|
85
|
-
'-c',
|
|
86
|
-
[
|
|
87
|
-
// Run `npm install` if node_modules looks empty OR partial.
|
|
88
|
-
// A previous failed install can leave package dirs without
|
|
89
|
-
// their package.json — ESM resolution then crashes on import.
|
|
90
|
-
// Use `node_modules/.package-lock.json` as the "install
|
|
91
|
-
// completed cleanly" signal (npm writes this after success).
|
|
92
|
-
'if [ ! -f node_modules/.package-lock.json ] || [ ! -f node_modules/hono/package.json ]; then ' +
|
|
93
|
-
'echo "[explore] node_modules empty/partial — running fresh npm install…"; ' +
|
|
94
|
-
'rm -rf node_modules; ' +
|
|
95
|
-
'npm install --legacy-peer-deps --engine-strict=false; ' +
|
|
96
|
-
'fi',
|
|
97
|
-
// Boot the orchestrator. The E2E_OFFLINE_EXPLORE=true env we
|
|
98
|
-
// set above makes it launch Chrome instead of Playwright.
|
|
99
|
-
'node --env-file=.env.test --import tsx node_modules/@essential-apps/shopify-test-runner/src/scripts/runOfflineFullTests.ts',
|
|
100
|
-
].join(' && '),
|
|
101
|
-
];
|
|
102
|
-
console.log('[runDockerOfflineExplore] starting interactive offline e2e container…');
|
|
103
|
-
console.log('[runDockerOfflineExplore] once you see "explore mode — launching Chrome",');
|
|
104
|
-
console.log('[runDockerOfflineExplore] connect with: open vnc://localhost:5900');
|
|
105
|
-
console.log('[runDockerOfflineExplore] password: e2e');
|
|
106
|
-
console.log('');
|
|
107
|
-
const p = spawn('container', args, { stdio: 'inherit' });
|
|
108
|
-
p.on('exit', (code) => process.exit(code ?? 0));
|
|
109
|
-
process.on('SIGINT', () => p.kill('SIGINT'));
|
|
110
|
-
process.on('SIGTERM', () => p.kill('SIGTERM'));
|
|
111
|
-
}
|
|
112
|
-
main().catch((err) => {
|
|
113
|
-
console.error(err);
|
|
114
|
-
process.exit(1);
|
|
115
|
-
});
|
|
116
|
-
//# sourceMappingURL=runDockerOfflineExplore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runDockerOfflineExplore.js","sourceRoot":"","sources":["../../src/scripts/runDockerOfflineExplore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runIsolatedDockerOffline.d.ts","sourceRoot":"","sources":["../../src/scripts/runIsolatedDockerOffline.ts"],"names":[],"mappings":""}
|