@orkestrel/scaffold 0.0.93 → 0.0.94

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.
@@ -2098,8 +2098,13 @@ Nothing is fixed except the manifest.
2098
2098
  once into `browserOptions` and passes that to every `playwright()` provider it configures. The
2099
2099
  precedence is `PLAYWRIGHT_EXECUTABLE_PATH`, `PLAYWRIGHT_WS_ENDPOINT`, `PLAYWRIGHT_CHANNEL`, the
2100
2100
  managed Playwright Chromium, the container's bundled Chromium, a verified system channel, then the
2101
- platform default. An installed pinned revision returns empty options, so Playwright keeps its own
2102
- launch defaults. A pinned revision that is not installed falls through to a `chromium` alias or a
2101
+ platform default. Set `PLAYWRIGHT_SCROLLBARS=classic` only for runs that measure scrollbar
2102
+ compensation, never for a standing gate. Every Chromium launch in that run omits Playwright's
2103
+ `--hide-scrollbars` default argument so classic scrollbars can take layout space in every case.
2104
+ An empty or unset value preserves the launch defaults; any other value throws an `Error`.
2105
+ Pairing `classic` with `PLAYWRIGHT_WS_ENDPOINT` throws an `Error`, even with an executable
2106
+ override, because the server owns the launch. An installed pinned revision returns empty options
2107
+ unless `classic` is set. A pinned revision that is not installed falls through to a `chromium` alias or a
2103
2108
  sibling `chromium-*` revision under the same browsers directory, because a managed container ships
2104
2109
  one usable build for many Playwright versions. It is its own file rather than a block in the
2105
2110
  vendored `configs/helpers.ts`, which every workspace receives byte-identical while only a browser
@@ -1042,7 +1042,7 @@
1042
1042
  "storage": "guides/scaffold.md",
1043
1043
  "destination": "guides/scaffold.md",
1044
1044
  "executable": false,
1045
- "digest": "02922fe230a3d85e58ad16aa9e3b2e93afd42e9d3d66b88f60bbd68b1b90e19e"
1045
+ "digest": "a5c97efa111d3fe4832380638c025b9cd4f536819b595753c463d7ef2f094889"
1046
1046
  },
1047
1047
  {
1048
1048
  "storage": "guides/sea.md",
@@ -2144,5 +2144,5 @@
2144
2144
  ]
2145
2145
  }
2146
2146
  ],
2147
- "digest": "561d787211d1f705e038c6ae37fb2ceaf3d9aa147444ec06d90a129ca9c46966"
2147
+ "digest": "ffc221eacdfb7e9c96f1374ebb04666839c32a4fe53d02979f8cae0a0e2b4e7b"
2148
2148
  }
File without changes
File without changes
File without changes
File without changes
@@ -4,7 +4,7 @@ let _orkestrel_template = require("@orkestrel/template");
4
4
  let _orkestrel_emitter = require("@orkestrel/emitter");
5
5
  var package_default = {
6
6
  name: "@orkestrel/scaffold",
7
- version: "0.0.93",
7
+ version: "0.0.94",
8
8
  description: "Scaffold workspaces with commands: new, audit, repair, catalog, and overwrite.",
9
9
  keywords: [
10
10
  "audit",
@@ -2171,11 +2171,18 @@ export function resolveSystemBrowser(
2171
2171
  * discovery and is returned exactly as given: none of those environment values is checked
2172
2172
  * against the filesystem, because verifying an override would defeat the override. The pinned
2173
2173
  * managed revision outranks anything found on the host because it is deterministic. The installed
2174
- * pinned revision returns empty options so Playwright keeps its own default launch semantics. Only
2175
- * a discovered system channel is verified before it is named. The platform default is unverified
2174
+ * pinned revision returns empty options unless \`PLAYWRIGHT_SCROLLBARS=classic\` is set. Only a
2175
+ * discovered system channel is verified before it is named. The platform default is unverified
2176
2176
  * as well and exists only as a last resort: Windows takes \`msedge\`, which ships with the OS and
2177
2177
  * never collides with a foreground Chrome.
2178
2178
  *
2179
+ * Set \`PLAYWRIGHT_SCROLLBARS=classic\` only for runs that measure scrollbar compensation, never
2180
+ * for a standing gate. Every Chromium launch in that run omits Playwright's \`--hide-scrollbars\`
2181
+ * default argument so classic scrollbars can take layout space in every case. An empty or unset
2182
+ * value preserves the launch defaults; any other value throws an \`Error\`. Pairing \`classic\`
2183
+ * with \`PLAYWRIGHT_WS_ENDPOINT\` throws an \`Error\`, even with an executable override, because the
2184
+ * server owns the launch.
2185
+ *
2179
2186
  * The resolver and the gate cover Chromium alone. Reopen engine selection when another
2180
2187
  * Playwright engine is installed and launches on the host with a \`captureFrame\` reading
2181
2188
  * back at its declared size, or when a journey or style divergence is recorded.
@@ -2191,26 +2198,38 @@ export function resolveBrowser(
2191
2198
  environment: NodeJS.ProcessEnv,
2192
2199
  root: string = BUNDLED_BROWSERS_ROOT,
2193
2200
  ): PlaywrightProviderOptions {
2201
+ const scrollbars = environment.PLAYWRIGHT_SCROLLBARS
2202
+ if (scrollbars !== undefined && scrollbars.length > 0 && scrollbars !== 'classic') {
2203
+ throw new Error('PLAYWRIGHT_SCROLLBARS must be classic or empty')
2204
+ }
2205
+ const endpoint = environment.PLAYWRIGHT_WS_ENDPOINT
2206
+ if (scrollbars === 'classic' && endpoint !== undefined && endpoint.length > 0) {
2207
+ throw new Error('PLAYWRIGHT_SCROLLBARS=classic cannot be used with PLAYWRIGHT_WS_ENDPOINT')
2208
+ }
2209
+ const launch: PlaywrightProviderOptions['launchOptions'] =
2210
+ scrollbars === 'classic' ? { ignoreDefaultArgs: ['--hide-scrollbars'] } : {}
2194
2211
  const executable = environment.PLAYWRIGHT_EXECUTABLE_PATH
2195
2212
  if (executable !== undefined && executable.length > 0) {
2196
- return { launchOptions: { executablePath: executable } }
2213
+ return { launchOptions: { executablePath: executable, ...launch } }
2197
2214
  }
2198
- const endpoint = environment.PLAYWRIGHT_WS_ENDPOINT
2199
2215
  if (endpoint !== undefined && endpoint.length > 0) {
2200
2216
  return { connectOptions: { wsEndpoint: endpoint } }
2201
2217
  }
2202
2218
  const requested = environment.PLAYWRIGHT_CHANNEL
2203
2219
  if (requested !== undefined && requested.length > 0) {
2204
- return { launchOptions: { channel: requested } }
2220
+ return { launchOptions: { channel: requested, ...launch } }
2205
2221
  }
2206
2222
  const managed = pinned === undefined ? undefined : resolveManagedBrowser(pinned)
2207
2223
  if (managed !== undefined) {
2208
- return managed === pinned ? {} : { launchOptions: { executablePath: managed } }
2224
+ if (managed === pinned) return scrollbars === 'classic' ? { launchOptions: launch } : {}
2225
+ return { launchOptions: { executablePath: managed, ...launch } }
2209
2226
  }
2210
2227
  const bundled = resolveBundledBrowser(platform, root)
2211
- if (bundled !== undefined) return { launchOptions: { executablePath: bundled } }
2228
+ if (bundled !== undefined) return { launchOptions: { executablePath: bundled, ...launch } }
2212
2229
  const fallback = platform === 'win32' ? 'msedge' : 'chrome'
2213
- return { launchOptions: { channel: resolveSystemBrowser(platform, environment) ?? fallback } }
2230
+ return {
2231
+ launchOptions: { channel: resolveSystemBrowser(platform, environment) ?? fallback, ...launch },
2232
+ }
2214
2233
  }
2215
2234
  `
2216
2235
  });