@gate-forge/pack-playwright 0.7.0 → 0.8.0

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 (200) hide show
  1. package/README.md +31 -0
  2. package/dist/constants.d.ts +13 -140
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +13 -148
  5. package/dist/constants.js.map +1 -1
  6. package/dist/cypress/plugin.d.ts +53 -0
  7. package/dist/cypress/plugin.d.ts.map +1 -0
  8. package/dist/cypress/plugin.js +369 -0
  9. package/dist/cypress/plugin.js.map +1 -0
  10. package/dist/cypress/spec-scan.d.ts +39 -0
  11. package/dist/cypress/spec-scan.d.ts.map +1 -0
  12. package/dist/cypress/spec-scan.js +301 -0
  13. package/dist/cypress/spec-scan.js.map +1 -0
  14. package/dist/diagnosis.d.ts +39 -0
  15. package/dist/diagnosis.d.ts.map +1 -0
  16. package/dist/diagnosis.js +63 -0
  17. package/dist/diagnosis.js.map +1 -0
  18. package/dist/discovery/adapter-projection.d.ts +13 -0
  19. package/dist/discovery/adapter-projection.d.ts.map +1 -0
  20. package/dist/discovery/adapter-projection.js +84 -0
  21. package/dist/discovery/adapter-projection.js.map +1 -0
  22. package/dist/discovery/config-locations.d.ts +5 -0
  23. package/dist/discovery/config-locations.d.ts.map +1 -0
  24. package/dist/discovery/config-locations.js +19 -0
  25. package/dist/discovery/config-locations.js.map +1 -0
  26. package/dist/discovery/cypress-runner-adapter.d.ts +112 -0
  27. package/dist/discovery/cypress-runner-adapter.d.ts.map +1 -0
  28. package/dist/discovery/cypress-runner-adapter.js +501 -0
  29. package/dist/discovery/cypress-runner-adapter.js.map +1 -0
  30. package/dist/discovery/discover.d.ts +53 -1
  31. package/dist/discovery/discover.d.ts.map +1 -1
  32. package/dist/discovery/discover.js +100 -3
  33. package/dist/discovery/discover.js.map +1 -1
  34. package/dist/discovery/git-ignore.d.ts +13 -0
  35. package/dist/discovery/git-ignore.d.ts.map +1 -0
  36. package/dist/discovery/git-ignore.js +62 -0
  37. package/dist/discovery/git-ignore.js.map +1 -0
  38. package/dist/discovery/index.d.ts +9 -0
  39. package/dist/discovery/index.d.ts.map +1 -1
  40. package/dist/discovery/index.js +9 -0
  41. package/dist/discovery/index.js.map +1 -1
  42. package/dist/discovery/playwright-runner-adapter.d.ts +108 -0
  43. package/dist/discovery/playwright-runner-adapter.d.ts.map +1 -0
  44. package/dist/discovery/playwright-runner-adapter.js +185 -0
  45. package/dist/discovery/playwright-runner-adapter.js.map +1 -0
  46. package/dist/discovery/prepare-barrier.d.ts +522 -0
  47. package/dist/discovery/prepare-barrier.d.ts.map +1 -0
  48. package/dist/discovery/prepare-barrier.js +739 -0
  49. package/dist/discovery/prepare-barrier.js.map +1 -0
  50. package/dist/discovery/pytest-adapter.d.ts.map +1 -1
  51. package/dist/discovery/pytest-adapter.js +6 -2
  52. package/dist/discovery/pytest-adapter.js.map +1 -1
  53. package/dist/discovery/pytest-runner-adapter.d.ts +124 -0
  54. package/dist/discovery/pytest-runner-adapter.d.ts.map +1 -0
  55. package/dist/discovery/pytest-runner-adapter.js +454 -0
  56. package/dist/discovery/pytest-runner-adapter.js.map +1 -0
  57. package/dist/discovery/reconcile.d.ts +80 -11
  58. package/dist/discovery/reconcile.d.ts.map +1 -1
  59. package/dist/discovery/reconcile.js +395 -78
  60. package/dist/discovery/reconcile.js.map +1 -1
  61. package/dist/discovery/runner-env.d.ts +88 -2
  62. package/dist/discovery/runner-env.d.ts.map +1 -1
  63. package/dist/discovery/runner-env.js +142 -4
  64. package/dist/discovery/runner-env.js.map +1 -1
  65. package/dist/discovery/static-discovery.d.ts +38 -3
  66. package/dist/discovery/static-discovery.d.ts.map +1 -1
  67. package/dist/discovery/static-discovery.js +454 -15
  68. package/dist/discovery/static-discovery.js.map +1 -1
  69. package/dist/discovery/supervised-run.d.ts +199 -10
  70. package/dist/discovery/supervised-run.d.ts.map +1 -1
  71. package/dist/discovery/supervised-run.js +350 -39
  72. package/dist/discovery/supervised-run.js.map +1 -1
  73. package/dist/discovery/trusted-config.d.ts +180 -6
  74. package/dist/discovery/trusted-config.d.ts.map +1 -1
  75. package/dist/discovery/trusted-config.js +279 -10
  76. package/dist/discovery/trusted-config.js.map +1 -1
  77. package/dist/discovery/vitest-runner-adapter.d.ts +172 -0
  78. package/dist/discovery/vitest-runner-adapter.d.ts.map +1 -0
  79. package/dist/discovery/vitest-runner-adapter.js +607 -0
  80. package/dist/discovery/vitest-runner-adapter.js.map +1 -0
  81. package/dist/fixture/consumer-runner.d.ts +4 -0
  82. package/dist/fixture/consumer-runner.d.ts.map +1 -0
  83. package/dist/fixture/consumer-runner.js +38 -0
  84. package/dist/fixture/consumer-runner.js.map +1 -0
  85. package/dist/fixture/evidence.d.ts +27 -0
  86. package/dist/fixture/evidence.d.ts.map +1 -1
  87. package/dist/fixture/evidence.js +12 -0
  88. package/dist/fixture/evidence.js.map +1 -1
  89. package/dist/fixture/fixture.d.ts +2 -1
  90. package/dist/fixture/fixture.d.ts.map +1 -1
  91. package/dist/fixture/fixture.js +1 -17
  92. package/dist/fixture/fixture.js.map +1 -1
  93. package/dist/fixture/witness-client.d.ts +6 -174
  94. package/dist/fixture/witness-client.d.ts.map +1 -1
  95. package/dist/fixture/witness-client.js +6 -267
  96. package/dist/fixture/witness-client.js.map +1 -1
  97. package/dist/index.d.ts +9 -6
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +5 -4
  100. package/dist/index.js.map +1 -1
  101. package/dist/json.d.ts +6 -12
  102. package/dist/json.d.ts.map +1 -1
  103. package/dist/json.js +6 -17
  104. package/dist/json.js.map +1 -1
  105. package/dist/reporter/project-graph-reporter.d.ts +92 -0
  106. package/dist/reporter/project-graph-reporter.d.ts.map +1 -0
  107. package/dist/reporter/project-graph-reporter.js +92 -0
  108. package/dist/reporter/project-graph-reporter.js.map +1 -0
  109. package/dist/reporter/reporter.cjs.map +1 -1
  110. package/dist/reporter/reporter.d.ts +93 -4
  111. package/dist/reporter/reporter.d.ts.map +1 -1
  112. package/dist/reporter/reporter.js +174 -18
  113. package/dist/reporter/reporter.js.map +1 -1
  114. package/dist/runner-claims.d.ts +13 -0
  115. package/dist/runner-claims.d.ts.map +1 -0
  116. package/dist/runner-claims.js +46 -0
  117. package/dist/runner-claims.js.map +1 -0
  118. package/dist/runner-resolution.d.ts +3 -0
  119. package/dist/runner-resolution.d.ts.map +1 -0
  120. package/dist/runner-resolution.js +14 -0
  121. package/dist/runner-resolution.js.map +1 -0
  122. package/dist/supervisor/client.d.ts +23 -1
  123. package/dist/supervisor/client.d.ts.map +1 -1
  124. package/dist/supervisor/client.js +49 -0
  125. package/dist/supervisor/client.js.map +1 -1
  126. package/dist/supervisor/drain.d.ts +65 -0
  127. package/dist/supervisor/drain.d.ts.map +1 -1
  128. package/dist/supervisor/drain.js +353 -9
  129. package/dist/supervisor/drain.js.map +1 -1
  130. package/dist/supervisor/index.d.ts +7 -3
  131. package/dist/supervisor/index.d.ts.map +1 -1
  132. package/dist/supervisor/index.js +7 -3
  133. package/dist/supervisor/index.js.map +1 -1
  134. package/dist/supervisor/spool.d.ts +65 -2
  135. package/dist/supervisor/spool.d.ts.map +1 -1
  136. package/dist/supervisor/spool.js +47 -0
  137. package/dist/supervisor/spool.js.map +1 -1
  138. package/dist/surface.d.ts +6 -207
  139. package/dist/surface.d.ts.map +1 -1
  140. package/dist/surface.js +6 -264
  141. package/dist/surface.js.map +1 -1
  142. package/dist/vitest/index.d.ts +23 -0
  143. package/dist/vitest/index.d.ts.map +1 -0
  144. package/dist/vitest/index.js +356 -0
  145. package/dist/vitest/index.js.map +1 -0
  146. package/dist/vitest/reporter.d.ts +83 -0
  147. package/dist/vitest/reporter.d.ts.map +1 -0
  148. package/dist/vitest/reporter.js +211 -0
  149. package/dist/vitest/reporter.js.map +1 -0
  150. package/dist/vitest/worker-slot.d.ts +36 -0
  151. package/dist/vitest/worker-slot.d.ts.map +1 -0
  152. package/dist/vitest/worker-slot.js +51 -0
  153. package/dist/vitest/worker-slot.js.map +1 -0
  154. package/dist/witness/adapter-registry.d.ts +6 -50
  155. package/dist/witness/adapter-registry.d.ts.map +1 -1
  156. package/dist/witness/adapter-registry.js +6 -257
  157. package/dist/witness/adapter-registry.js.map +1 -1
  158. package/dist/witness/behavior-request.d.ts +6 -76
  159. package/dist/witness/behavior-request.d.ts.map +1 -1
  160. package/dist/witness/behavior-request.js +6 -273
  161. package/dist/witness/behavior-request.js.map +1 -1
  162. package/dist/witness/behavior.d.ts +6 -48
  163. package/dist/witness/behavior.d.ts.map +1 -1
  164. package/dist/witness/behavior.js +6 -114
  165. package/dist/witness/behavior.js.map +1 -1
  166. package/dist/witness/bin.d.ts +6 -17
  167. package/dist/witness/bin.d.ts.map +1 -1
  168. package/dist/witness/bin.js +6 -168
  169. package/dist/witness/bin.js.map +1 -1
  170. package/dist/witness/browser.d.ts +14 -206
  171. package/dist/witness/browser.d.ts.map +1 -1
  172. package/dist/witness/browser.js +15 -654
  173. package/dist/witness/browser.js.map +1 -1
  174. package/dist/witness/classifications.d.ts +6 -38
  175. package/dist/witness/classifications.d.ts.map +1 -1
  176. package/dist/witness/classifications.js +6 -83
  177. package/dist/witness/classifications.js.map +1 -1
  178. package/dist/witness/env-attestation.d.ts +6 -94
  179. package/dist/witness/env-attestation.d.ts.map +1 -1
  180. package/dist/witness/env-attestation.js +6 -198
  181. package/dist/witness/env-attestation.js.map +1 -1
  182. package/dist/witness/fixture-provider.d.ts +6 -82
  183. package/dist/witness/fixture-provider.d.ts.map +1 -1
  184. package/dist/witness/fixture-provider.js +6 -105
  185. package/dist/witness/fixture-provider.js.map +1 -1
  186. package/dist/witness/loopback-pins.d.ts +6 -75
  187. package/dist/witness/loopback-pins.d.ts.map +1 -1
  188. package/dist/witness/loopback-pins.js +6 -240
  189. package/dist/witness/loopback-pins.js.map +1 -1
  190. package/dist/witness/server.d.ts +8 -26
  191. package/dist/witness/server.d.ts.map +1 -1
  192. package/dist/witness/server.js +24 -3761
  193. package/dist/witness/server.js.map +1 -1
  194. package/dist/witness/types.d.ts +6 -882
  195. package/dist/witness/types.d.ts.map +1 -1
  196. package/dist/witness/types.js +9 -1
  197. package/dist/witness/types.js.map +1 -1
  198. package/examples/overlay-proof.spec.js +75 -0
  199. package/package.json +8 -2
  200. package/python/gateforge_pytest_plugin.py +462 -0
@@ -0,0 +1,185 @@
1
+ /**
2
+ * The Playwright runner adapter behind the runner-neutral
3
+ * `RunnerAdapter` contract (plan 2026-09-25 phase 0).
4
+ *
5
+ * This is NOT a rewrite of the Playwright path: every call lands on the
6
+ * code the supervised run already used (`discoverTestCatalog`,
7
+ * `executeSupervisedPlaywright`, `parseOutcomesText`). Its job is to
8
+ * state the four jobs — enumerate, tag, execute, parse — in the shape
9
+ * every other runner will use, so the contract suite has something
10
+ * honest to grade (phase 0 acceptance: "the contract suite runs against
11
+ * the current Playwright path and passes").
12
+ *
13
+ * Compatibility: nothing here is on the supervised-run path. The
14
+ * existing `PlaywrightAdapter` (discovery/adapters.ts) keeps serving the
15
+ * CLI unchanged; this adapter is the contract-shaped view of the same
16
+ * machinery.
17
+ */
18
+ import { loadConfig } from '@gate-forge/core';
19
+ import { ENV_APP_BASE_URL, ENV_RUN_TOKEN, ENV_WITNESS_URL } from '../constants.js';
20
+ import { discoverTestCatalog } from './discover.js';
21
+ import { executeSupervisedPlaywright, parseOutcomesText } from './supervised-run.js';
22
+ /**
23
+ * Per-test session variables a runner adapter publishes to the test.
24
+ *
25
+ * These are the values the trusted CLI resolves for ONE supervisor-
26
+ * opened session and hands to that test alone. They are new env NAMES
27
+ * (additive — the frozen Playwright child allowlist is untouched, so an
28
+ * existing Playwright user's run env is byte-identical); the Playwright
29
+ * fixture itself receives the same values through the supervisor's
30
+ * session-resolve response rather than through the environment.
31
+ */
32
+ export const ENV_SESSION_ID = 'GATEFORGE_SESSION_ID';
33
+ export const ENV_SESSION_TOKEN = 'GATEFORGE_SESSION_TOKEN';
34
+ export const ENV_SESSION_PROXY_URL = 'GATEFORGE_SESSION_PROXY_URL';
35
+ /** The variables that carry ONE test's identity to its traffic. */
36
+ export const PLAYWRIGHT_IDENTITY_ENV = [
37
+ ENV_SESSION_ID,
38
+ ENV_SESSION_TOKEN,
39
+ ENV_SESSION_PROXY_URL,
40
+ ];
41
+ /** Playwright behind the runner-neutral contract. */
42
+ export class PlaywrightRunnerAdapter {
43
+ options;
44
+ runner = 'playwright';
45
+ capabilities = {
46
+ inventory: 'available',
47
+ resolveInstances: 'available',
48
+ execute: 'available',
49
+ };
50
+ constructor(options = {}) {
51
+ this.options = options;
52
+ }
53
+ /**
54
+ * Job 1: the expected set, fixed BEFORE the run (static scan
55
+ * reconciled against the native list).
56
+ *
57
+ * Args:
58
+ * cwd: absolute repo root the playwright configuration lives under.
59
+ *
60
+ * Returns:
61
+ * Promise<RunnerEnumeration>: the enumerated tests, or an
62
+ * `unavailable` verdict. A project with no configured tests is
63
+ * `unavailable`, never an empty `discovered` list: nothing executed
64
+ * proves nothing.
65
+ */
66
+ async enumerate(cwd) {
67
+ let config;
68
+ try {
69
+ config = this.options.config ?? loadConfig(`${cwd}/.gateforge.yml`);
70
+ }
71
+ catch (error) {
72
+ return {
73
+ status: 'unavailable',
74
+ detail: `playwright enumeration could not load the gateforge config: ${describeError(error)}`,
75
+ tests: [],
76
+ };
77
+ }
78
+ let catalog;
79
+ try {
80
+ const discovered = await discoverTestCatalog({ cwd, config, ...this.options.discover });
81
+ catalog = discovered.catalog;
82
+ }
83
+ catch (error) {
84
+ return {
85
+ status: 'unavailable',
86
+ detail: `playwright enumeration failed: ${describeError(error)}`,
87
+ tests: [],
88
+ };
89
+ }
90
+ const tests = catalog.entries
91
+ .filter((entry) => entry.runner === 'playwright')
92
+ .map((entry) => ({
93
+ logicalKey: entry.logicalKey,
94
+ project: entry.project,
95
+ file: entry.file,
96
+ titlePath: entry.titlePath,
97
+ blockingAnnotations: [
98
+ ...new Set(entry.suppressionSignals
99
+ .filter((signal) => signal.kind === 'only' || signal.kind === 'skip' || signal.kind === 'fixme')
100
+ .map((signal) => signal.kind)),
101
+ ].sort(),
102
+ // The native reporter's own instance id (the same value the
103
+ // supervised registration path uses).
104
+ frameworkId: entry.parameterIdentity ?? undefined,
105
+ }))
106
+ .sort((a, b) => (a.logicalKey < b.logicalKey ? -1 : a.logicalKey > b.logicalKey ? 1 : 0));
107
+ if (tests.length === 0) {
108
+ return {
109
+ status: 'unavailable',
110
+ detail: `playwright enumeration found no tests under ${cwd} — a zero-test run never proves coverage`,
111
+ tests: [],
112
+ };
113
+ }
114
+ return { status: 'discovered', detail: `enumerated ${String(tests.length)} playwright test(s)`, tests };
115
+ }
116
+ /**
117
+ * Job 2: the per-test tag. Playwright's channel is the session proxy
118
+ * origin: the fixture resolves the supervisor-opened session for the
119
+ * current test and routes the page through that origin, so every
120
+ * exchange — absolute paths included — is attributed to THAT session.
121
+ *
122
+ * Args:
123
+ * session: the test being tagged.
124
+ * context: run-scoped, non-secret witness wiring.
125
+ *
126
+ * Returns:
127
+ * RunnerChildEnv: the run identity plus the session-scoped tag.
128
+ */
129
+ childEnv(_session, context) {
130
+ return {
131
+ vars: {
132
+ [ENV_WITNESS_URL]: context.witnessUrl,
133
+ [ENV_RUN_TOKEN]: context.runToken,
134
+ [ENV_APP_BASE_URL]: context.appBaseUrl,
135
+ [ENV_SESSION_ID]: context.sessionId,
136
+ [ENV_SESSION_TOKEN]: context.sessionToken,
137
+ [ENV_SESSION_PROXY_URL]: context.sessionProxyUrl,
138
+ },
139
+ tagChannel: 'session-proxy',
140
+ identityVars: PLAYWRIGHT_IDENTITY_ENV,
141
+ mechanism: 'gateforge playwright fixture resolves the supervisor session for the running test and routes its page through the per-test session proxy origin',
142
+ };
143
+ }
144
+ /**
145
+ * Job 3: the supervised run (unchanged machinery, contract shape).
146
+ *
147
+ * Args:
148
+ * request: the exact selection, run identity, and wall-clock bound.
149
+ *
150
+ * Returns:
151
+ * Promise<RunnerExecutionEnvelope>: the structured outcome envelope.
152
+ */
153
+ async execute(request) {
154
+ return executeSupervisedPlaywright({ logicalKeys: request.logicalKeys }, { stateDir: request.stateDir, runId: request.runId, vars: {} }, {
155
+ cwd: request.cwd,
156
+ timeoutMs: request.timeoutMs,
157
+ // The project selection is part of the identity join key: a run
158
+ // that does not select the enumerated projects reports outcomes
159
+ // under different identities than the expected set was fixed
160
+ // with, and supervision (correctly) calls them unplanned.
161
+ ...(request.testLocations !== undefined ? { testLocations: request.testLocations } : {}),
162
+ ...(request.projects !== undefined ? { projects: request.projects } : {}),
163
+ ...this.options.run,
164
+ });
165
+ }
166
+ /**
167
+ * Job 4: the gateforge reporter's runner-outcomes document, through
168
+ * the SAME validation and mapping the supervised run uses.
169
+ *
170
+ * Args:
171
+ * raw: the outcomes document JSON text plus the runner exit status.
172
+ *
173
+ * Returns:
174
+ * RunnerExecutionEnvelope: reporter input, never a verdict. An
175
+ * unreadable or malformed document is `complete: false`.
176
+ */
177
+ parseResults(raw) {
178
+ return parseOutcomesText(raw.report, raw.processExit);
179
+ }
180
+ }
181
+ /** Single-line message of an unknown thrown value. */
182
+ function describeError(error) {
183
+ return error instanceof Error ? error.message : String(error);
184
+ }
185
+ //# sourceMappingURL=playwright-runner-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-runner-adapter.js","sourceRoot":"","sources":["../../src/discovery/playwright-runner-adapter.ts"],"names":[],"mappings":"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"}