@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,16 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: DatabaseKeys\<Services\>
3
+
4
+ ```ts
5
+ type DatabaseKeys<Services> = { [K in keyof Services]: Services[K] extends DatabasePort ? K & string : never }[keyof Services];
6
+ ```
7
+
8
+ Defined in: [src/model/chain/services.ts:19](https://github.com/jterrazz/package-test/blob/main/src/model/chain/services.ts#L19)
9
+
10
+ Keys of a services record whose handles are databases.
11
+
12
+ ## Type Parameters
13
+
14
+ | Type Parameter |
15
+ | ------ |
16
+ | `Services` *extends* [`ServiceRecord`](ServiceRecord.md) |
@@ -0,0 +1,72 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: DatabasePort
3
+
4
+ ```ts
5
+ type DatabasePort = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/database.port.ts:5](https://github.com/jterrazz/package-test/blob/main/src/model/ports/database.port.ts#L5)
9
+
10
+ Abstract database interface for specification runners.
11
+ Implement this to plug in your database stack (e.g. Postgres, SQLite).
12
+
13
+ ## Properties
14
+
15
+ ### query
16
+
17
+ ```ts
18
+ query: (table, columns) => Promise<unknown[][]>;
19
+ ```
20
+
21
+ Defined in: [src/model/ports/database.port.ts:10](https://github.com/jterrazz/package-test/blob/main/src/model/ports/database.port.ts#L10)
22
+
23
+ Query a table and return rows as arrays of values.
24
+
25
+ #### Parameters
26
+
27
+ | Parameter | Type |
28
+ | ------ | ------ |
29
+ | `table` | `string` |
30
+ | `columns` | `string`[] |
31
+
32
+ #### Returns
33
+
34
+ `Promise`\<`unknown`[][]\>
35
+
36
+ ***
37
+
38
+ ### reset
39
+
40
+ ```ts
41
+ reset: () => Promise<void>;
42
+ ```
43
+
44
+ Defined in: [src/model/ports/database.port.ts:13](https://github.com/jterrazz/package-test/blob/main/src/model/ports/database.port.ts#L13)
45
+
46
+ Reset database to clean state between tests.
47
+
48
+ #### Returns
49
+
50
+ `Promise`\<`void`\>
51
+
52
+ ***
53
+
54
+ ### seed
55
+
56
+ ```ts
57
+ seed: (sql) => Promise<void>;
58
+ ```
59
+
60
+ Defined in: [src/model/ports/database.port.ts:7](https://github.com/jterrazz/package-test/blob/main/src/model/ports/database.port.ts#L7)
61
+
62
+ Execute raw SQL (for seeding test data).
63
+
64
+ #### Parameters
65
+
66
+ | Parameter | Type |
67
+ | ------ | ------ |
68
+ | `sql` | `string` |
69
+
70
+ #### Returns
71
+
72
+ `Promise`\<`void`\>
@@ -0,0 +1,46 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: DeviceOpenOptions
3
+
4
+ ```ts
5
+ type DeviceOpenOptions = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/device.port.ts:89](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L89)
9
+
10
+ Per-open options forwarded to the device session.
11
+
12
+ ## Properties
13
+
14
+ ### bundleId
15
+
16
+ ```ts
17
+ bundleId: string;
18
+ ```
19
+
20
+ Defined in: [src/model/ports/device.port.ts:91](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L91)
21
+
22
+ The app under test — terminated and relaunched for a fresh, deterministic state.
23
+
24
+ ***
25
+
26
+ ### deepLink?
27
+
28
+ ```ts
29
+ optional deepLink?: string;
30
+ ```
31
+
32
+ Defined in: [src/model/ports/device.port.ts:93](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L93)
33
+
34
+ Deep link applied after the relaunch (`news://events`); absent opens the app plainly.
35
+
36
+ ***
37
+
38
+ ### scenario?
39
+
40
+ ```ts
41
+ optional scenario?: MobileScenario;
42
+ ```
43
+
44
+ Defined in: [src/model/ports/device.port.ts:95](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L95)
45
+
46
+ The interaction scenario to run after launch; the capture reflects the final state.
@@ -0,0 +1,51 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: DevicePort
3
+
4
+ ```ts
5
+ type DevicePort = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/device.port.ts:123](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L123)
9
+
10
+ Abstract device interface for the mobile specification runner.
11
+ One implementation lives in `integrations/appium/` — a single driver
12
+ session per runner, created on the first `open()` and reused; each open
13
+ terminates and relaunches the app for a deterministic fresh state.
14
+
15
+ ## Properties
16
+
17
+ ### close
18
+
19
+ ```ts
20
+ close: () => Promise<void>;
21
+ ```
22
+
23
+ Defined in: [src/model/ports/device.port.ts:125](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L125)
24
+
25
+ End the driver session (idempotent).
26
+
27
+ #### Returns
28
+
29
+ `Promise`\<`void`\>
30
+
31
+ ***
32
+
33
+ ### open
34
+
35
+ ```ts
36
+ open: (options) => Promise<DeviceScreen>;
37
+ ```
38
+
39
+ Defined in: [src/model/ports/device.port.ts:127](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L127)
40
+
41
+ Relaunch the app, apply the deep link, run the scenario, capture the final screen.
42
+
43
+ #### Parameters
44
+
45
+ | Parameter | Type |
46
+ | ------ | ------ |
47
+ | `options` | [`DeviceOpenOptions`](DeviceOpenOptions.md) |
48
+
49
+ #### Returns
50
+
51
+ `Promise`\<[`DeviceScreen`](DeviceScreen.md)\>
@@ -0,0 +1,32 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: DeviceScreen
3
+
4
+ ```ts
5
+ type DeviceScreen = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/device.port.ts:83](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L83)
9
+
10
+ The screen captured by a device open — the FINAL state when a scenario
11
+ ran. The tree is the projected page source; `texts` are the visible
12
+ labels/values in document order, consecutive duplicates collapsed.
13
+
14
+ ## Properties
15
+
16
+ ### texts
17
+
18
+ ```ts
19
+ texts: string[];
20
+ ```
21
+
22
+ Defined in: [src/model/ports/device.port.ts:84](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L84)
23
+
24
+ ***
25
+
26
+ ### tree
27
+
28
+ ```ts
29
+ tree: ScreenNode;
30
+ ```
31
+
32
+ Defined in: [src/model/ports/device.port.ts:85](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L85)
@@ -0,0 +1,39 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: DeviceTimeouts
3
+
4
+ ```ts
5
+ type DeviceTimeouts = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/device.port.ts:104](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L104)
9
+
10
+ How long a device session waits, in milliseconds. Every field is optional
11
+ and falls back to the framework's own default, so a runner states only the
12
+ wait it needs to move — the defaults suit a release build, and a project
13
+ that drives a DEV build pays for its bundler's cold boot.
14
+
15
+ ## Properties
16
+
17
+ ### action?
18
+
19
+ ```ts
20
+ optional action?: number;
21
+ ```
22
+
23
+ Defined in: [src/model/ports/device.port.ts:109](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L109)
24
+
25
+ How long every verb polls for a visible match before refusing.
26
+ Default: `30_000` — enough for a cold app boot on a release bundle.
27
+
28
+ ***
29
+
30
+ ### launch?
31
+
32
+ ```ts
33
+ optional launch?: number;
34
+ ```
35
+
36
+ Defined in: [src/model/ports/device.port.ts:114](https://github.com/jterrazz/package-test/blob/main/src/model/ports/device.port.ts#L114)
37
+
38
+ How long the FIRST session waits for WebDriverAgent to build and
39
+ launch on the simulator. Default: `240_000`.
@@ -0,0 +1,43 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: DockerSpecConfig
3
+
4
+ ```ts
5
+ type DockerSpecConfig = object;
6
+ ```
7
+
8
+ Defined in: [src/model/chain/builder.ts:47](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L47)
9
+
10
+ Configuration for the docker-aware cli mode. When set on
11
+ [SpecificationConfig](SpecificationConfig.md), the cli runner generates a test-run id, injects
12
+ it into the child env under `envVar`, then queries Docker for every
13
+ container carrying `testRunLabel=<id>` after the command exits.
14
+
15
+ ## Properties
16
+
17
+ ### envVar
18
+
19
+ ```ts
20
+ envVar: string;
21
+ ```
22
+
23
+ Defined in: [src/model/chain/builder.ts:48](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L48)
24
+
25
+ ***
26
+
27
+ ### nameLabel
28
+
29
+ ```ts
30
+ nameLabel: string;
31
+ ```
32
+
33
+ Defined in: [src/model/chain/builder.ts:49](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L49)
34
+
35
+ ***
36
+
37
+ ### testRunLabel
38
+
39
+ ```ts
40
+ testRunLabel: string;
41
+ ```
42
+
43
+ Defined in: [src/model/chain/builder.ts:50](https://github.com/jterrazz/package-test/blob/main/src/model/chain/builder.ts#L50)
@@ -0,0 +1,21 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: DomMount
3
+
4
+ ```ts
5
+ type DomMount = (container) => (() => void) | void;
6
+ ```
7
+
8
+ Defined in: [src/seams/vitest-browser/ui.ts:18](https://github.com/jterrazz/package-test/blob/main/src/seams/vitest-browser/ui.ts#L18)
9
+
10
+ A vanilla DOM subject: a function handed the container it must fill. Its
11
+ optional return is the teardown, the way a DOM library states one.
12
+
13
+ ## Parameters
14
+
15
+ | Parameter | Type |
16
+ | ------ | ------ |
17
+ | `container` | `HTMLElement` |
18
+
19
+ ## Returns
20
+
21
+ (() => `void`) \| `void`
@@ -0,0 +1,27 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: ElementKind
3
+
4
+ ```ts
5
+ type ElementKind =
6
+ | "button"
7
+ | "dialog"
8
+ | "field"
9
+ | "heading"
10
+ | "link"
11
+ | "listitem"
12
+ | "option"
13
+ | "row"
14
+ | "status"
15
+ | "table"
16
+ | "testId"
17
+ | "text";
18
+ ```
19
+
20
+ Defined in: [src/model/ports/browser.port.ts:24](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L24)
21
+
22
+ The interactive/textual element kinds — what a visitor actually acts on.
23
+
24
+ `dialog`, `status`, `table`, `row`, `listitem` and `option` are ARIA roles
25
+ like the landmarks, but they are not CONTAINERS of a page: they are things a
26
+ visitor reads and acts on, and they are the roles the estate's UI specs were
27
+ already reaching for through `getByRole` or, worse, through `.first()`.
@@ -0,0 +1,74 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: ElementMatch
3
+
4
+ ```ts
5
+ type ElementMatch = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/browser.port.ts:100](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L100)
9
+
10
+ One candidate captured when a descriptor matched more than one element —
11
+ the evidence the ambiguity error enumerates so the author can disambiguate
12
+ without opening a browser.
13
+
14
+ ## Properties
15
+
16
+ ### accessibleName?
17
+
18
+ ```ts
19
+ optional accessibleName?: string;
20
+ ```
21
+
22
+ Defined in: [src/model/ports/browser.port.ts:106](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L106)
23
+
24
+ The accessible name, when it differs from the text — an `aria-label` is
25
+ what a role descriptor MATCHED on, and printing the text alone sends the
26
+ author to disambiguate a name they cannot see.
27
+
28
+ ***
29
+
30
+ ### context?
31
+
32
+ ```ts
33
+ optional context?: string;
34
+ ```
35
+
36
+ Defined in: [src/model/ports/browser.port.ts:108](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L108)
37
+
38
+ Nearest landmark ancestor (`nav`, `footer`, `main`…), when there is one.
39
+
40
+ ***
41
+
42
+ ### detail?
43
+
44
+ ```ts
45
+ optional detail?: string;
46
+ ```
47
+
48
+ Defined in: [src/model/ports/browser.port.ts:110](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L110)
49
+
50
+ The attribute that disambiguates most — `href` for links, `name` for fields.
51
+
52
+ ***
53
+
54
+ ### tag
55
+
56
+ ```ts
57
+ tag: string;
58
+ ```
59
+
60
+ Defined in: [src/model/ports/browser.port.ts:112](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L112)
61
+
62
+ Tag name, lower-cased.
63
+
64
+ ***
65
+
66
+ ### text
67
+
68
+ ```ts
69
+ text: string;
70
+ ```
71
+
72
+ Defined in: [src/model/ports/browser.port.ts:114](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L114)
73
+
74
+ Text content, whitespace-collapsed and truncated.
@@ -0,0 +1,29 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: ElementOptions
3
+
4
+ ```ts
5
+ type ElementOptions = object;
6
+ ```
7
+
8
+ Defined in: [src/model/elements/elements.ts:16](https://github.com/jterrazz/package-test/blob/main/src/model/elements/elements.ts#L16)
9
+
10
+ Options accepted by every named descriptor.
11
+
12
+ ## Properties
13
+
14
+ ### exact?
15
+
16
+ ```ts
17
+ optional exact?: boolean;
18
+ ```
19
+
20
+ Defined in: [src/model/elements/elements.ts:27](https://github.com/jterrazz/package-test/blob/main/src/model/elements/elements.ts#L27)
21
+
22
+ Match the accessible name as a whole string. `true` by default since
23
+ 16.0.
24
+
25
+ A substring match is what a person does NOT mean: `link('Articles')`
26
+ designated "Read Articles" as readily as "Articles", so a test could pass
27
+ for years against the element beside the one it named. `{ exact: false }`
28
+ is the opt-out, for a name that genuinely carries a variable part the
29
+ test does not control.
@@ -0,0 +1,128 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: ElementRef
3
+
4
+ ```ts
5
+ type ElementRef = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/browser.port.ts:47](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L47)
9
+
10
+ A user-facing element descriptor — pure data, built by the element
11
+ vocabulary (`button()`, `link()`, `field()`, …) and translated into
12
+ concrete locators by the browser integration. CSS/XPath selectors are
13
+ deliberately not expressible: user-facing elements are the only surface.
14
+
15
+ A descriptor must designate exactly ONE element at action time; see
16
+ [ElementMatch](ElementMatch.md) and CONVENTIONS W3.
17
+
18
+ ## Properties
19
+
20
+ ### disabled?
21
+
22
+ ```ts
23
+ optional disabled?: boolean;
24
+ ```
25
+
26
+ Defined in: [src/model/ports/browser.port.ts:71](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L71)
27
+
28
+ Narrows to "and it is (not) accepting input" — built by `disabled(x)` /
29
+ `enabled(x)`. Like `focused`, a STATE the vocabulary can already name the
30
+ element of; unlike it, one the ARIA tree carries too (`[disabled]`), so
31
+ this modifier is what names the ONE control a test is about, and it
32
+ reaches the direction a behavioural substitute cannot — clicking a
33
+ disabled control is a timeout, never an answer.
34
+
35
+ ***
36
+
37
+ ### exact?
38
+
39
+ ```ts
40
+ optional exact?: boolean;
41
+ ```
42
+
43
+ Defined in: [src/model/ports/browser.port.ts:56](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L56)
44
+
45
+ Match the accessible name as a whole string rather than a substring.
46
+
47
+ ABSENT means "the author said nothing", which the adapters read as the
48
+ default — exact — while keeping the information that no choice was made,
49
+ so a name that matches only as a substring can be reported once with the
50
+ transitional warning.
51
+
52
+ ***
53
+
54
+ ### focused?
55
+
56
+ ```ts
57
+ optional focused?: boolean;
58
+ ```
59
+
60
+ Defined in: [src/model/ports/browser.port.ts:62](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L62)
61
+
62
+ Assert about the element's FOCUS rather than its presence — built by
63
+ `focused(element)`. The accessibility tree carries no focus state, so
64
+ where the keyboard is cannot be goldened; it is asserted by a verb.
65
+
66
+ ***
67
+
68
+ ### kind
69
+
70
+ ```ts
71
+ kind: ElementKind | LandmarkKind;
72
+ ```
73
+
74
+ Defined in: [src/model/ports/browser.port.ts:72](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L72)
75
+
76
+ ***
77
+
78
+ ### name?
79
+
80
+ ```ts
81
+ optional name?: string;
82
+ ```
83
+
84
+ Defined in: [src/model/ports/browser.port.ts:74](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L74)
85
+
86
+ Landmarks may be anonymous (`main()`, `banner()`); everything else is named.
87
+
88
+ ***
89
+
90
+ ### scope?
91
+
92
+ ```ts
93
+ optional scope?: ElementRef;
94
+ ```
95
+
96
+ Defined in: [src/model/ports/browser.port.ts:92](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L92)
97
+
98
+ Restrict the search to the elements of another descriptor — built by
99
+ `within(scope, target)`. Chains: a scope may itself carry a scope.
100
+
101
+ ***
102
+
103
+ ### selected?
104
+
105
+ ```ts
106
+ optional selected?: boolean;
107
+ ```
108
+
109
+ Defined in: [src/model/ports/browser.port.ts:81](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L81)
110
+
111
+ Narrows to "and it is (not) the chosen one" — built by `selected(x)`.
112
+ An option of a COLLAPSED select is in the tree and in the document, and
113
+ it has no box on the screen, so this facet of it is read from the node
114
+ (`:checked`) rather than from what a visitor could point at.
115
+
116
+ ***
117
+
118
+ ### value?
119
+
120
+ ```ts
121
+ optional value?: string;
122
+ ```
123
+
124
+ Defined in: [src/model/ports/browser.port.ts:87](https://github.com/jterrazz/package-test/blob/main/src/model/ports/browser.port.ts#L87)
125
+
126
+ The value the field must hold — built by `valued(field('Title'), '…')`.
127
+ A field's value is a PROPERTY of the node: a controlled input's `value`
128
+ attribute never moves, so nothing but the live value answers for it.
@@ -0,0 +1,37 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: ExecOptions
3
+
4
+ ```ts
5
+ type ExecOptions = object;
6
+ ```
7
+
8
+ Defined in: [src/model/ports/cli.port.ts:19](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L19)
9
+
10
+ Options for the long-running form of `.exec()` (CONVENTIONS B2). When
11
+ either option is present the process is spawned and observed: it resolves
12
+ as soon as `waitFor` appears in stdout/stderr, and is killed when `timeout`
13
+ elapses (exit code 124).
14
+
15
+ ## Properties
16
+
17
+ ### timeout?
18
+
19
+ ```ts
20
+ optional timeout?: number;
21
+ ```
22
+
23
+ Defined in: [src/model/ports/cli.port.ts:23](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L23)
24
+
25
+ Kill the process after this many milliseconds. Defaults to 10 000.
26
+
27
+ ***
28
+
29
+ ### waitFor?
30
+
31
+ ```ts
32
+ optional waitFor?: string;
33
+ ```
34
+
35
+ Defined in: [src/model/ports/cli.port.ts:21](https://github.com/jterrazz/package-test/blob/main/src/model/ports/cli.port.ts#L21)
36
+
37
+ Resolve (exit code 0) when stdout/stderr contains this string.
@@ -0,0 +1,54 @@
1
+ <!-- GENERATED by `typescript docs` — DO NOT EDIT -->
2
+ # Type Alias: FileAccessor
3
+
4
+ ```ts
5
+ type FileAccessor = object;
6
+ ```
7
+
8
+ Defined in: [src/model/result/result.ts:13](https://github.com/jterrazz/package-test/blob/main/src/model/result/result.ts#L13)
9
+
10
+ Read-only handle to a single file produced by a spec action.
11
+
12
+ ## Properties
13
+
14
+ ### content
15
+
16
+ ```ts
17
+ readonly content: string;
18
+ ```
19
+
20
+ Defined in: [src/model/result/result.ts:15](https://github.com/jterrazz/package-test/blob/main/src/model/result/result.ts#L15)
21
+
22
+ The UTF-8 text content. Throws if the file does not exist.
23
+
24
+ ***
25
+
26
+ ### exists
27
+
28
+ ```ts
29
+ readonly exists: boolean;
30
+ ```
31
+
32
+ Defined in: [src/model/result/result.ts:16](https://github.com/jterrazz/package-test/blob/main/src/model/result/result.ts#L16)
33
+
34
+ ***
35
+
36
+ ### grep
37
+
38
+ ```ts
39
+ grep: (pattern) => TextAccessor;
40
+ ```
41
+
42
+ Defined in: [src/model/result/result.ts:18](https://github.com/jterrazz/package-test/blob/main/src/model/result/result.ts#L18)
43
+
44
+ The file text as a [TextAccessor](../interfaces/TextAccessor.md), keeping only blocks matching `pattern`.
45
+
46
+ #### Parameters
47
+
48
+ | Parameter | Type |
49
+ | ------ | ------ |
50
+ | `pattern` | `string` |
51
+
52
+ #### Returns
53
+
54
+ [`TextAccessor`](../interfaces/TextAccessor.md)