@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.
- package/dist/appium.adapter.js +59 -4
- package/dist/browser/index.js +88 -40
- package/dist/checker.js +272 -63
- package/dist/index.d.ts +33 -4
- package/dist/index.js +47 -24
- package/dist/oxlint.cjs +100 -27
- package/dist/oxlint.js +100 -27
- package/dist/playwright.adapter.js +14 -65
- package/dist/{ambiguity.js → substring-warning.js} +99 -1
- package/dist/vitest.js +71 -11
- package/docs/01-architecture.md +95 -0
- package/docs/02-developing.md +351 -0
- package/docs/03-testing.md +495 -0
- package/docs/04-operating.md +101 -0
- package/docs/05-module-tests.md +152 -0
- package/docs/06-integration.md +180 -0
- package/docs/07-component.md +246 -0
- package/docs/08-website.md +404 -0
- package/docs/09-mobile.md +270 -0
- package/docs/10-api.md +264 -0
- package/docs/11-jobs.md +157 -0
- package/docs/12-cli.md +677 -0
- package/docs/13-elements.md +242 -0
- package/docs/14-assertions.md +314 -0
- package/docs/15-tokens.md +253 -0
- package/docs/16-contracts.md +438 -0
- package/docs/17-services.md +188 -0
- package/docs/18-conventions.md +305 -0
- package/docs/19-linting.md +510 -0
- package/docs/README.md +36 -0
- package/docs/decisions/001-v9-conventions-on-three-channels.md +50 -0
- package/docs/decisions/002-the-statique-channel-holds-only-what-upstream-does-not.md +49 -0
- package/docs/decisions/003-a-rendered-component-is-a-facet-on-vitest-browser-mode.md +84 -0
- package/docs/decisions/004-a-module-against-real-services-or-a-golden-is-the-integration-facet.md +81 -0
- package/docs/decisions/005-the-doubles-ladder-is-closed.md +86 -0
- package/docs/decisions/006-the-catalogue-reaches-a-file-by-its-role.md +245 -0
- package/docs/decisions/007-compose-mode-leaves-the-package.md +53 -0
- package/docs/decisions/008-vitest-5-node-24-and-the-native-seams-as-optional-peers.md +75 -0
- package/docs/decisions/_template.md +22 -0
- package/docs/reference/classes/Matcher.md +120 -0
- package/docs/reference/classes/ProcessHandle.md +368 -0
- package/docs/reference/functions/defineContract.md +39 -0
- package/docs/reference/functions/defineContracts.md +36 -0
- package/docs/reference/functions/disabled.md +28 -0
- package/docs/reference/functions/enabled.md +20 -0
- package/docs/reference/functions/focused.md +26 -0
- package/docs/reference/functions/mockOf.md +79 -0
- package/docs/reference/functions/postgres.md +31 -0
- package/docs/reference/functions/process.md +33 -0
- package/docs/reference/functions/redis.md +28 -0
- package/docs/reference/functions/required.md +41 -0
- package/docs/reference/functions/selected.md +26 -0
- package/docs/reference/functions/sqlite.md +33 -0
- package/docs/reference/functions/testId.md +20 -0
- package/docs/reference/functions/text.md +40 -0
- package/docs/reference/functions/valued.md +28 -0
- package/docs/reference/functions/waitUntil.md +46 -0
- package/docs/reference/functions/within.md +29 -0
- package/docs/reference/index.md +196 -0
- package/docs/reference/interfaces/BaseResult.md +87 -0
- package/docs/reference/interfaces/CallResult.md +160 -0
- package/docs/reference/interfaces/CaptureScope.md +82 -0
- package/docs/reference/interfaces/CliResult.md +253 -0
- package/docs/reference/interfaces/ContainerAccessor.md +166 -0
- package/docs/reference/interfaces/DirectoryAccessor.md +33 -0
- package/docs/reference/interfaces/FetchResult.md +180 -0
- package/docs/reference/interfaces/FilesystemAccessor.md +46 -0
- package/docs/reference/interfaces/HttpResult.md +126 -0
- package/docs/reference/interfaces/JsonAccessor.md +46 -0
- package/docs/reference/interfaces/PageResult.md +356 -0
- package/docs/reference/interfaces/RenderResult.md +72 -0
- package/docs/reference/interfaces/RenderedText.md +110 -0
- package/docs/reference/interfaces/ResponseAccessor.md +47 -0
- package/docs/reference/interfaces/ScreenResult.md +128 -0
- package/docs/reference/interfaces/TableAccessor.md +26 -0
- package/docs/reference/interfaces/TextAccessor.md +96 -0
- package/docs/reference/type-aliases/ApiHandle.md +68 -0
- package/docs/reference/type-aliases/ApiSpecification.md +213 -0
- package/docs/reference/type-aliases/ApiSpecificationOptions.md +68 -0
- package/docs/reference/type-aliases/BrowserConsoleMessage.md +30 -0
- package/docs/reference/type-aliases/BrowserLinkElement.md +50 -0
- package/docs/reference/type-aliases/BrowserMetaElement.md +40 -0
- package/docs/reference/type-aliases/BrowserOpenOptions.md +87 -0
- package/docs/reference/type-aliases/BrowserPage.md +132 -0
- package/docs/reference/type-aliases/BrowserPort.md +51 -0
- package/docs/reference/type-aliases/CliEnv.md +11 -0
- package/docs/reference/type-aliases/CliHandle.md +80 -0
- package/docs/reference/type-aliases/CliInput.md +36 -0
- package/docs/reference/type-aliases/CliOutput.md +46 -0
- package/docs/reference/type-aliases/CliPort.md +58 -0
- package/docs/reference/type-aliases/CliSpecification.md +144 -0
- package/docs/reference/type-aliases/CliSpecificationOptions.md +134 -0
- package/docs/reference/type-aliases/ComponentChain.md +156 -0
- package/docs/reference/type-aliases/ComponentScenario.md +20 -0
- package/docs/reference/type-aliases/ComponentUi.md +47 -0
- package/docs/reference/type-aliases/ComponentVisitor.md +10 -0
- package/docs/reference/type-aliases/ContainerPort.md +113 -0
- package/docs/reference/type-aliases/Contract.md +68 -0
- package/docs/reference/type-aliases/ContractInput.md +13 -0
- package/docs/reference/type-aliases/ContractRequest.md +95 -0
- package/docs/reference/type-aliases/ContractResponder.md +23 -0
- package/docs/reference/type-aliases/ContractResponse.md +78 -0
- package/docs/reference/type-aliases/ContractResponseValue.md +13 -0
- package/docs/reference/type-aliases/Contracts.md +48 -0
- package/docs/reference/type-aliases/DatabaseKeys.md +16 -0
- package/docs/reference/type-aliases/DatabasePort.md +72 -0
- package/docs/reference/type-aliases/DeviceOpenOptions.md +46 -0
- package/docs/reference/type-aliases/DevicePort.md +51 -0
- package/docs/reference/type-aliases/DeviceScreen.md +32 -0
- package/docs/reference/type-aliases/DeviceTimeouts.md +39 -0
- package/docs/reference/type-aliases/DockerSpecConfig.md +43 -0
- package/docs/reference/type-aliases/DomMount.md +21 -0
- package/docs/reference/type-aliases/ElementKind.md +27 -0
- package/docs/reference/type-aliases/ElementMatch.md +74 -0
- package/docs/reference/type-aliases/ElementOptions.md +29 -0
- package/docs/reference/type-aliases/ElementRef.md +128 -0
- package/docs/reference/type-aliases/ExecOptions.md +37 -0
- package/docs/reference/type-aliases/FileAccessor.md +54 -0
- package/docs/reference/type-aliases/HonoApp.md +31 -0
- package/docs/reference/type-aliases/HttpContractFilter.md +49 -0
- package/docs/reference/type-aliases/HttpResponseInit.md +46 -0
- package/docs/reference/type-aliases/HttpStreamInit.md +58 -0
- package/docs/reference/type-aliases/IntegrationHandle.md +46 -0
- package/docs/reference/type-aliases/IntegrationSpecification.md +111 -0
- package/docs/reference/type-aliases/IntegrationSpecificationOptions.md +42 -0
- package/docs/reference/type-aliases/Intercept.md +19 -0
- package/docs/reference/type-aliases/InterceptOptions.md +28 -0
- package/docs/reference/type-aliases/InterceptScope.md +11 -0
- package/docs/reference/type-aliases/IsolationStrategy.md +75 -0
- package/docs/reference/type-aliases/JobHandle.md +34 -0
- package/docs/reference/type-aliases/JobsHandle.md +57 -0
- package/docs/reference/type-aliases/JobsResult.md +16 -0
- package/docs/reference/type-aliases/JobsSpecification.md +94 -0
- package/docs/reference/type-aliases/JobsSpecificationOptions.md +56 -0
- package/docs/reference/type-aliases/LandmarkKind.md +20 -0
- package/docs/reference/type-aliases/LiterateRunFlags.md +27 -0
- package/docs/reference/type-aliases/LiterateServeRegistration.md +70 -0
- package/docs/reference/type-aliases/MatchFixtureOptions.md +27 -0
- package/docs/reference/type-aliases/MatchableRequest.md +61 -0
- package/docs/reference/type-aliases/MatcherKind.md +34 -0
- package/docs/reference/type-aliases/MobileBackendOptions.md +28 -0
- package/docs/reference/type-aliases/MobileElementKind.md +14 -0
- package/docs/reference/type-aliases/MobileElementMatch.md +60 -0
- package/docs/reference/type-aliases/MobileElementRef.md +20 -0
- package/docs/reference/type-aliases/MobileHandle.md +65 -0
- package/docs/reference/type-aliases/MobileScenario.md +20 -0
- package/docs/reference/type-aliases/MobileSpecification.md +51 -0
- package/docs/reference/type-aliases/MobileSpecificationOptions.md +126 -0
- package/docs/reference/type-aliases/MobileVisitor.md +81 -0
- package/docs/reference/type-aliases/MockOfOptions.md +26 -0
- package/docs/reference/type-aliases/MockPort.md +10 -0
- package/docs/reference/type-aliases/PinnedClock.md +10 -0
- package/docs/reference/type-aliases/PostgresOptions.md +32 -0
- package/docs/reference/type-aliases/ProcessOptions.md +112 -0
- package/docs/reference/type-aliases/RedisOptions.md +20 -0
- package/docs/reference/type-aliases/RenderSubject.md +12 -0
- package/docs/reference/type-aliases/ScreenNode.md +67 -0
- package/docs/reference/type-aliases/ServerPort.md +36 -0
- package/docs/reference/type-aliases/ServerResponse.md +46 -0
- package/docs/reference/type-aliases/ServerSpec.md +21 -0
- package/docs/reference/type-aliases/ServiceHandle.md +216 -0
- package/docs/reference/type-aliases/ServiceRecord.md +12 -0
- package/docs/reference/type-aliases/SpecDocument.md +84 -0
- package/docs/reference/type-aliases/SpecEnvToken.md +21 -0
- package/docs/reference/type-aliases/SpecFileAssertion.md +27 -0
- package/docs/reference/type-aliases/SpecFixture.md +30 -0
- package/docs/reference/type-aliases/SpecKind.md +8 -0
- package/docs/reference/type-aliases/SpecRun.md +108 -0
- package/docs/reference/type-aliases/SpecServeEntry.md +40 -0
- package/docs/reference/type-aliases/SpecStream.md +32 -0
- package/docs/reference/type-aliases/SpecificationConfig.md +290 -0
- package/docs/reference/type-aliases/SqliteOptions.md +36 -0
- package/docs/reference/type-aliases/SseEvent.md +58 -0
- package/docs/reference/type-aliases/StreamBody.md +61 -0
- package/docs/reference/type-aliases/TextFilter.md +22 -0
- package/docs/reference/type-aliases/VisitScenario.md +20 -0
- package/docs/reference/type-aliases/Visitor.md +215 -0
- package/docs/reference/type-aliases/WaitUntilOptions.md +46 -0
- package/docs/reference/type-aliases/WebsiteBackendOptions.md +37 -0
- package/docs/reference/type-aliases/WebsiteHandle.md +51 -0
- package/docs/reference/type-aliases/WebsiteSpecification.md +118 -0
- package/docs/reference/type-aliases/WebsiteSpecificationOptions.md +40 -0
- package/docs/reference/variables/anthropic.md +19 -0
- package/docs/reference/variables/banner.md +10 -0
- package/docs/reference/variables/button.md +10 -0
- package/docs/reference/variables/clock.md +16 -0
- package/docs/reference/variables/complementary.md +10 -0
- package/docs/reference/variables/component.md +10 -0
- package/docs/reference/variables/content.md +10 -0
- package/docs/reference/variables/contentinfo.md +10 -0
- package/docs/reference/variables/dialog.md +10 -0
- package/docs/reference/variables/field.md +10 -0
- package/docs/reference/variables/form.md +10 -0
- package/docs/reference/variables/heading.md +10 -0
- package/docs/reference/variables/http.md +40 -0
- package/docs/reference/variables/intercept.md +11 -0
- package/docs/reference/variables/link.md +10 -0
- package/docs/reference/variables/listitem.md +10 -0
- package/docs/reference/variables/main.md +10 -0
- package/docs/reference/variables/match.md +8 -0
- package/docs/reference/variables/navigation.md +10 -0
- package/docs/reference/variables/openai.md +21 -0
- package/docs/reference/variables/option.md +17 -0
- package/docs/reference/variables/region.md +10 -0
- package/docs/reference/variables/row.md +10 -0
- package/docs/reference/variables/search.md +10 -0
- package/docs/reference/variables/specification.md +8 -0
- package/docs/reference/variables/status.md +10 -0
- package/docs/reference/variables/table.md +10 -0
- package/package.json +2 -1
|
@@ -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`
|