@jterrazz/test 15.3.0 → 16.1.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 (222) hide show
  1. package/README.md +120 -427
  2. package/dist/appium.adapter.js +71 -15
  3. package/dist/artifacts.js +25 -1735
  4. package/dist/browser/index.js +304 -233
  5. package/dist/checker.d.ts +1 -1
  6. package/dist/checker.js +1103 -97
  7. package/dist/fixtures.js +110 -0
  8. package/dist/index.d.ts +956 -971
  9. package/dist/index.js +2159 -2281
  10. package/dist/literate.js +1747 -0
  11. package/dist/match.js +625 -84
  12. package/dist/oxlint.cjs +3585 -1480
  13. package/dist/oxlint.d.cts +60 -48
  14. package/dist/oxlint.d.ts +60 -48
  15. package/dist/oxlint.js +3585 -1480
  16. package/dist/playwright.adapter.js +51 -8
  17. package/dist/{intercept.js → server.js} +2 -2
  18. package/dist/stream.js +6 -6
  19. package/dist/{ambiguity.js → substring-warning.js} +106 -7
  20. package/dist/vitest.d.ts +67 -48
  21. package/dist/vitest.js +229 -93
  22. package/docs/01-architecture.md +95 -0
  23. package/docs/02-developing.md +351 -0
  24. package/docs/03-testing.md +495 -0
  25. package/docs/04-operating.md +101 -0
  26. package/docs/05-module-tests.md +152 -0
  27. package/docs/06-integration.md +180 -0
  28. package/docs/07-component.md +246 -0
  29. package/docs/08-website.md +404 -0
  30. package/docs/09-mobile.md +270 -0
  31. package/docs/10-api.md +264 -0
  32. package/docs/11-jobs.md +157 -0
  33. package/docs/12-cli.md +677 -0
  34. package/docs/13-elements.md +242 -0
  35. package/docs/14-assertions.md +314 -0
  36. package/docs/15-tokens.md +253 -0
  37. package/docs/16-contracts.md +438 -0
  38. package/docs/17-services.md +188 -0
  39. package/docs/18-conventions.md +305 -0
  40. package/docs/19-linting.md +510 -0
  41. package/docs/README.md +36 -0
  42. package/docs/decisions/001-v9-conventions-on-three-channels.md +50 -0
  43. package/docs/decisions/002-the-statique-channel-holds-only-what-upstream-does-not.md +49 -0
  44. package/docs/decisions/003-a-rendered-component-is-a-facet-on-vitest-browser-mode.md +84 -0
  45. package/docs/decisions/004-a-module-against-real-services-or-a-golden-is-the-integration-facet.md +81 -0
  46. package/docs/decisions/005-the-doubles-ladder-is-closed.md +86 -0
  47. package/docs/decisions/006-the-catalogue-reaches-a-file-by-its-role.md +245 -0
  48. package/docs/decisions/007-compose-mode-leaves-the-package.md +53 -0
  49. package/docs/decisions/008-vitest-5-node-24-and-the-native-seams-as-optional-peers.md +75 -0
  50. package/docs/decisions/_template.md +22 -0
  51. package/docs/reference/classes/Matcher.md +120 -0
  52. package/docs/reference/classes/ProcessHandle.md +368 -0
  53. package/docs/reference/functions/defineContract.md +39 -0
  54. package/docs/reference/functions/defineContracts.md +36 -0
  55. package/docs/reference/functions/disabled.md +28 -0
  56. package/docs/reference/functions/enabled.md +20 -0
  57. package/docs/reference/functions/focused.md +26 -0
  58. package/docs/reference/functions/mockOf.md +79 -0
  59. package/docs/reference/functions/postgres.md +31 -0
  60. package/docs/reference/functions/process.md +33 -0
  61. package/docs/reference/functions/redis.md +28 -0
  62. package/docs/reference/functions/required.md +41 -0
  63. package/docs/reference/functions/selected.md +26 -0
  64. package/docs/reference/functions/sqlite.md +33 -0
  65. package/docs/reference/functions/testId.md +20 -0
  66. package/docs/reference/functions/text.md +40 -0
  67. package/docs/reference/functions/valued.md +28 -0
  68. package/docs/reference/functions/waitUntil.md +46 -0
  69. package/docs/reference/functions/within.md +29 -0
  70. package/docs/reference/index.md +196 -0
  71. package/docs/reference/interfaces/BaseResult.md +87 -0
  72. package/docs/reference/interfaces/CallResult.md +160 -0
  73. package/docs/reference/interfaces/CaptureScope.md +82 -0
  74. package/docs/reference/interfaces/CliResult.md +253 -0
  75. package/docs/reference/interfaces/ContainerAccessor.md +166 -0
  76. package/docs/reference/interfaces/DirectoryAccessor.md +33 -0
  77. package/docs/reference/interfaces/FetchResult.md +180 -0
  78. package/docs/reference/interfaces/FilesystemAccessor.md +46 -0
  79. package/docs/reference/interfaces/HttpResult.md +126 -0
  80. package/docs/reference/interfaces/JsonAccessor.md +46 -0
  81. package/docs/reference/interfaces/PageResult.md +356 -0
  82. package/docs/reference/interfaces/RenderResult.md +72 -0
  83. package/docs/reference/interfaces/RenderedText.md +110 -0
  84. package/docs/reference/interfaces/ResponseAccessor.md +47 -0
  85. package/docs/reference/interfaces/ScreenResult.md +128 -0
  86. package/docs/reference/interfaces/TableAccessor.md +26 -0
  87. package/docs/reference/interfaces/TextAccessor.md +96 -0
  88. package/docs/reference/type-aliases/ApiHandle.md +68 -0
  89. package/docs/reference/type-aliases/ApiSpecification.md +213 -0
  90. package/docs/reference/type-aliases/ApiSpecificationOptions.md +68 -0
  91. package/docs/reference/type-aliases/BrowserConsoleMessage.md +30 -0
  92. package/docs/reference/type-aliases/BrowserLinkElement.md +50 -0
  93. package/docs/reference/type-aliases/BrowserMetaElement.md +40 -0
  94. package/docs/reference/type-aliases/BrowserOpenOptions.md +87 -0
  95. package/docs/reference/type-aliases/BrowserPage.md +132 -0
  96. package/docs/reference/type-aliases/BrowserPort.md +51 -0
  97. package/docs/reference/type-aliases/CliEnv.md +11 -0
  98. package/docs/reference/type-aliases/CliHandle.md +80 -0
  99. package/docs/reference/type-aliases/CliInput.md +36 -0
  100. package/docs/reference/type-aliases/CliOutput.md +46 -0
  101. package/docs/reference/type-aliases/CliPort.md +58 -0
  102. package/docs/reference/type-aliases/CliSpecification.md +144 -0
  103. package/docs/reference/type-aliases/CliSpecificationOptions.md +134 -0
  104. package/docs/reference/type-aliases/ComponentChain.md +156 -0
  105. package/docs/reference/type-aliases/ComponentScenario.md +20 -0
  106. package/docs/reference/type-aliases/ComponentUi.md +47 -0
  107. package/docs/reference/type-aliases/ComponentVisitor.md +10 -0
  108. package/docs/reference/type-aliases/ContainerPort.md +113 -0
  109. package/docs/reference/type-aliases/Contract.md +68 -0
  110. package/docs/reference/type-aliases/ContractInput.md +13 -0
  111. package/docs/reference/type-aliases/ContractRequest.md +95 -0
  112. package/docs/reference/type-aliases/ContractResponder.md +23 -0
  113. package/docs/reference/type-aliases/ContractResponse.md +78 -0
  114. package/docs/reference/type-aliases/ContractResponseValue.md +13 -0
  115. package/docs/reference/type-aliases/Contracts.md +48 -0
  116. package/docs/reference/type-aliases/DatabaseKeys.md +16 -0
  117. package/docs/reference/type-aliases/DatabasePort.md +72 -0
  118. package/docs/reference/type-aliases/DeviceOpenOptions.md +46 -0
  119. package/docs/reference/type-aliases/DevicePort.md +51 -0
  120. package/docs/reference/type-aliases/DeviceScreen.md +32 -0
  121. package/docs/reference/type-aliases/DeviceTimeouts.md +39 -0
  122. package/docs/reference/type-aliases/DockerSpecConfig.md +43 -0
  123. package/docs/reference/type-aliases/DomMount.md +21 -0
  124. package/docs/reference/type-aliases/ElementKind.md +27 -0
  125. package/docs/reference/type-aliases/ElementMatch.md +74 -0
  126. package/docs/reference/type-aliases/ElementOptions.md +29 -0
  127. package/docs/reference/type-aliases/ElementRef.md +128 -0
  128. package/docs/reference/type-aliases/ExecOptions.md +37 -0
  129. package/docs/reference/type-aliases/FileAccessor.md +54 -0
  130. package/docs/reference/type-aliases/HonoApp.md +31 -0
  131. package/docs/reference/type-aliases/HttpContractFilter.md +49 -0
  132. package/docs/reference/type-aliases/HttpResponseInit.md +46 -0
  133. package/docs/reference/type-aliases/HttpStreamInit.md +58 -0
  134. package/docs/reference/type-aliases/IntegrationHandle.md +46 -0
  135. package/docs/reference/type-aliases/IntegrationSpecification.md +111 -0
  136. package/docs/reference/type-aliases/IntegrationSpecificationOptions.md +42 -0
  137. package/docs/reference/type-aliases/Intercept.md +19 -0
  138. package/docs/reference/type-aliases/InterceptOptions.md +28 -0
  139. package/docs/reference/type-aliases/InterceptScope.md +11 -0
  140. package/docs/reference/type-aliases/IsolationStrategy.md +75 -0
  141. package/docs/reference/type-aliases/JobHandle.md +34 -0
  142. package/docs/reference/type-aliases/JobsHandle.md +57 -0
  143. package/docs/reference/type-aliases/JobsResult.md +16 -0
  144. package/docs/reference/type-aliases/JobsSpecification.md +94 -0
  145. package/docs/reference/type-aliases/JobsSpecificationOptions.md +56 -0
  146. package/docs/reference/type-aliases/LandmarkKind.md +20 -0
  147. package/docs/reference/type-aliases/LiterateRunFlags.md +27 -0
  148. package/docs/reference/type-aliases/LiterateServeRegistration.md +70 -0
  149. package/docs/reference/type-aliases/MatchFixtureOptions.md +27 -0
  150. package/docs/reference/type-aliases/MatchableRequest.md +61 -0
  151. package/docs/reference/type-aliases/MatcherKind.md +34 -0
  152. package/docs/reference/type-aliases/MobileBackendOptions.md +28 -0
  153. package/docs/reference/type-aliases/MobileElementKind.md +14 -0
  154. package/docs/reference/type-aliases/MobileElementMatch.md +60 -0
  155. package/docs/reference/type-aliases/MobileElementRef.md +20 -0
  156. package/docs/reference/type-aliases/MobileHandle.md +65 -0
  157. package/docs/reference/type-aliases/MobileScenario.md +20 -0
  158. package/docs/reference/type-aliases/MobileSpecification.md +51 -0
  159. package/docs/reference/type-aliases/MobileSpecificationOptions.md +126 -0
  160. package/docs/reference/type-aliases/MobileVisitor.md +81 -0
  161. package/docs/reference/type-aliases/MockOfOptions.md +26 -0
  162. package/docs/reference/type-aliases/MockPort.md +10 -0
  163. package/docs/reference/type-aliases/PinnedClock.md +10 -0
  164. package/docs/reference/type-aliases/PostgresOptions.md +32 -0
  165. package/docs/reference/type-aliases/ProcessOptions.md +112 -0
  166. package/docs/reference/type-aliases/RedisOptions.md +20 -0
  167. package/docs/reference/type-aliases/RenderSubject.md +12 -0
  168. package/docs/reference/type-aliases/ScreenNode.md +67 -0
  169. package/docs/reference/type-aliases/ServerPort.md +36 -0
  170. package/docs/reference/type-aliases/ServerResponse.md +46 -0
  171. package/docs/reference/type-aliases/ServerSpec.md +21 -0
  172. package/docs/reference/type-aliases/ServiceHandle.md +216 -0
  173. package/docs/reference/type-aliases/ServiceRecord.md +12 -0
  174. package/docs/reference/type-aliases/SpecDocument.md +84 -0
  175. package/docs/reference/type-aliases/SpecEnvToken.md +21 -0
  176. package/docs/reference/type-aliases/SpecFileAssertion.md +27 -0
  177. package/docs/reference/type-aliases/SpecFixture.md +30 -0
  178. package/docs/reference/type-aliases/SpecKind.md +8 -0
  179. package/docs/reference/type-aliases/SpecRun.md +108 -0
  180. package/docs/reference/type-aliases/SpecServeEntry.md +40 -0
  181. package/docs/reference/type-aliases/SpecStream.md +32 -0
  182. package/docs/reference/type-aliases/SpecificationConfig.md +290 -0
  183. package/docs/reference/type-aliases/SqliteOptions.md +36 -0
  184. package/docs/reference/type-aliases/SseEvent.md +58 -0
  185. package/docs/reference/type-aliases/StreamBody.md +61 -0
  186. package/docs/reference/type-aliases/TextFilter.md +22 -0
  187. package/docs/reference/type-aliases/VisitScenario.md +20 -0
  188. package/docs/reference/type-aliases/Visitor.md +215 -0
  189. package/docs/reference/type-aliases/WaitUntilOptions.md +46 -0
  190. package/docs/reference/type-aliases/WebsiteBackendOptions.md +37 -0
  191. package/docs/reference/type-aliases/WebsiteHandle.md +51 -0
  192. package/docs/reference/type-aliases/WebsiteSpecification.md +118 -0
  193. package/docs/reference/type-aliases/WebsiteSpecificationOptions.md +40 -0
  194. package/docs/reference/variables/anthropic.md +19 -0
  195. package/docs/reference/variables/banner.md +10 -0
  196. package/docs/reference/variables/button.md +10 -0
  197. package/docs/reference/variables/clock.md +16 -0
  198. package/docs/reference/variables/complementary.md +10 -0
  199. package/docs/reference/variables/component.md +10 -0
  200. package/docs/reference/variables/content.md +10 -0
  201. package/docs/reference/variables/contentinfo.md +10 -0
  202. package/docs/reference/variables/dialog.md +10 -0
  203. package/docs/reference/variables/field.md +10 -0
  204. package/docs/reference/variables/form.md +10 -0
  205. package/docs/reference/variables/heading.md +10 -0
  206. package/docs/reference/variables/http.md +40 -0
  207. package/docs/reference/variables/intercept.md +11 -0
  208. package/docs/reference/variables/link.md +10 -0
  209. package/docs/reference/variables/listitem.md +10 -0
  210. package/docs/reference/variables/main.md +10 -0
  211. package/docs/reference/variables/match.md +8 -0
  212. package/docs/reference/variables/navigation.md +10 -0
  213. package/docs/reference/variables/openai.md +21 -0
  214. package/docs/reference/variables/option.md +17 -0
  215. package/docs/reference/variables/region.md +10 -0
  216. package/docs/reference/variables/row.md +10 -0
  217. package/docs/reference/variables/search.md +10 -0
  218. package/docs/reference/variables/specification.md +8 -0
  219. package/docs/reference/variables/status.md +10 -0
  220. package/docs/reference/variables/table.md +10 -0
  221. package/package.json +32 -11
  222. package/dist/spec-document.js +0 -651
@@ -0,0 +1,132 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: BrowserPage
3
+
4
+ ```ts
5
+ type BrowserPage = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/browser.port.ts:206](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L206)
9
+
10
+ The rendered page captured by a browser visit — the FINAL state when a
11
+ scenario ran. Extraction happens in-page (the browser IS the HTML
12
+ parser); interpretation of the raw elements belongs to the model.
13
+
14
+ ## Properties
15
+
16
+ ### consoleMessages
17
+
18
+ ```ts
19
+ consoleMessages: BrowserConsoleMessage[];
20
+ ```
21
+
22
+ Defined in: [src/model/ports/browser.port.ts:208](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L208)
23
+
24
+ Console messages emitted while loading and interacting, in order.
25
+
26
+ ***
27
+
28
+ ### html
29
+
30
+ ```ts
31
+ html: string;
32
+ ```
33
+
34
+ Defined in: [src/model/ports/browser.port.ts:210](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L210)
35
+
36
+ Serialized DOM after rendering (`document.documentElement.outerHTML`).
37
+
38
+ ***
39
+
40
+ ### jsonLdBlocks
41
+
42
+ ```ts
43
+ jsonLdBlocks: string[];
44
+ ```
45
+
46
+ Defined in: [src/model/ports/browser.port.ts:212](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L212)
47
+
48
+ Raw text content of every `application/ld+json` script, in DOM order.
49
+
50
+ ***
51
+
52
+ ### links
53
+
54
+ ```ts
55
+ links: BrowserLinkElement[];
56
+ ```
57
+
58
+ Defined in: [src/model/ports/browser.port.ts:214](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L214)
59
+
60
+ `<link>` elements of the head, in DOM order.
61
+
62
+ ***
63
+
64
+ ### metas
65
+
66
+ ```ts
67
+ metas: BrowserMetaElement[];
68
+ ```
69
+
70
+ Defined in: [src/model/ports/browser.port.ts:216](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L216)
71
+
72
+ `<meta>` elements of the head, in DOM order.
73
+
74
+ ***
75
+
76
+ ### status
77
+
78
+ ```ts
79
+ status: number;
80
+ ```
81
+
82
+ Defined in: [src/model/ports/browser.port.ts:218](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L218)
83
+
84
+ HTTP status of the main document response (0 when unavailable).
85
+
86
+ ***
87
+
88
+ ### text
89
+
90
+ ```ts
91
+ text: string;
92
+ ```
93
+
94
+ Defined in: [src/model/ports/browser.port.ts:220](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L220)
95
+
96
+ Rendered `document.body.innerText`.
97
+
98
+ ***
99
+
100
+ ### title
101
+
102
+ ```ts
103
+ title: string;
104
+ ```
105
+
106
+ Defined in: [src/model/ports/browser.port.ts:224](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L224)
107
+
108
+ `document.title` after rendering.
109
+
110
+ ***
111
+
112
+ ### tree
113
+
114
+ ```ts
115
+ tree: string;
116
+ ```
117
+
118
+ Defined in: [src/model/ports/browser.port.ts:222](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L222)
119
+
120
+ The ARIA snapshot of the rendered `<body>` — the outline a golden pins.
121
+
122
+ ***
123
+
124
+ ### url
125
+
126
+ ```ts
127
+ url: string;
128
+ ```
129
+
130
+ Defined in: [src/model/ports/browser.port.ts:226](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L226)
131
+
132
+ Final URL after redirects and scenario navigation.
@@ -0,0 +1,51 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: BrowserPort
3
+
4
+ ```ts
5
+ type BrowserPort = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/browser.port.ts:234](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L234)
9
+
10
+ Abstract browser interface for the website specification runner.
11
+ One implementation lives in `integrations/playwright/` — a single shared
12
+ browser instance per runner; each `open()` gets a fresh, isolated context.
13
+
14
+ ## Properties
15
+
16
+ ### close
17
+
18
+ ```ts
19
+ close: () => Promise<void>;
20
+ ```
21
+
22
+ Defined in: [src/model/ports/browser.port.ts:236](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L236)
23
+
24
+ Close the shared browser instance (idempotent).
25
+
26
+ #### Returns
27
+
28
+ `Promise`\<`void`\>
29
+
30
+ ***
31
+
32
+ ### open
33
+
34
+ ```ts
35
+ open: (url, options) => Promise<BrowserPage>;
36
+ ```
37
+
38
+ Defined in: [src/model/ports/browser.port.ts:238](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L238)
39
+
40
+ Load `url` in a fresh context, run the scenario, capture the final page.
41
+
42
+ #### Parameters
43
+
44
+ | Parameter | Type |
45
+ | ------ | ------ |
46
+ | `url` | `string` |
47
+ | `options` | [`BrowserOpenOptions`](BrowserOpenOptions.md) |
48
+
49
+ #### Returns
50
+
51
+ `Promise`\<[`BrowserPage`](BrowserPage.md)\>
@@ -0,0 +1,11 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: CliEnv
3
+
4
+ ```ts
5
+ type CliEnv = Record<string, null | string>;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/cli.port.ts:30](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L30)
9
+
10
+ Extra environment variables to set for the child process.
11
+ Values are merged on top of process.env. A `null` value unsets the variable.
@@ -0,0 +1,80 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: CliHandle\<DatabaseKey\>
3
+
4
+ ```ts
5
+ type CliHandle<DatabaseKey> = object;
6
+ ```
7
+
8
+ Defined in: [src/facets/cli/cli.specification.ts:84](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L84)
9
+
10
+ The record returned by startCli \| specification.cli. Destructure
11
+ with the canonical names (CONVENTIONS A3):
12
+
13
+ const { cli, cleanup, docker } = await specification.cli(…);
14
+
15
+ ## Type Parameters
16
+
17
+ | Type Parameter | Default type |
18
+ | ------ | ------ |
19
+ | `DatabaseKey` *extends* `string` | `string` |
20
+
21
+ ## Properties
22
+
23
+ ### cleanup
24
+
25
+ ```ts
26
+ cleanup: () => Promise<void>;
27
+ ```
28
+
29
+ Defined in: [src/facets/cli/cli.specification.ts:86](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L86)
30
+
31
+ Stop all infrastructure started by this specification.
32
+
33
+ #### Returns
34
+
35
+ `Promise`\<`void`\>
36
+
37
+ ***
38
+
39
+ ### cli
40
+
41
+ ```ts
42
+ cli: CliSpecification<DatabaseKey>;
43
+ ```
44
+
45
+ Defined in: [src/facets/cli/cli.specification.ts:87](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L87)
46
+
47
+ ***
48
+
49
+ ### docker
50
+
51
+ ```ts
52
+ docker: (containerId) => ContainerAccessor;
53
+ ```
54
+
55
+ Defined in: [src/facets/cli/cli.specification.ts:92](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L92)
56
+
57
+ Read a running container by id — returns a [ContainerAccessor](../interfaces/ContainerAccessor.md)
58
+ usable with `await expect(...).toBeRunning()` and read accessors.
59
+
60
+ #### Parameters
61
+
62
+ | Parameter | Type |
63
+ | ------ | ------ |
64
+ | `containerId` | `string` |
65
+
66
+ #### Returns
67
+
68
+ [`ContainerAccessor`](../interfaces/ContainerAccessor.md)
69
+
70
+ ***
71
+
72
+ ### orchestrator
73
+
74
+ ```ts
75
+ orchestrator: null | Orchestrator;
76
+ ```
77
+
78
+ Defined in: [src/facets/cli/cli.specification.ts:94](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L94)
79
+
80
+ The orchestrator managing the test infrastructure lifecycle.
@@ -0,0 +1,36 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: CliInput
3
+
4
+ ```ts
5
+ type CliInput = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/cli.port.ts:41](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L41)
9
+
10
+ What one invocation is handed beyond its arguments — the two per-run inputs a
11
+ spec document may state. Both are absent by default: the child gets an
12
+ immediately-closed stdin (never a TTY) and the adapter's own timeout.
13
+
14
+ ## Properties
15
+
16
+ ### stdin?
17
+
18
+ ```ts
19
+ optional stdin?: string;
20
+ ```
21
+
22
+ Defined in: [src/model/ports/cli.port.ts:43](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L43)
23
+
24
+ Written to the child's stdin, which is then closed.
25
+
26
+ ***
27
+
28
+ ### timeout?
29
+
30
+ ```ts
31
+ optional timeout?: number;
32
+ ```
33
+
34
+ Defined in: [src/model/ports/cli.port.ts:45](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L45)
35
+
36
+ Milliseconds after which the run is killed (exit code 124).
@@ -0,0 +1,46 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: CliOutput
3
+
4
+ ```ts
5
+ type CliOutput = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/cli.port.ts:4](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L4)
9
+
10
+ Raw output from a command execution, including exit code and captured output streams.
11
+
12
+ ## Properties
13
+
14
+ ### exitCode
15
+
16
+ ```ts
17
+ exitCode: number;
18
+ ```
19
+
20
+ Defined in: [src/model/ports/cli.port.ts:6](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L6)
21
+
22
+ Process exit code (0 = success).
23
+
24
+ ***
25
+
26
+ ### stderr
27
+
28
+ ```ts
29
+ stderr: string;
30
+ ```
31
+
32
+ Defined in: [src/model/ports/cli.port.ts:10](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L10)
33
+
34
+ Captured standard error.
35
+
36
+ ***
37
+
38
+ ### stdout
39
+
40
+ ```ts
41
+ stdout: string;
42
+ ```
43
+
44
+ Defined in: [src/model/ports/cli.port.ts:8](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L8)
45
+
46
+ Captured standard output.
@@ -0,0 +1,58 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: CliPort
3
+
4
+ ```ts
5
+ type CliPort = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/cli.port.ts:48](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L48)
9
+
10
+ ## Properties
11
+
12
+ ### exec
13
+
14
+ ```ts
15
+ exec: (args, cwd, env?, input?) => Promise<CliOutput>;
16
+ ```
17
+
18
+ Defined in: [src/model/ports/cli.port.ts:50](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L50)
19
+
20
+ Execute a command with the given arguments in the given working directory.
21
+
22
+ #### Parameters
23
+
24
+ | Parameter | Type |
25
+ | ------ | ------ |
26
+ | `args` | `string` |
27
+ | `cwd` | `string` |
28
+ | `env?` | [`CliEnv`](CliEnv.md) |
29
+ | `input?` | [`CliInput`](CliInput.md) |
30
+
31
+ #### Returns
32
+
33
+ `Promise`\<[`CliOutput`](CliOutput.md)\>
34
+
35
+ ***
36
+
37
+ ### watch
38
+
39
+ ```ts
40
+ watch: (args, cwd, options, env?) => Promise<CliOutput>;
41
+ ```
42
+
43
+ Defined in: [src/model/ports/cli.port.ts:53](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L53)
44
+
45
+ Run a long-running process and wait for a pattern or timeout.
46
+
47
+ #### Parameters
48
+
49
+ | Parameter | Type |
50
+ | ------ | ------ |
51
+ | `args` | `string` |
52
+ | `cwd` | `string` |
53
+ | `options` | [`ExecOptions`](ExecOptions.md) |
54
+ | `env?` | [`CliEnv`](CliEnv.md) |
55
+
56
+ #### Returns
57
+
58
+ `Promise`\<[`CliOutput`](CliOutput.md)\>
@@ -0,0 +1,144 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: CliSpecification\<DatabaseKey\>
3
+
4
+ ```ts
5
+ type CliSpecification<DatabaseKey> = object;
6
+ ```
7
+
8
+ Defined in: [src/model/chain/builder.ts:264](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L264)
9
+
10
+ The `cli` facet — command chain entry handed out by `specification.cli()`.
11
+ Setup methods chain; `.exec()` is the single terminal action (CONVENTIONS
12
+ B2) — `{ waitFor?, timeout? }` covers long-running processes.
13
+
14
+ ## Type Parameters
15
+
16
+ | Type Parameter | Default type |
17
+ | ------ | ------ |
18
+ | `DatabaseKey` *extends* `string` | `string` |
19
+
20
+ ## Properties
21
+
22
+ ### env
23
+
24
+ ```ts
25
+ env: (env) => CliSpecification<DatabaseKey>;
26
+ ```
27
+
28
+ Defined in: [src/model/chain/builder.ts:266](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L266)
29
+
30
+ Set environment variables on the child process. `$WORKDIR` expands; `null` unsets.
31
+
32
+ #### Parameters
33
+
34
+ | Parameter | Type |
35
+ | ------ | ------ |
36
+ | `env` | [`CliEnv`](CliEnv.md) |
37
+
38
+ #### Returns
39
+
40
+ `CliSpecification`\<`DatabaseKey`\>
41
+
42
+ ***
43
+
44
+ ### exec
45
+
46
+ ```ts
47
+ exec: (args?, options?) => Promise<CliResult>;
48
+ ```
49
+
50
+ Defined in: [src/model/chain/builder.ts:285](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L285)
51
+
52
+ Execute the command (or sequence of commands) and resolve with the
53
+ result. Called with no arguments (`cli.exec()`), the binary runs bare —
54
+ no CLI arguments. With `{ waitFor, timeout }`, the process is
55
+ long-running: it resolves when the pattern appears and is killed at the
56
+ timeout.
57
+
58
+ #### Parameters
59
+
60
+ | Parameter | Type |
61
+ | ------ | ------ |
62
+ | `args?` | `string` \| `string`[] |
63
+ | `options?` | [`ExecOptions`](ExecOptions.md) |
64
+
65
+ #### Returns
66
+
67
+ `Promise`\<[`CliResult`](../interfaces/CliResult.md)\>
68
+
69
+ ***
70
+
71
+ ### fixture
72
+
73
+ ```ts
74
+ fixture: (path) => CliSpecification<DatabaseKey>;
75
+ ```
76
+
77
+ Defined in: [src/model/chain/builder.ts:274](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L274)
78
+
79
+ Copy a fixture into the working directory before execution. The path is
80
+ feature-local (`<test-dir>/fixtures/<path>`) or, with a `$FIXTURES/`
81
+ prefix, from the shared pool at `<specs-root>/fixtures/`. A trailing
82
+ slash spreads a directory's contents into the cwd; without one a
83
+ directory (or file) is copied under its own name. Chained calls layer.
84
+
85
+ #### Parameters
86
+
87
+ | Parameter | Type |
88
+ | ------ | ------ |
89
+ | `path` | `string` |
90
+
91
+ #### Returns
92
+
93
+ `CliSpecification`\<`DatabaseKey`\>
94
+
95
+ ***
96
+
97
+ ### run
98
+
99
+ ```ts
100
+ run: (file, options?) => Promise<CliResult>;
101
+ ```
102
+
103
+ Defined in: [src/model/chain/builder.ts:293](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L293)
104
+
105
+ Run a `<case>.spec.yaml` document — its ground (fixtures, env sets,
106
+ servers) and every run, each asserted — and resolve with the LAST run's
107
+ result, so a `.test.ts` can add an assertion the document cannot express
108
+ (a directory golden, a grep). The path is relative to the test file's own
109
+ directory, where the document lives.
110
+
111
+ #### Parameters
112
+
113
+ | Parameter | Type |
114
+ | ------ | ------ |
115
+ | `file` | `string` |
116
+ | `options?` | [`LiterateRunFlags`](LiterateRunFlags.md) |
117
+
118
+ #### Returns
119
+
120
+ `Promise`\<[`CliResult`](../interfaces/CliResult.md)\>
121
+
122
+ ***
123
+
124
+ ### seed
125
+
126
+ ```ts
127
+ seed: (file, options?) => CliSpecification<DatabaseKey>;
128
+ ```
129
+
130
+ Defined in: [src/model/chain/builder.ts:276](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L276)
131
+
132
+ Queue a SQL seed file from `_seeds/` to run against a database before the action.
133
+
134
+ #### Parameters
135
+
136
+ | Parameter | Type |
137
+ | ------ | ------ |
138
+ | `file` | `string` |
139
+ | `options?` | \{ `database?`: `DatabaseKey`; \} |
140
+ | `options.database?` | `DatabaseKey` |
141
+
142
+ #### Returns
143
+
144
+ `CliSpecification`\<`DatabaseKey`\>
@@ -0,0 +1,134 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: CliSpecificationOptions\<Services\>
3
+
4
+ ```ts
5
+ type CliSpecificationOptions<Services> = object;
6
+ ```
7
+
8
+ Defined in: [src/facets/cli/cli.specification.ts:23](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L23)
9
+
10
+ Options for startCli \| specification.cli.
11
+
12
+ ## Type Parameters
13
+
14
+ | Type Parameter | Default type |
15
+ | ------ | ------ |
16
+ | `Services` *extends* [`ServiceRecord`](ServiceRecord.md) | [`ServiceRecord`](ServiceRecord.md) |
17
+
18
+ ## Properties
19
+
20
+ ### defaults?
21
+
22
+ ```ts
23
+ optional defaults?: CliEnv;
24
+ ```
25
+
26
+ Defined in: [src/facets/cli/cli.specification.ts:39](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L39)
27
+
28
+ Environment applied to EVERY run of this binary — the variables the
29
+ product needs to be deterministic at all (`TZ`, `NO_COLOR`, `LANG`,
30
+ a config home under the spec's own workdir). Stated once per app
31
+ instead of repeated on every chain and in every document; a chained
32
+ `.env()` and a document's `env:` both win over it.
33
+
34
+ ***
35
+
36
+ ### docker?
37
+
38
+ ```ts
39
+ optional docker?: DockerSpecConfig;
40
+ ```
41
+
42
+ Defined in: [src/facets/cli/cli.specification.ts:31](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L31)
43
+
44
+ Opt-in Docker awareness. When set, every spec generates a unique
45
+ test-run id, injects it into the child process env under `envVar`,
46
+ and exposes `.container(name)` accessors on the result that lazily
47
+ query Docker. Always declare results with `await using` so leaked
48
+ containers get force-removed at scope exit (CONVENTIONS B5).
49
+
50
+ ***
51
+
52
+ ### env?
53
+
54
+ ```ts
55
+ optional env?: Record<string, CliEnv>;
56
+ ```
57
+
58
+ Defined in: [src/facets/cli/cli.specification.ts:46](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L46)
59
+
60
+ Named environment SETS for `<case>.spec.yaml` documents. An `env:` entry
61
+ `frozen` applies the whole `frozen` record; `$WORKDIR` expands and `null`
62
+ unsets, exactly as in `.env()`. Declared once per app so a document
63
+ states WHICH ground it stands on, not how to build it.
64
+
65
+ ***
66
+
67
+ ### root?
68
+
69
+ ```ts
70
+ optional root?: string;
71
+ ```
72
+
73
+ Defined in: [src/facets/cli/cli.specification.ts:61](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L61)
74
+
75
+ Project-root override (CONVENTIONS A9) — the single meaning of `root`:
76
+ it anchors the local-bin resolution of the tested binary, in place of
77
+ the walk to the nearest `package.json`. It is NOT a fixtures root;
78
+ `.fixture()` resolves feature-local or `$FIXTURES/` paths on its own.
79
+
80
+ ***
81
+
82
+ ### serve?
83
+
84
+ ```ts
85
+ optional serve?: Record<string, LiterateServeRegistration>;
86
+ ```
87
+
88
+ Defined in: [src/facets/cli/cli.specification.ts:54](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L54)
89
+
90
+ Named servers a `<case>.spec.yaml` document may start (`serve: [mcp]`, or
91
+ `- mcp: { KEY: value }` to add env to that one). Each entry names the
92
+ shell `command`, the `ready` regex whose capture group holds the port the
93
+ server announces, the `url(port)` builder, and the `env` variable that
94
+ URL is bound to in every run's child.
95
+
96
+ ***
97
+
98
+ ### services?
99
+
100
+ ```ts
101
+ optional services?: Services;
102
+ ```
103
+
104
+ Defined in: [src/facets/cli/cli.specification.ts:68](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L68)
105
+
106
+ Named infrastructure record started via testcontainers. Connection
107
+ URLs are injected automatically into the child env: `<KEY>_URL` per
108
+ service, plus `DATABASE_URL` / `REDIS_URL` when unambiguous
109
+ (CONVENTIONS B6). `.env()` overrides.
110
+
111
+ ***
112
+
113
+ ### transform?
114
+
115
+ ```ts
116
+ optional transform?: (text) => string;
117
+ ```
118
+
119
+ Defined in: [src/facets/cli/cli.specification.ts:75](https://github.com/jterrazz/package-test/blob/main/src/facets/cli/cli.specification.ts#L75)
120
+
121
+ Escape hatch: normaliser applied to result.stdout / result.stderr
122
+ before every comparison, AFTER the default ANSI strip (CONVENTIONS
123
+ D6). Does NOT mutate the raw `.text` accessor. Prefer `{{token}}`
124
+ placeholders in fixtures.
125
+
126
+ #### Parameters
127
+
128
+ | Parameter | Type |
129
+ | ------ | ------ |
130
+ | `text` | `string` |
131
+
132
+ #### Returns
133
+
134
+ `string`