@jterrazz/test 16.0.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 (210) hide show
  1. package/dist/appium.adapter.js +59 -4
  2. package/dist/browser/index.js +88 -40
  3. package/dist/checker.js +272 -63
  4. package/dist/index.d.ts +33 -4
  5. package/dist/index.js +47 -24
  6. package/dist/oxlint.cjs +100 -27
  7. package/dist/oxlint.js +100 -27
  8. package/dist/playwright.adapter.js +14 -65
  9. package/dist/{ambiguity.js → substring-warning.js} +99 -1
  10. package/dist/vitest.js +71 -11
  11. package/docs/01-architecture.md +95 -0
  12. package/docs/02-developing.md +351 -0
  13. package/docs/03-testing.md +495 -0
  14. package/docs/04-operating.md +101 -0
  15. package/docs/05-module-tests.md +152 -0
  16. package/docs/06-integration.md +180 -0
  17. package/docs/07-component.md +246 -0
  18. package/docs/08-website.md +404 -0
  19. package/docs/09-mobile.md +270 -0
  20. package/docs/10-api.md +264 -0
  21. package/docs/11-jobs.md +157 -0
  22. package/docs/12-cli.md +677 -0
  23. package/docs/13-elements.md +242 -0
  24. package/docs/14-assertions.md +314 -0
  25. package/docs/15-tokens.md +253 -0
  26. package/docs/16-contracts.md +438 -0
  27. package/docs/17-services.md +188 -0
  28. package/docs/18-conventions.md +305 -0
  29. package/docs/19-linting.md +510 -0
  30. package/docs/README.md +36 -0
  31. package/docs/decisions/001-v9-conventions-on-three-channels.md +50 -0
  32. package/docs/decisions/002-the-statique-channel-holds-only-what-upstream-does-not.md +49 -0
  33. package/docs/decisions/003-a-rendered-component-is-a-facet-on-vitest-browser-mode.md +84 -0
  34. package/docs/decisions/004-a-module-against-real-services-or-a-golden-is-the-integration-facet.md +81 -0
  35. package/docs/decisions/005-the-doubles-ladder-is-closed.md +86 -0
  36. package/docs/decisions/006-the-catalogue-reaches-a-file-by-its-role.md +245 -0
  37. package/docs/decisions/007-compose-mode-leaves-the-package.md +53 -0
  38. package/docs/decisions/008-vitest-5-node-24-and-the-native-seams-as-optional-peers.md +75 -0
  39. package/docs/decisions/_template.md +22 -0
  40. package/docs/reference/classes/Matcher.md +120 -0
  41. package/docs/reference/classes/ProcessHandle.md +368 -0
  42. package/docs/reference/functions/defineContract.md +39 -0
  43. package/docs/reference/functions/defineContracts.md +36 -0
  44. package/docs/reference/functions/disabled.md +28 -0
  45. package/docs/reference/functions/enabled.md +20 -0
  46. package/docs/reference/functions/focused.md +26 -0
  47. package/docs/reference/functions/mockOf.md +79 -0
  48. package/docs/reference/functions/postgres.md +31 -0
  49. package/docs/reference/functions/process.md +33 -0
  50. package/docs/reference/functions/redis.md +28 -0
  51. package/docs/reference/functions/required.md +41 -0
  52. package/docs/reference/functions/selected.md +26 -0
  53. package/docs/reference/functions/sqlite.md +33 -0
  54. package/docs/reference/functions/testId.md +20 -0
  55. package/docs/reference/functions/text.md +40 -0
  56. package/docs/reference/functions/valued.md +28 -0
  57. package/docs/reference/functions/waitUntil.md +46 -0
  58. package/docs/reference/functions/within.md +29 -0
  59. package/docs/reference/index.md +196 -0
  60. package/docs/reference/interfaces/BaseResult.md +87 -0
  61. package/docs/reference/interfaces/CallResult.md +160 -0
  62. package/docs/reference/interfaces/CaptureScope.md +82 -0
  63. package/docs/reference/interfaces/CliResult.md +253 -0
  64. package/docs/reference/interfaces/ContainerAccessor.md +166 -0
  65. package/docs/reference/interfaces/DirectoryAccessor.md +33 -0
  66. package/docs/reference/interfaces/FetchResult.md +180 -0
  67. package/docs/reference/interfaces/FilesystemAccessor.md +46 -0
  68. package/docs/reference/interfaces/HttpResult.md +126 -0
  69. package/docs/reference/interfaces/JsonAccessor.md +46 -0
  70. package/docs/reference/interfaces/PageResult.md +356 -0
  71. package/docs/reference/interfaces/RenderResult.md +72 -0
  72. package/docs/reference/interfaces/RenderedText.md +110 -0
  73. package/docs/reference/interfaces/ResponseAccessor.md +47 -0
  74. package/docs/reference/interfaces/ScreenResult.md +128 -0
  75. package/docs/reference/interfaces/TableAccessor.md +26 -0
  76. package/docs/reference/interfaces/TextAccessor.md +96 -0
  77. package/docs/reference/type-aliases/ApiHandle.md +68 -0
  78. package/docs/reference/type-aliases/ApiSpecification.md +213 -0
  79. package/docs/reference/type-aliases/ApiSpecificationOptions.md +68 -0
  80. package/docs/reference/type-aliases/BrowserConsoleMessage.md +30 -0
  81. package/docs/reference/type-aliases/BrowserLinkElement.md +50 -0
  82. package/docs/reference/type-aliases/BrowserMetaElement.md +40 -0
  83. package/docs/reference/type-aliases/BrowserOpenOptions.md +87 -0
  84. package/docs/reference/type-aliases/BrowserPage.md +132 -0
  85. package/docs/reference/type-aliases/BrowserPort.md +51 -0
  86. package/docs/reference/type-aliases/CliEnv.md +11 -0
  87. package/docs/reference/type-aliases/CliHandle.md +80 -0
  88. package/docs/reference/type-aliases/CliInput.md +36 -0
  89. package/docs/reference/type-aliases/CliOutput.md +46 -0
  90. package/docs/reference/type-aliases/CliPort.md +58 -0
  91. package/docs/reference/type-aliases/CliSpecification.md +144 -0
  92. package/docs/reference/type-aliases/CliSpecificationOptions.md +134 -0
  93. package/docs/reference/type-aliases/ComponentChain.md +156 -0
  94. package/docs/reference/type-aliases/ComponentScenario.md +20 -0
  95. package/docs/reference/type-aliases/ComponentUi.md +47 -0
  96. package/docs/reference/type-aliases/ComponentVisitor.md +10 -0
  97. package/docs/reference/type-aliases/ContainerPort.md +113 -0
  98. package/docs/reference/type-aliases/Contract.md +68 -0
  99. package/docs/reference/type-aliases/ContractInput.md +13 -0
  100. package/docs/reference/type-aliases/ContractRequest.md +95 -0
  101. package/docs/reference/type-aliases/ContractResponder.md +23 -0
  102. package/docs/reference/type-aliases/ContractResponse.md +78 -0
  103. package/docs/reference/type-aliases/ContractResponseValue.md +13 -0
  104. package/docs/reference/type-aliases/Contracts.md +48 -0
  105. package/docs/reference/type-aliases/DatabaseKeys.md +16 -0
  106. package/docs/reference/type-aliases/DatabasePort.md +72 -0
  107. package/docs/reference/type-aliases/DeviceOpenOptions.md +46 -0
  108. package/docs/reference/type-aliases/DevicePort.md +51 -0
  109. package/docs/reference/type-aliases/DeviceScreen.md +32 -0
  110. package/docs/reference/type-aliases/DeviceTimeouts.md +39 -0
  111. package/docs/reference/type-aliases/DockerSpecConfig.md +43 -0
  112. package/docs/reference/type-aliases/DomMount.md +21 -0
  113. package/docs/reference/type-aliases/ElementKind.md +27 -0
  114. package/docs/reference/type-aliases/ElementMatch.md +74 -0
  115. package/docs/reference/type-aliases/ElementOptions.md +29 -0
  116. package/docs/reference/type-aliases/ElementRef.md +128 -0
  117. package/docs/reference/type-aliases/ExecOptions.md +37 -0
  118. package/docs/reference/type-aliases/FileAccessor.md +54 -0
  119. package/docs/reference/type-aliases/HonoApp.md +31 -0
  120. package/docs/reference/type-aliases/HttpContractFilter.md +49 -0
  121. package/docs/reference/type-aliases/HttpResponseInit.md +46 -0
  122. package/docs/reference/type-aliases/HttpStreamInit.md +58 -0
  123. package/docs/reference/type-aliases/IntegrationHandle.md +46 -0
  124. package/docs/reference/type-aliases/IntegrationSpecification.md +111 -0
  125. package/docs/reference/type-aliases/IntegrationSpecificationOptions.md +42 -0
  126. package/docs/reference/type-aliases/Intercept.md +19 -0
  127. package/docs/reference/type-aliases/InterceptOptions.md +28 -0
  128. package/docs/reference/type-aliases/InterceptScope.md +11 -0
  129. package/docs/reference/type-aliases/IsolationStrategy.md +75 -0
  130. package/docs/reference/type-aliases/JobHandle.md +34 -0
  131. package/docs/reference/type-aliases/JobsHandle.md +57 -0
  132. package/docs/reference/type-aliases/JobsResult.md +16 -0
  133. package/docs/reference/type-aliases/JobsSpecification.md +94 -0
  134. package/docs/reference/type-aliases/JobsSpecificationOptions.md +56 -0
  135. package/docs/reference/type-aliases/LandmarkKind.md +20 -0
  136. package/docs/reference/type-aliases/LiterateRunFlags.md +27 -0
  137. package/docs/reference/type-aliases/LiterateServeRegistration.md +70 -0
  138. package/docs/reference/type-aliases/MatchFixtureOptions.md +27 -0
  139. package/docs/reference/type-aliases/MatchableRequest.md +61 -0
  140. package/docs/reference/type-aliases/MatcherKind.md +34 -0
  141. package/docs/reference/type-aliases/MobileBackendOptions.md +28 -0
  142. package/docs/reference/type-aliases/MobileElementKind.md +14 -0
  143. package/docs/reference/type-aliases/MobileElementMatch.md +60 -0
  144. package/docs/reference/type-aliases/MobileElementRef.md +20 -0
  145. package/docs/reference/type-aliases/MobileHandle.md +65 -0
  146. package/docs/reference/type-aliases/MobileScenario.md +20 -0
  147. package/docs/reference/type-aliases/MobileSpecification.md +51 -0
  148. package/docs/reference/type-aliases/MobileSpecificationOptions.md +126 -0
  149. package/docs/reference/type-aliases/MobileVisitor.md +81 -0
  150. package/docs/reference/type-aliases/MockOfOptions.md +26 -0
  151. package/docs/reference/type-aliases/MockPort.md +10 -0
  152. package/docs/reference/type-aliases/PinnedClock.md +10 -0
  153. package/docs/reference/type-aliases/PostgresOptions.md +32 -0
  154. package/docs/reference/type-aliases/ProcessOptions.md +112 -0
  155. package/docs/reference/type-aliases/RedisOptions.md +20 -0
  156. package/docs/reference/type-aliases/RenderSubject.md +12 -0
  157. package/docs/reference/type-aliases/ScreenNode.md +67 -0
  158. package/docs/reference/type-aliases/ServerPort.md +36 -0
  159. package/docs/reference/type-aliases/ServerResponse.md +46 -0
  160. package/docs/reference/type-aliases/ServerSpec.md +21 -0
  161. package/docs/reference/type-aliases/ServiceHandle.md +216 -0
  162. package/docs/reference/type-aliases/ServiceRecord.md +12 -0
  163. package/docs/reference/type-aliases/SpecDocument.md +84 -0
  164. package/docs/reference/type-aliases/SpecEnvToken.md +21 -0
  165. package/docs/reference/type-aliases/SpecFileAssertion.md +27 -0
  166. package/docs/reference/type-aliases/SpecFixture.md +30 -0
  167. package/docs/reference/type-aliases/SpecKind.md +8 -0
  168. package/docs/reference/type-aliases/SpecRun.md +108 -0
  169. package/docs/reference/type-aliases/SpecServeEntry.md +40 -0
  170. package/docs/reference/type-aliases/SpecStream.md +32 -0
  171. package/docs/reference/type-aliases/SpecificationConfig.md +290 -0
  172. package/docs/reference/type-aliases/SqliteOptions.md +36 -0
  173. package/docs/reference/type-aliases/SseEvent.md +58 -0
  174. package/docs/reference/type-aliases/StreamBody.md +61 -0
  175. package/docs/reference/type-aliases/TextFilter.md +22 -0
  176. package/docs/reference/type-aliases/VisitScenario.md +20 -0
  177. package/docs/reference/type-aliases/Visitor.md +215 -0
  178. package/docs/reference/type-aliases/WaitUntilOptions.md +46 -0
  179. package/docs/reference/type-aliases/WebsiteBackendOptions.md +37 -0
  180. package/docs/reference/type-aliases/WebsiteHandle.md +51 -0
  181. package/docs/reference/type-aliases/WebsiteSpecification.md +118 -0
  182. package/docs/reference/type-aliases/WebsiteSpecificationOptions.md +40 -0
  183. package/docs/reference/variables/anthropic.md +19 -0
  184. package/docs/reference/variables/banner.md +10 -0
  185. package/docs/reference/variables/button.md +10 -0
  186. package/docs/reference/variables/clock.md +16 -0
  187. package/docs/reference/variables/complementary.md +10 -0
  188. package/docs/reference/variables/component.md +10 -0
  189. package/docs/reference/variables/content.md +10 -0
  190. package/docs/reference/variables/contentinfo.md +10 -0
  191. package/docs/reference/variables/dialog.md +10 -0
  192. package/docs/reference/variables/field.md +10 -0
  193. package/docs/reference/variables/form.md +10 -0
  194. package/docs/reference/variables/heading.md +10 -0
  195. package/docs/reference/variables/http.md +40 -0
  196. package/docs/reference/variables/intercept.md +11 -0
  197. package/docs/reference/variables/link.md +10 -0
  198. package/docs/reference/variables/listitem.md +10 -0
  199. package/docs/reference/variables/main.md +10 -0
  200. package/docs/reference/variables/match.md +8 -0
  201. package/docs/reference/variables/navigation.md +10 -0
  202. package/docs/reference/variables/openai.md +21 -0
  203. package/docs/reference/variables/option.md +17 -0
  204. package/docs/reference/variables/region.md +10 -0
  205. package/docs/reference/variables/row.md +10 -0
  206. package/docs/reference/variables/search.md +10 -0
  207. package/docs/reference/variables/specification.md +8 -0
  208. package/docs/reference/variables/status.md +10 -0
  209. package/docs/reference/variables/table.md +10 -0
  210. package/package.json +2 -1
@@ -0,0 +1,31 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: HonoApp
3
+
4
+ ```ts
5
+ type HonoApp = object;
6
+ ```
7
+
8
+ Defined in: [src/facets/api/api.specification.ts:20](https://github.com/jterrazz/package-test/blob/main/src/facets/api/api.specification.ts#L20)
9
+
10
+ Any object with a request method compatible with Hono's app.request().
11
+
12
+ ## Properties
13
+
14
+ ### request
15
+
16
+ ```ts
17
+ request: (path, init?) => Promise<Response> | Response;
18
+ ```
19
+
20
+ Defined in: [src/facets/api/api.specification.ts:21](https://github.com/jterrazz/package-test/blob/main/src/facets/api/api.specification.ts#L21)
21
+
22
+ #### Parameters
23
+
24
+ | Parameter | Type |
25
+ | ------ | ------ |
26
+ | `path` | `string` |
27
+ | `init?` | `RequestInit` |
28
+
29
+ #### Returns
30
+
31
+ `Promise`\<`Response`\> \| `Response`
@@ -0,0 +1,49 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: HttpContractFilter
3
+
4
+ ```ts
5
+ type HttpContractFilter = object;
6
+ ```
7
+
8
+ Defined in: [src/model/contracts/http.ts:18](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L18)
9
+
10
+ Request filters for the generic HTTP provider. Every field is a subset
11
+ constraint — a request matches when all provided fields match.
12
+
13
+ ## Properties
14
+
15
+ ### body?
16
+
17
+ ```ts
18
+ optional body?: object | RegExp | string;
19
+ ```
20
+
21
+ Defined in: [src/model/contracts/http.ts:24](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L24)
22
+
23
+ Body constraint. An object is a deep SUBSET match (toMatchObject-style)
24
+ whose leaf values may be `match.*` matchers; a string is a containment
25
+ test and a RegExp a `test()` over the raw text body.
26
+
27
+ ***
28
+
29
+ ### headers?
30
+
31
+ ```ts
32
+ optional headers?: Record<string, RegExp | string>;
33
+ ```
34
+
35
+ Defined in: [src/model/contracts/http.ts:26](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L26)
36
+
37
+ Header subset. Names are case-insensitive; string = exact value, RegExp = `test()`.
38
+
39
+ ***
40
+
41
+ ### query?
42
+
43
+ ```ts
44
+ optional query?: Record<string, RegExp | string>;
45
+ ```
46
+
47
+ Defined in: [src/model/contracts/http.ts:28](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L28)
48
+
49
+ Query-param subset. string = exact value, RegExp = `test()`.
@@ -0,0 +1,46 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: HttpResponseInit
3
+
4
+ ```ts
5
+ type HttpResponseInit = object;
6
+ ```
7
+
8
+ Defined in: [src/model/contracts/http.ts:77](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L77)
9
+
10
+ Init options shared by the response builders.
11
+
12
+ ## Properties
13
+
14
+ ### delay?
15
+
16
+ ```ts
17
+ optional delay?: number;
18
+ ```
19
+
20
+ Defined in: [src/model/contracts/http.ts:79](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L79)
21
+
22
+ Delay in ms before responding (for timeout testing).
23
+
24
+ ***
25
+
26
+ ### headers?
27
+
28
+ ```ts
29
+ optional headers?: Record<string, string>;
30
+ ```
31
+
32
+ Defined in: [src/model/contracts/http.ts:81](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L81)
33
+
34
+ Response headers, merged over the builder's own.
35
+
36
+ ***
37
+
38
+ ### status?
39
+
40
+ ```ts
41
+ optional status?: number;
42
+ ```
43
+
44
+ Defined in: [src/model/contracts/http.ts:83](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L83)
45
+
46
+ HTTP status code.
@@ -0,0 +1,58 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: HttpStreamInit
3
+
4
+ ```ts
5
+ type HttpStreamInit = object;
6
+ ```
7
+
8
+ Defined in: [src/model/contracts/http.ts:32](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L32)
9
+
10
+ Init options for a streamed reply.
11
+
12
+ ## Properties
13
+
14
+ ### contentType?
15
+
16
+ ```ts
17
+ optional contentType?: string;
18
+ ```
19
+
20
+ Defined in: [src/model/contracts/http.ts:34](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L34)
21
+
22
+ The `content-type` the stream is served under. Default `application/octet-stream`.
23
+
24
+ ***
25
+
26
+ ### delay?
27
+
28
+ ```ts
29
+ optional delay?: number;
30
+ ```
31
+
32
+ Defined in: [src/model/contracts/http.ts:36](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L36)
33
+
34
+ Milliseconds between two chunks. Default 0 — every chunk at once.
35
+
36
+ ***
37
+
38
+ ### headers?
39
+
40
+ ```ts
41
+ optional headers?: Record<string, string>;
42
+ ```
43
+
44
+ Defined in: [src/model/contracts/http.ts:38](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L38)
45
+
46
+ Response headers, merged over the builder's own.
47
+
48
+ ***
49
+
50
+ ### status?
51
+
52
+ ```ts
53
+ optional status?: number;
54
+ ```
55
+
56
+ Defined in: [src/model/contracts/http.ts:40](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/http.ts#L40)
57
+
58
+ HTTP status code. Default 200.
@@ -0,0 +1,46 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: IntegrationHandle\<Services, DatabaseKey\>
3
+
4
+ ```ts
5
+ type IntegrationHandle<Services, DatabaseKey> = object;
6
+ ```
7
+
8
+ Defined in: [src/facets/integration/integration.specification.ts:34](https://github.com/jterrazz/package-test/blob/main/src/facets/integration/integration.specification.ts#L34)
9
+
10
+ The record returned by startIntegration \| specification.integration.
11
+ Destructure with the canonical names (CONVENTIONS A3):
12
+
13
+ const { integration, cleanup } = await specification.integration(…);
14
+
15
+ ## Type Parameters
16
+
17
+ | Type Parameter | Default type |
18
+ | ------ | ------ |
19
+ | `Services` *extends* [`ServiceRecord`](ServiceRecord.md) | [`ServiceRecord`](ServiceRecord.md) |
20
+ | `DatabaseKey` *extends* `string` | `string` |
21
+
22
+ ## Properties
23
+
24
+ ### cleanup
25
+
26
+ ```ts
27
+ cleanup: () => Promise<void>;
28
+ ```
29
+
30
+ Defined in: [src/facets/integration/integration.specification.ts:39](https://github.com/jterrazz/package-test/blob/main/src/facets/integration/integration.specification.ts#L39)
31
+
32
+ Stop all infrastructure started by this specification.
33
+
34
+ #### Returns
35
+
36
+ `Promise`\<`void`\>
37
+
38
+ ***
39
+
40
+ ### integration
41
+
42
+ ```ts
43
+ integration: IntegrationSpecification<Services, DatabaseKey>;
44
+ ```
45
+
46
+ Defined in: [src/facets/integration/integration.specification.ts:40](https://github.com/jterrazz/package-test/blob/main/src/facets/integration/integration.specification.ts#L40)
@@ -0,0 +1,111 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: IntegrationSpecification\<Services, DatabaseKey\>
3
+
4
+ ```ts
5
+ type IntegrationSpecification<Services, DatabaseKey> = object;
6
+ ```
7
+
8
+ Defined in: [src/model/chain/builder.ts:237](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L237)
9
+
10
+ The `integration` facet — the in-process chain handed out by
11
+ `specification.integration()`.
12
+
13
+ The subject is a MODULE, not an entry: no HTTP, no binary, no page. What
14
+ makes it a spec rather than a module test is what it stands on — real
15
+ services, declared contracts, a golden — so it takes the same setups as
16
+ every other facet and ends on the one action a module has: being called.
17
+
18
+ ## Type Parameters
19
+
20
+ | Type Parameter | Default type |
21
+ | ------ | ------ |
22
+ | `Services` *extends* `Record`\<`string`, `unknown`\> | `Record`\<`string`, `unknown`\> |
23
+ | `DatabaseKey` *extends* `string` | `string` |
24
+
25
+ ## Properties
26
+
27
+ ### call
28
+
29
+ ```ts
30
+ call: <T>(subject) => Promise<CallResult<T>>;
31
+ ```
32
+
33
+ Defined in: [src/model/chain/builder.ts:256](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L256)
34
+
35
+ Call the module and resolve with what it produced. The started services
36
+ record is handed in, so the subject is constructed with the real
37
+ connection strings rather than with a double.
38
+
39
+ #### Type Parameters
40
+
41
+ | Type Parameter |
42
+ | ------ |
43
+ | `T` |
44
+
45
+ #### Parameters
46
+
47
+ | Parameter | Type |
48
+ | ------ | ------ |
49
+ | `subject` | (`services`) => `Promise`\<`T`\> \| `T` |
50
+
51
+ #### Returns
52
+
53
+ `Promise`\<[`CallResult`](../interfaces/CallResult.md)\<`T`\>\>
54
+
55
+ ***
56
+
57
+ ### clock
58
+
59
+ ```ts
60
+ clock: (iso) => IntegrationSpecification<Services, DatabaseKey>;
61
+ ```
62
+
63
+ Defined in: [src/model/chain/builder.ts:242](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L242)
64
+
65
+ Pin the module's `Date` at `iso` for this chain.
66
+
67
+ #### Parameters
68
+
69
+ | Parameter | Type |
70
+ | ------ | ------ |
71
+ | `iso` | `string` |
72
+
73
+ #### Returns
74
+
75
+ `IntegrationSpecification`\<`Services`, `DatabaseKey`\>
76
+
77
+ ***
78
+
79
+ ### intercept
80
+
81
+ ```ts
82
+ intercept: InterceptMethod<IntegrationSpecification<Services, DatabaseKey>>;
83
+ ```
84
+
85
+ Defined in: [src/model/chain/builder.ts:244](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L244)
86
+
87
+ Declare outgoing calls — a contract, a list, a composite, or an inline request + response pair.
88
+
89
+ ***
90
+
91
+ ### seed
92
+
93
+ ```ts
94
+ seed: (file, options?) => IntegrationSpecification<Services, DatabaseKey>;
95
+ ```
96
+
97
+ Defined in: [src/model/chain/builder.ts:246](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L246)
98
+
99
+ Queue a SQL seed file from `_seeds/` to run before the call.
100
+
101
+ #### Parameters
102
+
103
+ | Parameter | Type |
104
+ | ------ | ------ |
105
+ | `file` | `string` |
106
+ | `options?` | \{ `database?`: `DatabaseKey`; \} |
107
+ | `options.database?` | `DatabaseKey` |
108
+
109
+ #### Returns
110
+
111
+ `IntegrationSpecification`\<`Services`, `DatabaseKey`\>
@@ -0,0 +1,42 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: IntegrationSpecificationOptions\<Services\>
3
+
4
+ ```ts
5
+ type IntegrationSpecificationOptions<Services> = object;
6
+ ```
7
+
8
+ Defined in: [src/facets/integration/integration.specification.ts:17](https://github.com/jterrazz/package-test/blob/main/src/facets/integration/integration.specification.ts#L17)
9
+
10
+ Options for startIntegration \| specification.integration.
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
+ ### root?
21
+
22
+ ```ts
23
+ optional root?: string;
24
+ ```
25
+
26
+ Defined in: [src/facets/integration/integration.specification.ts:19](https://github.com/jterrazz/package-test/blob/main/src/facets/integration/integration.specification.ts#L19)
27
+
28
+ Project-root override — see the `root` option of `specification.api()`.
29
+
30
+ ***
31
+
32
+ ### services?
33
+
34
+ ```ts
35
+ optional services?: Services;
36
+ ```
37
+
38
+ Defined in: [src/facets/integration/integration.specification.ts:25](https://github.com/jterrazz/package-test/blob/main/src/facets/integration/integration.specification.ts#L25)
39
+
40
+ Named infrastructure the module is specified AGAINST — a real database,
41
+ a real cache, a `process()` it talks to. Omit it for the other half of
42
+ the facet: a pure module whose oracle is a golden.
@@ -0,0 +1,19 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: Intercept
3
+
4
+ ```ts
5
+ type Intercept = (contracts, options?) => Promise<InterceptScope> & (request, response, options?) => Promise<InterceptScope>;
6
+ ```
7
+
8
+ Defined in: [src/model/contracts/intercept.ts:54](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/intercept.ts#L54)
9
+
10
+ The module-scope network double. Resolves once the engine is listening —
11
+ which is why it is a promise, and why the canonical form awaits it:
12
+
13
+ ```typescript
14
+ await using _ = await intercept(http.get(url), http.json({ ok: true }));
15
+ ```
16
+
17
+ Without that `await` the subject could reach the real network before the
18
+ first handler is in place, so the shape refuses the racy spelling: a promise
19
+ is not an `AsyncDisposable`, and the compiler says so.
@@ -0,0 +1,28 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: InterceptOptions
3
+
4
+ ```ts
5
+ type InterceptOptions = object;
6
+ ```
7
+
8
+ Defined in: [src/model/contracts/intercept.ts:29](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/intercept.ts#L29)
9
+
10
+ What a scope may state about the network it declares.
11
+
12
+ ## Properties
13
+
14
+ ### origin?
15
+
16
+ ```ts
17
+ optional origin?: string;
18
+ ```
19
+
20
+ Defined in: [src/model/contracts/intercept.ts:39](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/intercept.ts#L39)
21
+
22
+ The base a RELATIVE request resolves against, for the life of the scope.
23
+
24
+ A module that calls `fetch('/api/posts')` is browser code: under node the
25
+ URL cannot be parsed at all, so the request fails before any contract can
26
+ answer it and the test's only way out was to replace `fetch` itself. With
27
+ an origin stated, the relative call resolves here and the declared
28
+ contracts — path form or absolute — match it as they would any other.
@@ -0,0 +1,11 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: InterceptScope
3
+
4
+ ```ts
5
+ type InterceptScope = AsyncDisposable;
6
+ ```
7
+
8
+ Defined in: [src/model/contracts/intercept.ts:26](https://github.com/jterrazz/package-test/blob/main/src/model/contracts/intercept.ts#L26)
9
+
10
+ One block's worth of declared network. Disposed at the end of the scope that
11
+ declared it: the handlers are dropped, and an unmatched request is thrown.
@@ -0,0 +1,75 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: IsolationStrategy
3
+
4
+ ```ts
5
+ type IsolationStrategy = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/isolation.port.ts:11](https://github.com/jterrazz/package-test/blob/main/src/model/ports/isolation.port.ts#L11)
9
+
10
+ Strategy for isolating service state across parallel test workers.
11
+
12
+ Each service handle provides an isolation strategy. The framework
13
+ calls `acquire()` once per vitest worker, `reset()` before each
14
+ `spec.run()`, and `release()` when the worker shuts down.
15
+
16
+ Implement this interface to support new service types (e.g. MongoDB,
17
+ Elasticsearch, S3).
18
+
19
+ ## Properties
20
+
21
+ ### acquire
22
+
23
+ ```ts
24
+ acquire: (workerId) => Promise<void>;
25
+ ```
26
+
27
+ Defined in: [src/model/ports/isolation.port.ts:19](https://github.com/jterrazz/package-test/blob/main/src/model/ports/isolation.port.ts#L19)
28
+
29
+ Create an isolated namespace for this worker.
30
+ Called once when the worker starts — e.g. clone a template database,
31
+ set a Redis key prefix.
32
+
33
+ #### Parameters
34
+
35
+ | Parameter | Type | Description |
36
+ | ------ | ------ | ------ |
37
+ | `workerId` | `string` | Unique identifier for this vitest worker. |
38
+
39
+ #### Returns
40
+
41
+ `Promise`\<`void`\>
42
+
43
+ ***
44
+
45
+ ### release
46
+
47
+ ```ts
48
+ release: () => Promise<void>;
49
+ ```
50
+
51
+ Defined in: [src/model/ports/isolation.port.ts:31](https://github.com/jterrazz/package-test/blob/main/src/model/ports/isolation.port.ts#L31)
52
+
53
+ Tear down the isolated namespace.
54
+ Called once when the worker shuts down — e.g. drop the cloned database.
55
+
56
+ #### Returns
57
+
58
+ `Promise`\<`void`\>
59
+
60
+ ***
61
+
62
+ ### reset
63
+
64
+ ```ts
65
+ reset: () => Promise<void>;
66
+ ```
67
+
68
+ Defined in: [src/model/ports/isolation.port.ts:25](https://github.com/jterrazz/package-test/blob/main/src/model/ports/isolation.port.ts#L25)
69
+
70
+ Fast reset within the namespace between `spec.run()` calls.
71
+ E.g. truncate tables (without dropping the database).
72
+
73
+ #### Returns
74
+
75
+ `Promise`\<`void`\>
@@ -0,0 +1,34 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: JobHandle
3
+
4
+ ```ts
5
+ type JobHandle = object;
6
+ ```
7
+
8
+ Defined in: [src/model/chain/builder.ts:36](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L36)
9
+
10
+ A named job that can be triggered via jobs.trigger().
11
+
12
+ ## Properties
13
+
14
+ ### execute
15
+
16
+ ```ts
17
+ execute: () => Promise<void>;
18
+ ```
19
+
20
+ Defined in: [src/model/chain/builder.ts:38](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L38)
21
+
22
+ #### Returns
23
+
24
+ `Promise`\<`void`\>
25
+
26
+ ***
27
+
28
+ ### name
29
+
30
+ ```ts
31
+ name: string;
32
+ ```
33
+
34
+ Defined in: [src/model/chain/builder.ts:37](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L37)
@@ -0,0 +1,57 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: JobsHandle\<DatabaseKey\>
3
+
4
+ ```ts
5
+ type JobsHandle<DatabaseKey> = object;
6
+ ```
7
+
8
+ Defined in: [src/facets/jobs/jobs.specification.ts:37](https://github.com/jterrazz/package-test/blob/main/src/facets/jobs/jobs.specification.ts#L37)
9
+
10
+ The record returned by startJobs \| specification.jobs. Destructure
11
+ with the canonical names (CONVENTIONS A3):
12
+
13
+ const { jobs, cleanup } = await specification.jobs(…);
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/jobs/jobs.specification.ts:39](https://github.com/jterrazz/package-test/blob/main/src/facets/jobs/jobs.specification.ts#L39)
30
+
31
+ Stop all infrastructure started by this specification.
32
+
33
+ #### Returns
34
+
35
+ `Promise`\<`void`\>
36
+
37
+ ***
38
+
39
+ ### jobs
40
+
41
+ ```ts
42
+ jobs: JobsSpecification<DatabaseKey>;
43
+ ```
44
+
45
+ Defined in: [src/facets/jobs/jobs.specification.ts:40](https://github.com/jterrazz/package-test/blob/main/src/facets/jobs/jobs.specification.ts#L40)
46
+
47
+ ***
48
+
49
+ ### orchestrator
50
+
51
+ ```ts
52
+ orchestrator: null | Orchestrator;
53
+ ```
54
+
55
+ Defined in: [src/facets/jobs/jobs.specification.ts:42](https://github.com/jterrazz/package-test/blob/main/src/facets/jobs/jobs.specification.ts#L42)
56
+
57
+ The orchestrator managing the test infrastructure lifecycle.
@@ -0,0 +1,16 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: JobsResult
3
+
4
+ ```ts
5
+ type JobsResult = Omit<BaseResult, "directory" | "file">;
6
+ ```
7
+
8
+ Defined in: [src/model/chain/builder.ts:214](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L214)
9
+
10
+ What a triggered job HANDS BACK.
11
+
12
+ A job writes to a database, a cache, a queue — never to a working directory
13
+ the spec then walks, because a job has none: it runs in this process, where
14
+ the only filesystem is the repository's. So the two accessors that read one
15
+ (`file()`, `directory()`) are not on this result. A pipeline that really
16
+ produces files is a binary, and `specification.cli()` is its facet.