@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 +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;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;AAoKD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CA2I5E"}
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;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;AAoKD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAkJ5E"}
@@ -221,18 +221,24 @@ export async function startEdgeProxy(opts) {
221
221
  // Shopify sets these on cdn.shopify.com responses too. Allow
222
222
  // everything because this is a test-only proxy bound to
223
223
  // 127.0.0.1 — no real traffic ever reaches it.
224
- if (!outHeaders['Access-Control-Allow-Origin']) {
225
- outHeaders['Access-Control-Allow-Origin'] = '*';
226
- }
227
- if (!outHeaders['Access-Control-Allow-Methods']) {
228
- outHeaders['Access-Control-Allow-Methods'] =
229
- 'GET, POST, PUT, PATCH, DELETE, OPTIONS';
230
- }
231
- if (!outHeaders['Access-Control-Allow-Headers']) {
232
- outHeaders['Access-Control-Allow-Headers'] = '*';
233
- }
234
- if (!outHeaders['Access-Control-Expose-Headers']) {
235
- outHeaders['Access-Control-Expose-Headers'] = '*';
224
+ // Set each CORS header only if the upstream didn't already — and
225
+ // check CASE-INSENSITIVELY. The upstream mocks set them lowercased
226
+ // (`access-control-allow-origin`); a PascalCase existence check
227
+ // misses that, so we'd add a SECOND header and emit the illegal
228
+ // multi-value `Access-Control-Allow-Origin: *, *`, which Chrome
229
+ // rejects blocking every mirrored font (cdn.shopify.com Inter,
230
+ // fonts.shopifycdn.com Assistant). Reuse the upstream's own key
231
+ // casing when present so we never duplicate.
232
+ const corsDefaults = {
233
+ 'access-control-allow-origin': '*',
234
+ 'access-control-allow-methods': 'GET, POST, PUT, PATCH, DELETE, OPTIONS',
235
+ 'access-control-allow-headers': '*',
236
+ 'access-control-expose-headers': '*',
237
+ };
238
+ const existingLowerKeys = new Set(Object.keys(outHeaders).map((k) => k.toLowerCase()));
239
+ for (const [name, value] of Object.entries(corsDefaults)) {
240
+ if (!existingLowerKeys.has(name))
241
+ outHeaders[name] = value;
236
242
  }
237
243
  // Short-circuit CORS preflights (the upstream mock might not
238
244
  // implement OPTIONS at all; serving them here is cheaper anyway).
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAA4B,MAAM,WAAW,CAAC;AAE7E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AA0CnB;;;;;GAKG;AACH,SAAS,QAAQ,CACf,UAAkB,EAClB,aAAqB,EACrB,UAAkB,EAClB,QAAsB;IAEtB,oEAAoE;IACpE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,aAAa,CAAC;IAE3B,2DAA2D;IAC3D,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACjC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACnE,CAAC;IAED,wEAAwE;IACxE,+DAA+D;IAC/D,gEAAgE;IAChE,gEAAgE;IAChE,mDAAmD;IACnD,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;QACpC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,mBAAmB,IAAI,EAAE,EAAE,CAAC;IACxF,CAAC;IAED,+DAA+D;IAC/D,kEAAkE;IAClE,mEAAmE;IACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,UAAU;YACjC,YAAY,EAAE,qBAAqB,IAAI,GAAG,IAAI,EAAE;SACjD,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/B,yDAAyD;QACzD,0DAA0D;QAC1D,yDAAyD;QACzD,eAAe;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACnE,CAAC;QACD,2DAA2D;QAC3D,+DAA+D;QAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACnE,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO;gBACL,YAAY,EAAE,QAAQ,CAAC,UAAU;gBACjC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aACnC,CAAC;QACJ,CAAC;QACD,+DAA+D;QAC/D,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACnE,CAAC;IAED,4DAA4D;IAC5D,IAAI,IAAI,KAAK,UAAU,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACjE,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;QACD,0DAA0D;QAC1D,2DAA2D;QAC3D,2DAA2D;QAC3D,2DAA2D;QAC3D,4CAA4C;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,YAAY,EAAE,QAAQ,CAAC,UAAU;gBACjC,YAAY,EAAE,qBAAqB,IAAI,GAAG,IAAI,EAAE;aACjD,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACnE,CAAC;IAED,0DAA0D;IAC1D,wDAAwD;IACxD,2DAA2D;IAC3D,2DAA2D;IAC3D,6DAA6D;IAC7D,2BAA2B;IAC3B,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,GAA0B;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,UAAU,CACvB,YAAoB,EACpB,YAAoB,EACpB,MAAc,EACd,OAA4B,EAC5B,IAAY;IAEZ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,8DAA8D;IAC9D,wDAAwD;IACxD,cAAc;IACd,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,mBAAmB;YAAE,SAAS;QACpH,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACxC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,WAAW,CACnB;YACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YACzB,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,OAAO,EAAE,UAAU;SACpB,EACD,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CACjB,UAAU,CAAC;gBACT,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG;gBAC7B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;aAC5B,CAAC,CACH,CAAC;YACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAiB;IACpD,MAAM,MAAM,GAAG,iBAAiB,CAC9B;QACE,2DAA2D;QAC3D,0DAA0D;QAC1D,gDAAgD;QAChD,4DAA4D;QAC5D,IAAI,EAAE,GAAG,oBAAoB,KAAK,gBAAgB,EAAE;QACpD,GAAG,EAAE,mBAAmB;KACzB,EACD,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;YACrC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,QAAQ,CAC7C,UAAU,EACV,aAAa,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,CACd,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,YAAY,EACZ,YAAY,EACZ,GAAG,CAAC,MAAM,IAAI,KAAK,EACnB,GAAG,CAAC,OAAO,EACX,IAAI,CACL,CAAC;YAEF,0DAA0D;YAC1D,0DAA0D;YAC1D,wDAAwD;YACxD,MAAM,UAAU,GAAsC,EAAE,CAAC;YACzD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,CAAC;oBAAE,SAAS;gBACjB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9B,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,gBAAgB,IAAI,KAAK,KAAK,mBAAmB;oBAAE,SAAS;gBAC1G,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBACxC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC;YAED,+DAA+D;YAC/D,gEAAgE;YAChE,6DAA6D;YAC7D,8DAA8D;YAC9D,8DAA8D;YAC9D,4DAA4D;YAC5D,2DAA2D;YAC3D,6DAA6D;YAC7D,wDAAwD;YACxD,+CAA+C;YAC/C,iEAAiE;YACjE,mEAAmE;YACnE,gEAAgE;YAChE,gEAAgE;YAChE,gEAAgE;YAChE,iEAAiE;YACjE,gEAAgE;YAChE,6CAA6C;YAC7C,MAAM,YAAY,GAA2B;gBAC3C,6BAA6B,EAAE,GAAG;gBAClC,8BAA8B,EAAE,wCAAwC;gBACxE,8BAA8B,EAAE,GAAG;gBACnC,+BAA+B,EAAE,GAAG;aACrC,CAAC;YACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACpD,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC7D,CAAC;YAED,6DAA6D;YAC7D,kEAAkE;YAClE,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAC/B,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtB,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,MAAM,EAAE,CAAC;gBACtD,OAAO,CAAC,GAAG,CACT,UAAU,GAAG,CAAC,MAAM,YAAY,UAAU,GAAG,aAAa,MAAM,YAAY,GAAG,YAAY,MAAM,OAAO,CAAC,MAAM,EAAE,CAClH,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAe,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACvD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,8DAA8D;IAC9D,iEAAiE;IACjE,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,gEAAgE;IAChE,+DAA+D;IAC/D,8DAA8D;IAC9D,2DAA2D;IAC3D,gEAAgE;IAChE,gEAAgE;IAChE,sCAAsC;IACtC,MAAM,IAAI,OAAO,CAAO,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,YAAY,CACV,IAAI,KAAK,CACP,wDAAwD,UAAU,IAAI,UAAU,GAAG;gBACjF,6DAA6D;gBAC7D,gCAAgC,CACnC,CACF,CAAC;QACJ,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,GAA0B,EAAQ,EAAE;YACnD,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,YAAY,CACV,IAAI,KAAK,CACP,6BAA6B,UAAU,IAAI,UAAU,IAAI;gBACvD,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CACtC,CACF,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE;YACzC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,aAAa,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,WAAW,IAAI,CAAC,QAAQ,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;QAC/D,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,OAAO,CAAO,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;YAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC;KACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ /** Minimal structural view of the VM handle this helper needs. */
2
+ export interface VncCapableVm {
3
+ exec(opts: {
4
+ argv: string[];
5
+ timeoutMs?: number;
6
+ }): Promise<{
7
+ exitCode: number;
8
+ stdout: Buffer;
9
+ stderr: Buffer;
10
+ }>;
11
+ exposeTcp(hostPort: number, guestPort: number): Promise<unknown>;
12
+ }
13
+ export declare const DEFAULT_VNC_PORT = 5900;
14
+ export interface ExposeGuestVncOptions {
15
+ /** VNC auth password. Default: TEST_ONLINE_VNC_PASSWORD ?? 'test'. */
16
+ vncPassword?: string;
17
+ /** Host+guest VNC port. Default: 5900. */
18
+ port?: number;
19
+ /** Xvfb virtual screen geometry. Default: '1600x1000x24'. */
20
+ screen?: string;
21
+ /** Log prefix, e.g. '[runOffline]'. Default: '[guestVnc]'. */
22
+ logPrefix?: string;
23
+ }
24
+ /**
25
+ * Start x11vnc in the guest, bridge it to the host, and (on macOS)
26
+ * open Screen Sharing. Throws if Xvfb or x11vnc fail to come up.
27
+ *
28
+ * @returns the forwarder handle (keep it referenced; close on exit).
29
+ */
30
+ export declare function exposeGuestVnc(vm: VncCapableVm, opts?: ExposeGuestVncOptions): Promise<unknown>;
31
+ //# sourceMappingURL=guestVnc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guestVnc.d.ts","sourceRoot":"","sources":["../../src/lib/guestVnc.ts"],"names":[],"mappings":"AAuBA,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,YAAY,EAChB,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,OAAO,CAAC,CA4FlB"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Expose a guest VM's Xvfb display over VNC to the host.
3
+ *
4
+ * Shared by the interactive VM flows that need a developer to *see*
5
+ * what a headed Chromium is doing inside the microVM:
6
+ * - `runVmAuth.ts` — one-time Shopify login capture.
7
+ * - `runOffline.ts` (explore mode) — click through the offline mock
8
+ * stack (admin app + storefront) by hand.
9
+ *
10
+ * The sequence (extracted so both flows share one implementation):
11
+ * 1. (Re)start Xvfb :99 with access control off, then x11vnc bound
12
+ * to 0.0.0.0:5900 inside the guest.
13
+ * 2. Forward host 127.0.0.1:5900 → guest :5900 via `vm.exposeTcp`.
14
+ * 3. On macOS, open Screen Sharing at vnc://localhost:5900 with the
15
+ * password prefilled. Elsewhere, print connect instructions.
16
+ *
17
+ * Returns the TCP forwarder handle so the caller can keep it alive
18
+ * for the session and close it on teardown.
19
+ */
20
+ import { spawn as nodeSpawn } from 'node:child_process';
21
+ import { platform as osPlatform } from 'node:os';
22
+ import { setTimeout as sleep } from 'node:timers/promises';
23
+ export const DEFAULT_VNC_PORT = 5900;
24
+ /**
25
+ * Start x11vnc in the guest, bridge it to the host, and (on macOS)
26
+ * open Screen Sharing. Throws if Xvfb or x11vnc fail to come up.
27
+ *
28
+ * @returns the forwarder handle (keep it referenced; close on exit).
29
+ */
30
+ export async function exposeGuestVnc(vm, opts = {}) {
31
+ const vncPassword = opts.vncPassword ?? process.env['TEST_ONLINE_VNC_PASSWORD'] ?? 'test';
32
+ const port = opts.port ?? DEFAULT_VNC_PORT;
33
+ const screen = opts.screen ?? '1600x1000x24';
34
+ const log = opts.logPrefix ?? '[guestVnc]';
35
+ // 1) (Re)start Xvfb :99 + x11vnc inside the guest. We restart Xvfb
36
+ // with -ac (access control off) so x11vnc — launched from this
37
+ // fresh exec shell, without the entrypoint's Xauthority — can
38
+ // attach without a cookie. Background via shell `&` + nohup so
39
+ // both survive this exec returning.
40
+ console.error(`${log} starting x11vnc on guest :${port}…`);
41
+ const vncStart = await vm.exec({
42
+ argv: [
43
+ 'bash',
44
+ '-c',
45
+ `
46
+ # No set -e: pkill/rm of absent things exit nonzero legitimately.
47
+ # Match Xvfb by exact name (-x), NOT -f: -f matches this script's
48
+ # own argv (the heredoc contains "Xvfb") and would kill our shell.
49
+ echo "[xvfb] restarting Xvfb :99 ${screen} -ac …"
50
+ pkill -x Xvfb 2>/dev/null || true
51
+ rm -f /tmp/.X11-unix/X99 /tmp/.X99-lock
52
+ sleep 0.3
53
+ nohup Xvfb :99 -screen 0 ${screen} -nolisten tcp -ac \
54
+ >/var/log/xvfb.log 2>&1 &
55
+ for _ in $(seq 1 50); do
56
+ [ -e /tmp/.X11-unix/X99 ] && break
57
+ sleep 0.1
58
+ done
59
+ if [ ! -e /tmp/.X11-unix/X99 ]; then
60
+ echo "[xvfb] FAILED to bind /tmp/.X11-unix/X99 within 5s"
61
+ cat /var/log/xvfb.log
62
+ exit 1
63
+ fi
64
+ echo "[xvfb] up."
65
+
66
+ mkdir -p /root/.vnc
67
+ x11vnc -storepasswd "${vncPassword}" /root/.vnc/passwd >/dev/null 2>&1
68
+ echo "[x11vnc] starting on :${port}…"
69
+ nohup x11vnc -display :99 -forever -shared \
70
+ -rfbauth /root/.vnc/passwd -rfbport ${port} -quiet \
71
+ >/var/log/x11vnc.log 2>&1 &
72
+ echo "[x11vnc] pid $!"
73
+ # Confirm the listener bound. netstat (net-tools) is in the image;
74
+ # bash /dev/tcp is unreliable on jammy (device sometimes disabled).
75
+ for _ in $(seq 1 30); do
76
+ if netstat -ltn 2>/dev/null | grep -q ":${port} "; then
77
+ exit 0
78
+ fi
79
+ sleep 0.1
80
+ done
81
+ echo "x11vnc didn't bind :${port} within 3s"
82
+ netstat -ltn 2>&1 || echo "(netstat unavailable)"
83
+ cat /var/log/x11vnc.log
84
+ exit 1
85
+ `,
86
+ ],
87
+ timeoutMs: 15_000,
88
+ });
89
+ if (vncStart.exitCode !== 0) {
90
+ console.error(`${log} x11vnc failed:`, vncStart.stdout.toString(), vncStart.stderr.toString());
91
+ throw new Error('x11vnc startup failed');
92
+ }
93
+ // 2) Bridge host 127.0.0.1:port → guest :port.
94
+ const forwarder = await vm.exposeTcp(port, port);
95
+ console.error(`${log} forwarding host 127.0.0.1:${port} → guest :${port}`);
96
+ // 3) Open a viewer (macOS Screen Sharing), password prefilled.
97
+ if (osPlatform() === 'darwin') {
98
+ // Tiny delay so the accept loop is warm before the client dials,
99
+ // else Screen Sharing intermittently shows "connection refused".
100
+ await sleep(500);
101
+ const vncUrl = `vnc://:${encodeURIComponent(vncPassword)}@localhost:${port}`;
102
+ console.error(`${log} opening macOS Screen Sharing → vnc://localhost:${port} (password prefilled)`);
103
+ console.error(`${log} (if nothing opens: open '${vncUrl}')`);
104
+ nodeSpawn('open', [vncUrl], { stdio: 'ignore', detached: true }).unref();
105
+ }
106
+ else {
107
+ console.error(`${log} connect any VNC viewer to localhost:${port} (password: ${vncPassword}).`);
108
+ }
109
+ return forwarder;
110
+ }
111
+ //# sourceMappingURL=guestVnc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guestVnc.js","sourceRoot":"","sources":["../../src/lib/guestVnc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAW3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAarC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAgB,EAChB,OAA8B,EAAE;IAEhC,MAAM,WAAW,GACf,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,MAAM,CAAC;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC;IAE3C,mEAAmE;IACnE,kEAAkE;IAClE,iEAAiE;IACjE,kEAAkE;IAClE,uCAAuC;IACvC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,8BAA8B,IAAI,GAAG,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC;QAC7B,IAAI,EAAE;YACJ,MAAM;YACN,IAAI;YACJ;;;;yCAImC,MAAM;;;;iCAId,MAAM;;;;;;;;;;;;;;6BAcV,WAAW;oCACJ,IAAI;;8CAEM,IAAI;;;;;;kDAMA,IAAI;;;;;kCAKpB,IAAI;;;;KAIjC;SACA;QACD,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CACX,GAAG,GAAG,iBAAiB,EACvB,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,EAC1B,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAC3B,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,+CAA+C;IAC/C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,8BAA8B,IAAI,aAAa,IAAI,EAAE,CAAC,CAAC;IAE3E,+DAA+D;IAC/D,IAAI,UAAU,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC9B,iEAAiE;QACjE,iEAAiE;QACjE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,MAAM,GAAG,UAAU,kBAAkB,CAAC,WAAW,CAAC,cAAc,IAAI,EAAE,CAAC;QAC7E,OAAO,CAAC,KAAK,CACX,GAAG,GAAG,mDAAmD,IAAI,uBAAuB,CACrF,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,6BAA6B,MAAM,IAAI,CAAC,CAAC;QAC7D,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CACX,GAAG,GAAG,wCAAwC,IAAI,eAAe,WAAW,IAAI,CACjF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=buildImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildImage.d.ts","sourceRoot":"","sources":["../../src/scripts/buildImage.ts"],"names":[],"mappings":""}
@@ -1,14 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Build the canonical `shopify-test` image from the Dockerfile
4
- * bundled in this package. Run from the shopify-test workspace
5
- * root:
3
+ * Build the canonical `shopify-test` VM image via Apple's `container
4
+ * build` (NOT docker we don't use docker for any test path). The
5
+ * image spec is the bundled `docker/Dockerfile`; Dockerfile syntax is
6
+ * what `container build` consumes, and the directory name is
7
+ * historical. supermachine restores microVMs from the built image.
6
8
  *
7
- * npm run docker:build
9
+ * Run directly:
8
10
  *
9
- * Or directly:
11
+ * node --import tsx packages/runner/src/scripts/buildImage.ts
10
12
  *
11
- * node --import tsx packages/runner/src/scripts/buildDockerImage.ts
13
+ * or via the exposed bin `shopify-test-build-image`.
12
14
  *
13
15
  * The image is amd64-only (Rosetta on Apple Silicon) — see
14
16
  * docker/README.md for why.
@@ -20,7 +22,7 @@ import { fileURLToPath } from 'node:url';
20
22
  // Mirrors the npm scope (`@essential-apps/shopify-test`) so anyone
21
23
  // inspecting `container images` sees the same name they `npm install`.
22
24
  const DEFAULT_TAG = 'essential-apps/shopify-test:latest';
23
- function dockerContextDir() {
25
+ function imageContextDir() {
24
26
  // This file lives at packages/runner/src/scripts/ (or dist/scripts/
25
27
  // after build). Walk up + sideways to docker/.
26
28
  const here = dirname(fileURLToPath(import.meta.url));
@@ -38,9 +40,9 @@ function dockerContextDir() {
38
40
  }
39
41
  async function main() {
40
42
  const tag = process.env['SHOPIFY_TEST_IMAGE_TAG'] ?? DEFAULT_TAG;
41
- const context = dockerContextDir();
43
+ const context = imageContextDir();
42
44
  console.log('────────────────────────────────────────────────────────────');
43
- console.log(' shopify-test docker image build');
45
+ console.log(' shopify-test VM image build (Apple `container build`)');
44
46
  console.log('────────────────────────────────────────────────────────────');
45
47
  console.log(` Tag : ${tag}`);
46
48
  console.log(` Context : ${context}`);
@@ -57,4 +59,4 @@ main().catch((err) => {
57
59
  console.error(err);
58
60
  process.exit(1);
59
61
  });
60
- //# sourceMappingURL=buildDockerImage.js.map
62
+ //# sourceMappingURL=buildImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildImage.js","sourceRoot":"","sources":["../../src/scripts/buildImage.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,mEAAmE;AACnE,uEAAuE;AACvE,MAAM,WAAW,GAAG,oCAAoC,CAAC;AAEzD,SAAS,eAAe;IACtB,oEAAoE;IACpE,+CAA+C;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,gDAAgD;IAChD,MAAM,UAAU,GAAG;QACjB,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;QAC7B,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;KAC3B,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,IAAI,KAAK,CACb,iEAAiE;QAC/D,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,WAAW,CAAC;IACjE,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACjE,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
File without changes
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=captureSharedContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureSharedContracts.d.ts","sourceRoot":"","sources":["../../src/scripts/captureSharedContracts.ts"],"names":[],"mappings":""}
@@ -0,0 +1,209 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Regenerate the SHARED contract goldens in
4
+ * `@essential-apps/shopify-test-contracts/fixtures` from the in-process
5
+ * offline mock — the "replayable-variable capture" generator.
6
+ *
7
+ * Why this exists (the design the centralization landed on):
8
+ * A verify golden must be *mock-replayable* — `verify-contracts`
9
+ * replays its `source` + `variables` against the offline mock and
10
+ * asserts the response matches. A conformance capture (scrubbed LIVE
11
+ * variables like `ownerId: <NUMERIC_ID>`, a richer field selection)
12
+ * is NOT replayable: the mock can't resolve the placeholders. So the
13
+ * two are different artifacts.
14
+ *
15
+ * The clean split:
16
+ * - The verify golden is captured FROM THE MOCK with deterministic
17
+ * seed variables — replayable by construction. That's this script.
18
+ * - `@essential-apps/shopify-test-conformance` separately CERTIFIES
19
+ * the mock matches live Shopify (schema SDL + shape diffs). A
20
+ * golden that's mock-replayable AND mock-certified-vs-live is
21
+ * trustworthy end to end.
22
+ *
23
+ * This script keeps each golden's `operationName` / `source` /
24
+ * `variables` (so the *request* contract is stable) and refreshes only
25
+ * the `response` to the current mock output. Idempotent: unchanged
26
+ * responses aren't rewritten.
27
+ *
28
+ * node --import tsx packages/runner/src/scripts/captureSharedContracts.ts
29
+ * # or the bin: shopify-test-capture-shared-contracts
30
+ */
31
+ import { readdirSync, readFileSync, writeFileSync } from 'node:fs';
32
+ import { resolve } from 'node:path';
33
+ import { createAdminApi, createStorefrontApi, } from '@essential-apps/shopify-test-shopify-api';
34
+ import { ShopState } from '@essential-apps/shopify-test-storefront';
35
+ import { fixturesDir, } from '@essential-apps/shopify-test-contracts/operation-contract';
36
+ import { normaliseResponse } from '../contracts/normalize.js';
37
+ const ADMIN_API_VERSION = '2025-07';
38
+ /**
39
+ * Structural equality under the same normalisation `verify` applies
40
+ * (gids → `<ID>`, timestamps → `<DATETIME>`, …). We rewrite a golden
41
+ * only on genuine structural drift — not when a volatile-but-equivalent
42
+ * value (a fresh timestamp/id) changed — so the generator is idempotent.
43
+ */
44
+ function sameShape(a, b) {
45
+ return (JSON.stringify(normaliseResponse(a)) === JSON.stringify(normaliseResponse(b)));
46
+ }
47
+ /**
48
+ * Deterministic GraphQL seed. MUST stay in lockstep with
49
+ * `verifyContracts.ts` / `captureContracts.ts` `buildSeededState` — the
50
+ * goldens are replayed against this exact state at verify time.
51
+ */
52
+ function buildGraphqlState() {
53
+ const state = new ShopState({
54
+ shop: {
55
+ domain: 'test-shop.myshopify.com',
56
+ permanent_domain: 'test-shop.myshopify.com',
57
+ },
58
+ });
59
+ state.addProduct({
60
+ id: 900_000_001,
61
+ handle: 'sample-product',
62
+ title: 'Sample Product',
63
+ description: 'Used by contract capture as a deterministic fixture.',
64
+ price: 1000,
65
+ vendor: 'Sample Vendor',
66
+ type: 'Sample',
67
+ variants: [
68
+ {
69
+ id: 900_010_001,
70
+ title: 'Default Title',
71
+ price: 1000,
72
+ available: true,
73
+ sku: 'SAMPLE-1',
74
+ inventory_quantity: 100,
75
+ selected_options: ['Default Title'],
76
+ },
77
+ ],
78
+ tags: [],
79
+ });
80
+ state.addCollection({
81
+ id: 900_020_001,
82
+ handle: 'sample-collection',
83
+ title: 'Sample Collection',
84
+ productHandles: ['sample-product'],
85
+ });
86
+ return state;
87
+ }
88
+ /** REST seed — matches `verifyRestContracts.ts` `buildSeededState`. */
89
+ function buildRestState() {
90
+ return new ShopState({
91
+ shop: {
92
+ domain: 'test-shop.myshopify.com',
93
+ permanent_domain: 'test-shop.myshopify.com',
94
+ },
95
+ });
96
+ }
97
+ function fillPath(template, params) {
98
+ return template.replace(/\{([^}]+)\}/g, (_, key) => {
99
+ if (!(key in params)) {
100
+ throw new Error(`path template references {${key}} but no value provided`);
101
+ }
102
+ return encodeURIComponent(params[key] ?? '');
103
+ });
104
+ }
105
+ function appendQuery(path, query) {
106
+ if (!query || Object.keys(query).length === 0)
107
+ return path;
108
+ const params = new URLSearchParams();
109
+ for (const [k, v] of Object.entries(query))
110
+ params.set(k, v);
111
+ return `${path}${path.includes('?') ? '&' : '?'}${params.toString()}`;
112
+ }
113
+ /** Flat `<op>.json` goldens only (skip manifests + store-keyed captures). */
114
+ function flatGoldens(dir) {
115
+ let entries;
116
+ try {
117
+ entries = readdirSync(dir);
118
+ }
119
+ catch {
120
+ return [];
121
+ }
122
+ return entries.filter((f) => f.endsWith('.json') &&
123
+ !f.endsWith('.manifest.json') &&
124
+ !f.slice(0, -'.json'.length).includes('.'));
125
+ }
126
+ async function regenGraphql(api) {
127
+ const dir = resolve(fixturesDir(), api);
128
+ const state = buildGraphqlState();
129
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Hono types are loose
130
+ const app = api === 'admin' ? createAdminApi({ state }) : createStorefrontApi({ state });
131
+ const endpoint = api === 'admin'
132
+ ? '/admin/api/2025-07/graphql.json'
133
+ : '/api/2025-07/graphql.json';
134
+ let changed = 0;
135
+ for (const f of flatGoldens(dir)) {
136
+ const p = resolve(dir, f);
137
+ const g = JSON.parse(readFileSync(p, 'utf8'));
138
+ if (g.warning)
139
+ continue;
140
+ const resp = await app.request(endpoint, {
141
+ method: 'POST',
142
+ headers: {
143
+ 'Content-Type': 'application/json',
144
+ 'X-Shopify-Access-Token': 'mock-access-token',
145
+ },
146
+ body: JSON.stringify({ query: g.source, variables: g.variables }),
147
+ });
148
+ const actual = await resp.json();
149
+ if (!sameShape(g.response, actual)) {
150
+ g.response = actual;
151
+ writeFileSync(p, JSON.stringify(g, null, 2) + '\n');
152
+ console.log(` updated ${api}/${f}`);
153
+ changed++;
154
+ }
155
+ }
156
+ return changed;
157
+ }
158
+ async function regenRest() {
159
+ const dir = resolve(fixturesDir(), 'admin-rest');
160
+ const state = buildRestState();
161
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Hono types are loose
162
+ const app = createAdminApi({ state });
163
+ let changed = 0;
164
+ for (const f of flatGoldens(dir)) {
165
+ const p = resolve(dir, f);
166
+ const c = JSON.parse(readFileSync(p, 'utf8'));
167
+ if (c.warning)
168
+ continue;
169
+ const finalPath = appendQuery(fillPath(c.path, { version: ADMIN_API_VERSION, ...(c.pathParams ?? {}) }), c.query);
170
+ const init = {
171
+ method: c.method,
172
+ headers: {
173
+ 'Content-Type': 'application/json',
174
+ 'X-Shopify-Access-Token': 'mock-access-token',
175
+ },
176
+ };
177
+ if (c.body !== undefined)
178
+ init.body = JSON.stringify(c.body);
179
+ const resp = await app.request(finalPath, init);
180
+ let body = null;
181
+ try {
182
+ body = await resp.json();
183
+ }
184
+ catch {
185
+ /* empty / non-JSON */
186
+ }
187
+ const next = { status: resp.status, body };
188
+ if (c.response.status !== next.status || !sameShape(c.response.body, next.body)) {
189
+ c.response = next;
190
+ writeFileSync(p, JSON.stringify(c, null, 2) + '\n');
191
+ console.log(` updated admin-rest/${f}`);
192
+ changed++;
193
+ }
194
+ }
195
+ return changed;
196
+ }
197
+ async function main() {
198
+ console.log('[capture-shared-contracts] regenerating shared goldens from the offline mock…');
199
+ let total = 0;
200
+ total += await regenGraphql('admin');
201
+ total += await regenGraphql('storefront');
202
+ total += await regenRest();
203
+ console.log(`[capture-shared-contracts] done — ${total} golden(s) refreshed.`);
204
+ }
205
+ main().catch((err) => {
206
+ console.error(err);
207
+ process.exit(1);
208
+ });
209
+ //# sourceMappingURL=captureSharedContracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureSharedContracts.js","sourceRoot":"","sources":["../../src/scripts/captureSharedContracts.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes