@tonalisk-labs/kit 1.0.0 → 1.0.6
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/README.md +7 -80
- package/dist/testing/src/config-coverage.d.ts.map +1 -1
- package/dist/testing/src/config-coverage.js +3 -2
- package/dist/testing/src/config-coverage.js.map +1 -1
- package/dist/testing/src/fixtures.d.ts +9 -3
- package/dist/testing/src/fixtures.d.ts.map +1 -1
- package/dist/testing/src/fixtures.js +98 -42
- package/dist/testing/src/fixtures.js.map +1 -1
- package/dist/testing/src/floors/node.js +11 -3
- package/dist/testing/src/floors/node.js.map +1 -1
- package/dist/testing/src/stack/browsers.d.ts +13 -3
- package/dist/testing/src/stack/browsers.d.ts.map +1 -1
- package/dist/testing/src/stack/browsers.js +117 -14
- package/dist/testing/src/stack/browsers.js.map +1 -1
- package/dist/testing/src/stack/containers.d.ts +6 -2
- package/dist/testing/src/stack/containers.d.ts.map +1 -1
- package/dist/testing/src/stack/containers.js +8 -1
- package/dist/testing/src/stack/containers.js.map +1 -1
- package/dist/testing/src/stack/control.d.ts +18 -3
- package/dist/testing/src/stack/control.d.ts.map +1 -1
- package/dist/testing/src/stack/control.js +50 -10
- package/dist/testing/src/stack/control.js.map +1 -1
- package/dist/testing/src/stack/gate-member.d.ts +10 -0
- package/dist/testing/src/stack/gate-member.d.ts.map +1 -1
- package/dist/testing/src/stack/gate-member.js +68 -7
- package/dist/testing/src/stack/gate-member.js.map +1 -1
- package/dist/testing/src/stack/gate-server.d.ts +37 -4
- package/dist/testing/src/stack/gate-server.d.ts.map +1 -1
- package/dist/testing/src/stack/gate-server.js +124 -12
- package/dist/testing/src/stack/gate-server.js.map +1 -1
- package/dist/testing/src/stack/hold.d.ts +24 -3
- package/dist/testing/src/stack/hold.d.ts.map +1 -1
- package/dist/testing/src/stack/hold.js +136 -11
- package/dist/testing/src/stack/hold.js.map +1 -1
- package/dist/testing/src/stack/host.d.ts.map +1 -1
- package/dist/testing/src/stack/host.js +26 -6
- package/dist/testing/src/stack/host.js.map +1 -1
- package/dist/testing/src/stack/lock.d.ts +15 -4
- package/dist/testing/src/stack/lock.d.ts.map +1 -1
- package/dist/testing/src/stack/lock.js +47 -18
- package/dist/testing/src/stack/lock.js.map +1 -1
- package/dist/testing/src/stack/preview-child.js +14 -3
- package/dist/testing/src/stack/preview-child.js.map +1 -1
- package/dist/testing/src/stack/runtime-apple.d.ts.map +1 -1
- package/dist/testing/src/stack/runtime-apple.js +16 -0
- package/dist/testing/src/stack/runtime-apple.js.map +1 -1
- package/dist/testing/src/stack/runtime-docker.d.ts +2 -1
- package/dist/testing/src/stack/runtime-docker.d.ts.map +1 -1
- package/dist/testing/src/stack/runtime-docker.js +29 -3
- package/dist/testing/src/stack/runtime-docker.js.map +1 -1
- package/dist/testing/src/stack/runtime.d.ts +10 -0
- package/dist/testing/src/stack/runtime.d.ts.map +1 -1
- package/dist/testing/src/stack/runtime.js +1 -0
- package/dist/testing/src/stack/runtime.js.map +1 -1
- package/dist/testing/src/stack/socks.d.ts +25 -0
- package/dist/testing/src/stack/socks.d.ts.map +1 -0
- package/dist/testing/src/stack/socks.js +195 -0
- package/dist/testing/src/stack/socks.js.map +1 -0
- package/dist/testing/src/stack/stall.d.ts +36 -0
- package/dist/testing/src/stack/stall.d.ts.map +1 -0
- package/dist/testing/src/stack/stall.js +93 -0
- package/dist/testing/src/stack/stall.js.map +1 -0
- package/package.json +4 -4
- package/testing/src/config-coverage.ts +3 -2
- package/testing/src/fixtures.ts +277 -197
- package/testing/src/floors/node.ts +19 -3
- package/testing/src/stack/browsers.ts +129 -15
- package/testing/src/stack/containers.ts +14 -2
- package/testing/src/stack/control.ts +62 -11
- package/testing/src/stack/gate-member.ts +90 -8
- package/testing/src/stack/gate-server.ts +166 -21
- package/testing/src/stack/hold.ts +163 -11
- package/testing/src/stack/host.ts +32 -9
- package/testing/src/stack/lock.ts +61 -21
- package/testing/src/stack/preview-child.ts +21 -4
- package/testing/src/stack/runtime-apple.ts +20 -1
- package/testing/src/stack/runtime-docker.ts +47 -3
- package/testing/src/stack/runtime.ts +11 -0
- package/testing/src/stack/socks.ts +233 -0
- package/testing/src/stack/stall.ts +145 -0
package/README.md
CHANGED
|
@@ -1,92 +1,19 @@
|
|
|
1
1
|
# kit
|
|
2
2
|
|
|
3
|
-
The shared base of the [tonalisk-labs](https://github.com/tonalisk-labs) sites. It's
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
| Entry | What it gives |
|
|
7
|
-
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
8
|
-
| `@tonalisk-labs/kit/testing` | A Playwright harness and its config: a Docker stack per run, accessibility, SEO and layout checks, budgets, visual baselines |
|
|
9
|
-
| `@tonalisk-labs/kit/astro` | For an `astro.config`: the site's font, its colour themes, Starlight's CSP and scrollable tables, the sitemap's dates |
|
|
10
|
-
| `@tonalisk-labs/kit/theme` | For pages and scripts: the UI classes, the colour themes and their menu, JSON-LD and Starlight's head |
|
|
11
|
-
| `@tonalisk-labs/kit/theme.css` | The Tailwind base, with `starlight.css` and `themes/<id>.css` beside it |
|
|
12
|
-
| `@tonalisk-labs/kit/script` | For a repo's scripts: how one stops on SIGINT or SIGTERM, steps in turn or in a pool, JSON read without casts |
|
|
13
|
-
| `@tonalisk-labs/kit/components/*.astro` | `Search`, `ThemeSelect`, `StarlightHead` and `BodyFont` |
|
|
14
|
-
| `@tonalisk-labs/kit/tsconfig.json` | The TypeScript settings. The oxlint, oxfmt, ruff, SwiftLint and Vale settings are in `rules/` |
|
|
15
|
-
| `kit-lint-styles`, `kit-seo` | The style lint and the SEO check over the repo's sites |
|
|
16
|
-
| `kit-test`, `kit-test-rust` | `node --test` and `cargo llvm-cov`, each held to its coverage floors |
|
|
17
|
-
| crate `kit-server` | For Rust backends: typed configuration, a Stripe client, rate limits, problem details, the stop signal, the OpenAPI export |
|
|
18
|
-
| `uvx copier copy gh:tonalisk-labs/kit` | A new repo set up the same way. A private one gets gitleaks and its own hooks in place of a licence, releases and CI |
|
|
19
|
-
|
|
20
|
-
## Use
|
|
3
|
+
The shared base of the [tonalisk-labs](https://github.com/tonalisk-labs) sites. It's built for
|
|
4
|
+
those repos, but it's MIT-licensed and follows semver, so anyone can use it.
|
|
21
5
|
|
|
22
6
|
```sh
|
|
23
7
|
npm i -D @tonalisk-labs/kit
|
|
24
8
|
```
|
|
25
9
|
|
|
10
|
+
Most repos start with two things. Their `tsconfig.json` extends `@tonalisk-labs/kit/tsconfig.json`,
|
|
11
|
+
and their Playwright config runs every test across browsers, screens and networks:
|
|
12
|
+
|
|
26
13
|
```ts
|
|
27
|
-
// playwright.config.ts: each site and app in the repo, on every row of the device matrix
|
|
28
14
|
import { defineTests } from '@tonalisk-labs/kit/testing';
|
|
29
|
-
|
|
30
15
|
export default defineTests();
|
|
31
16
|
```
|
|
32
17
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
{ "extends": "@tonalisk-labs/kit/tsconfig.json" }
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
```toml
|
|
39
|
-
# Cargo.toml
|
|
40
|
-
kit-server = { git = "https://github.com/tonalisk-labs/kit", tag = "v1.0.0" }
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
```yaml
|
|
44
|
-
# .github/workflows/ci.yml
|
|
45
|
-
jobs:
|
|
46
|
-
checks:
|
|
47
|
-
uses: tonalisk-labs/kit/.github/workflows/checks.yml@v1.0.0
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Renovate keeps all three on the same version through the preset `github>tonalisk-labs/kit`.
|
|
51
|
-
|
|
52
|
-
## Develop
|
|
53
|
-
|
|
54
|
-
```sh
|
|
55
|
-
mise install && npm ci
|
|
56
|
-
mise run check
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
To try a change in a site before releasing it, run `npm run build` here, then
|
|
60
|
-
`npm install --no-save ../kit` in the site.
|
|
61
|
-
|
|
62
|
-
## Workflows
|
|
63
|
-
|
|
64
|
-
kit is public, so its Actions minutes are free. Every action is pinned to a commit.
|
|
65
|
-
|
|
66
|
-
| Workflow | Runs on | What it does |
|
|
67
|
-
| ------------- | -------------------------------------------- | --------------------------------------------------------------- |
|
|
68
|
-
| `ci.yml` | each pull request | `mise run check` and the title. On the release PR, `downstream` |
|
|
69
|
-
| `publish.yml` | each push to `main` | `release.yml` with npm |
|
|
70
|
-
| `checks.yml` | called by the public sites' CI | `mise run check` and the title |
|
|
71
|
-
| `e2e.yml` | called by the public sites' CI | the journeys, and at release the screens on arm64 |
|
|
72
|
-
| `release.yml` | called by `publish.yml` and the public sites | release-please, then the release, attested |
|
|
73
|
-
|
|
74
|
-
A release builds with a read token only. The files are attested and attached in a job that runs
|
|
75
|
-
nothing from the repo, and npm takes the package in another, through
|
|
76
|
-
[trusted publishing](https://docs.npmjs.com/trusted-publishers), with no npm token. The
|
|
77
|
-
package's provenance names the run that published it.
|
|
78
|
-
|
|
79
|
-
To set npm up once:
|
|
80
|
-
|
|
81
|
-
1. Publish a first version by hand, since npm attaches a trusted publisher only to a package that
|
|
82
|
-
exists.
|
|
83
|
-
2. In the package's settings on npmjs.com, add GitHub Actions as its trusted publisher:
|
|
84
|
-
`tonalisk-labs/kit`, workflow `publish.yml`, environment `npm`.
|
|
85
|
-
3. Under publishing access, require two-factor authentication and disallow tokens.
|
|
86
|
-
|
|
87
|
-
A private repo runs its checks locally, where `mise run downstream` also checks this build in
|
|
88
|
-
each site checked out beside kit.
|
|
89
|
-
|
|
90
|
-
## Licence
|
|
91
|
-
|
|
92
|
-
[MIT](LICENSE)
|
|
18
|
+
The rest (Astro and the theme, the Rust crate `kit-server`, the CI workflows and the repo
|
|
19
|
+
template) is in [the docs](docs/README.md).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-coverage.d.ts","sourceRoot":"","sources":["../../../testing/src/config-coverage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-coverage.d.ts","sourceRoot":"","sources":["../../../testing/src/config-coverage.ts"],"names":[],"mappings":"AAQA,iFAAiF;AACjF,eAAO,MAAM,QAAQ,WAAY,MAAM,KAAG,MAAM,EAM7C,CAAC;AAEJ,sDAAsD;AACtD,eAAO,MAAM,aAAa,UAAW,SAAS,MAAM,EAAE,KAAG,MAAM,EACA,CAAC;AAOhE,UAAU,QAAQ;IAChB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD;AAED,yFAAyF;AACzF,eAAO,MAAM,aAAa,aAAc,QAAQ,KAAG,MAAM,EAMxD,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { isObject } from './unknown.js';
|
|
3
|
-
/** A header line of a spec naming the configuration keys it proves, comma separated.
|
|
4
|
-
|
|
3
|
+
/** A header line of a spec naming the configuration keys it proves, comma separated. Its blanks
|
|
4
|
+
* are spaces and tabs only, so it never reaches the next line, and it reads in linear time. */
|
|
5
|
+
const COVERS = /^[ \t]*(?:\/\/|\*)[ \t]*Covers:[ \t]*(?<keys>\S.*)$/gmu;
|
|
5
6
|
/** The keys a spec's header claims, as dotted paths: `limits.max_open_notes`. */
|
|
6
7
|
export const claimsIn = (source) => [...source.matchAll(COVERS)].flatMap((match) => (match.groups === undefined ? '' : (match.groups['keys'] ?? ''))
|
|
7
8
|
.split(',')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-coverage.js","sourceRoot":"","sources":["../../../testing/src/config-coverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC
|
|
1
|
+
{"version":3,"file":"config-coverage.js","sourceRoot":"","sources":["../../../testing/src/config-coverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC;gGACgG;AAChG,MAAM,MAAM,GAAG,wDAAwD,CAAC;AAExE,iFAAiF;AACjF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAY,EAAE,CACnD,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7C,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;KAC7D,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KAC5C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAC/B,CAAC;AAEJ,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAwB,EAAY,EAAE,CAClE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAEhE,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,MAAc,EAAY,EAAE,CAC1D,QAAQ,CAAC,KAAK,CAAC;IACb,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAWf,yFAAyF;AACzF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAkB,EAAY,EAAE;IAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAC5B,OAAO,QAAQ,CAAC,QAAQ;SACrB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;SACrF,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -10,18 +10,19 @@ export interface Options {
|
|
|
10
10
|
/** A visual project's: Chromium in the Linux image, holding screens to their baselines. */
|
|
11
11
|
readonly visual: boolean;
|
|
12
12
|
/** The most browser contexts one of the worker's tests has open at once, its own included: a
|
|
13
|
-
* seat each in the Linux image, which a test of several devices declares
|
|
13
|
+
* seat each in the Linux image while the test runs, which a test of several devices declares
|
|
14
|
+
* with `test.use`. */
|
|
14
15
|
readonly browserContexts: number;
|
|
15
16
|
}
|
|
16
17
|
interface StackWorkerFixtures {
|
|
17
18
|
/** The target's running stack, from its setup project. */
|
|
18
19
|
readonly stack: Coordinates;
|
|
19
|
-
/** Whether the worker's browser holds a seat in the Linux image (stack/browsers.ts). */
|
|
20
|
-
readonly browserSeat: boolean;
|
|
21
20
|
}
|
|
22
21
|
interface StackFixtures {
|
|
23
22
|
/** Whether this test owns the stack alone (`@exclusive`), or shares it with every other. */
|
|
24
23
|
readonly stackHold: boolean;
|
|
24
|
+
/** The test's deadline following its timeout to the servers of its holds. */
|
|
25
|
+
readonly deadlines: boolean;
|
|
25
26
|
}
|
|
26
27
|
interface WorkerFixtures {
|
|
27
28
|
/** Chromium's DevTools port, which Lighthouse connects to; no other engine has one. */
|
|
@@ -32,6 +33,11 @@ export interface Devices {
|
|
|
32
33
|
readonly newDevice: (options?: BrowserContextOptions) => Promise<Page>;
|
|
33
34
|
}
|
|
34
35
|
interface TestFixtures {
|
|
36
|
+
/** Whether the test holds seats in the Linux image (stack/browsers.ts), one per context it may
|
|
37
|
+
* have open. */
|
|
38
|
+
readonly browserSeat: boolean;
|
|
39
|
+
/** The test's CPU turn, held for its own work. */
|
|
40
|
+
readonly cpuTurn: boolean;
|
|
35
41
|
readonly invariants: Watch;
|
|
36
42
|
readonly devices: Devices;
|
|
37
43
|
/** Live sockets' channels by path, for a metered page's frame counts. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../testing/src/fixtures.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,qBAAqB,EAE1B,KAAK,IAAI,EACT,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,KAAK,KAAK,EAAS,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAc,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../testing/src/fixtures.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,qBAAqB,EAE1B,KAAK,IAAI,EACT,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,KAAK,KAAK,EAAS,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAkB3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,wFAAwF;AACxF,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;2BAEuB;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAQD,UAAU,mBAAmB;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,UAAU,aAAa;IACrB,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAmCD,UAAU,cAAc;IACtB,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,gGAAgG;AAChG,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED,UAAU,YAAY;IACpB;qBACiB;IACjB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IAC1C;2BACuB;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAClC;2FACuF;IACvF,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B;oDACgD;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAoBD,sFAAsF;AACtF,KAAK,QAAQ,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;AAC3D,KAAK,UAAU,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,QAAQ,CAC5B,QAAQ,GAAG,aAAa,EACxB,UAAU,GAAG,OAAO,GAAG,mBAAmB,CA6D3C,CAAC;AAMF,yFAAyF;AACzF,eAAO,MAAM,IAAI,EAAE,QAAQ,CACzB,QAAQ,GAAG,aAAa,GAAG,YAAY,EACvC,UAAU,GAAG,OAAO,GAAG,mBAAmB,GAAG,cAAc,CAiL5D,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -7,8 +7,9 @@ import { CPU_SLOWDOWN } from './network.js';
|
|
|
7
7
|
import { startMeter } from './perf/measure.js';
|
|
8
8
|
import { FAILURE_ATTACHMENT } from './perf/steps.js';
|
|
9
9
|
import { installVitals } from './perf/vitals.js';
|
|
10
|
-
import { deviceBudget } from './stack/browsers.js';
|
|
11
|
-
import { holdBrowserSeat, holdStack, holdTestTurn, HOST_ENV, LINUX_ENV, MEASURE_ENV, STACK_ENV, } from './stack/control.js';
|
|
10
|
+
import { deviceBudget, endpointOf } from './stack/browsers.js';
|
|
11
|
+
import { holdBrowserSeat, holdStack, deadlineFrom, holdTestTurn, testBegins, waitedFor, HOST_ENV, LINUX_ENV, MEASURE_ENV, STACK_ENV, } from './stack/control.js';
|
|
12
|
+
import { announceDeadline } from './stack/hold.js';
|
|
12
13
|
import { claimPort } from './stack/ports.js';
|
|
13
14
|
import { browserTrust, trustCa } from './stack/tls.js';
|
|
14
15
|
import { BASELINE_ARCH, VISUAL_MOTION } from './visual.js';
|
|
@@ -16,6 +17,32 @@ import { BASELINE_ARCH, VISUAL_MOTION } from './visual.js';
|
|
|
16
17
|
const EXCLUSIVE = '@exclusive';
|
|
17
18
|
/** The tag of a test that makes no page (`apiTest`): run once per target, not on every row. */
|
|
18
19
|
const API = '@api';
|
|
20
|
+
/** The last move of a deadline on its way, so the next follows it and the servers hear them in
|
|
21
|
+
* the order the test made them. */
|
|
22
|
+
const announcing = { last: Promise.resolve(true) };
|
|
23
|
+
/** Tells the servers of the running test's holds its deadline, as its timeout now stands; a server
|
|
24
|
+
* that can't be told keeps the deadline it had. */
|
|
25
|
+
const announceTimeout = (timeout) => {
|
|
26
|
+
const deadline = deadlineFrom(timeout);
|
|
27
|
+
announcing.last = announcing.last.then(async () => announceDeadline(deadline).then(() => true, () => false));
|
|
28
|
+
};
|
|
29
|
+
/** `type.slow()` moves the running test's deadline with its timeout, as `testInfo.slow()` does: it
|
|
30
|
+
* triples the timeout without `setTimeout`, so a hold's deadline would stay a third of it. */
|
|
31
|
+
const followingSlow = (type) => {
|
|
32
|
+
const slow = Reflect.get(type, 'slow');
|
|
33
|
+
if (typeof slow === 'function') {
|
|
34
|
+
Reflect.set(type, 'slow', (...args) => {
|
|
35
|
+
Reflect.apply(slow, type, args);
|
|
36
|
+
try {
|
|
37
|
+
announceTimeout(base.info().timeout);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Called while the file loads, for every test in it: no test runs, so none holds anything.
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return type;
|
|
45
|
+
};
|
|
19
46
|
/** How many times slower the row runs the page's CPU: on Chromium's low tier alone. */
|
|
20
47
|
const slowdownOf = (row, browserName) => browserName === 'chromium' && row !== undefined ? CPU_SLOWDOWN[row.cpu] : 1;
|
|
21
48
|
/** What a failed test's page showed, for the stdout reporter: the suite writes no files. */
|
|
@@ -32,29 +59,32 @@ const isCoordinates = (value) => typeof value === 'object' &&
|
|
|
32
59
|
* A test of the target's API alone, tagged `@api`: it has the stack and its hold, and no browser,
|
|
33
60
|
* page or page invariants; the harness runs it once per target (config.ts), not on every row.
|
|
34
61
|
*/
|
|
35
|
-
export const apiTest = base.extend({
|
|
62
|
+
export const apiTest = followingSlow(base.extend({
|
|
63
|
+
/** A test sets its timeout as it starts, past the holds its fixtures took, or makes itself slow:
|
|
64
|
+
* each change moves the deadline its holds' servers bound their waits by (stack/stall.ts). */
|
|
65
|
+
deadlines: [
|
|
66
|
+
async ({ site: _site }, provide, testInfo) => {
|
|
67
|
+
testBegins();
|
|
68
|
+
const set = testInfo.setTimeout.bind(testInfo);
|
|
69
|
+
const slow = testInfo.slow.bind(testInfo);
|
|
70
|
+
Object.assign(testInfo, {
|
|
71
|
+
setTimeout: (timeout) => {
|
|
72
|
+
set(timeout);
|
|
73
|
+
announceTimeout(testInfo.timeout);
|
|
74
|
+
},
|
|
75
|
+
slow: (...args) => {
|
|
76
|
+
slow(...args);
|
|
77
|
+
announceTimeout(testInfo.timeout);
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
await provide(true);
|
|
81
|
+
},
|
|
82
|
+
{ auto: true },
|
|
83
|
+
],
|
|
36
84
|
site: ['', { option: true, scope: 'worker' }],
|
|
37
85
|
browserContexts: [1, { option: true, scope: 'worker' }],
|
|
38
86
|
row: [undefined, { option: true, scope: 'worker' }],
|
|
39
87
|
visual: [false, { option: true, scope: 'worker' }],
|
|
40
|
-
/** Taken before any stack hold, so a worker waiting for a seat holds nothing another waits on. */
|
|
41
|
-
browserSeat: [
|
|
42
|
-
async ({ browserName, browserContexts, visual }, provide) => {
|
|
43
|
-
if (!servedByImage(browserName, visual) || process.env[HOST_ENV] === undefined) {
|
|
44
|
-
await provide(false);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const release = await holdBrowserSeat(browserContexts);
|
|
48
|
-
try {
|
|
49
|
-
await provide(true);
|
|
50
|
-
}
|
|
51
|
-
finally {
|
|
52
|
-
release();
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
// Unbounded, as each seat's holder is a worker whose tests run under their own timeouts.
|
|
56
|
-
{ scope: 'worker', timeout: 0 },
|
|
57
|
-
],
|
|
58
88
|
stack: [
|
|
59
89
|
async ({ site }, provide) => {
|
|
60
90
|
const handoff = process.env[STACK_ENV];
|
|
@@ -69,13 +99,14 @@ export const apiTest = base.extend({
|
|
|
69
99
|
{ scope: 'worker' },
|
|
70
100
|
],
|
|
71
101
|
stackHold: [
|
|
72
|
-
async ({ site
|
|
102
|
+
async ({ site }, provide, testInfo) => {
|
|
73
103
|
const owns = testInfo.tags.includes(EXCLUSIVE);
|
|
74
104
|
if (site === '' || process.env[HOST_ENV] === undefined) {
|
|
75
105
|
await provide(owns);
|
|
76
106
|
return;
|
|
77
107
|
}
|
|
78
|
-
const release = await holdStack(owns ? 'own' : 'share', site);
|
|
108
|
+
const release = await waitedFor(async () => holdStack(owns ? 'own' : 'share', site));
|
|
109
|
+
announceTimeout(testInfo.timeout);
|
|
79
110
|
try {
|
|
80
111
|
await provide(owns);
|
|
81
112
|
}
|
|
@@ -87,11 +118,11 @@ export const apiTest = base.extend({
|
|
|
87
118
|
// under its own timeout, whose end gives the hold back.
|
|
88
119
|
{ auto: true, timeout: 0 },
|
|
89
120
|
],
|
|
90
|
-
});
|
|
121
|
+
}));
|
|
91
122
|
/** A browser the Linux image's server runs, where the stack host started one. */
|
|
92
123
|
const servedByImage = (browserName, visual) => (visual || browserName === 'webkit') && process.env[LINUX_ENV] !== undefined;
|
|
93
124
|
/** A test on a matrix row: its browser, its page and the invariants every page holds. */
|
|
94
|
-
export const test = apiTest.extend({
|
|
125
|
+
export const test = followingSlow(apiTest.extend({
|
|
95
126
|
cdpPort: [
|
|
96
127
|
async ({ browserName, visual }, provide) => {
|
|
97
128
|
// The visual projects' Chromium runs in the container, its DevTools port out of reach.
|
|
@@ -108,16 +139,17 @@ export const test = apiTest.extend({
|
|
|
108
139
|
* container the stack host starts; baselines match only the architecture that drew them.
|
|
109
140
|
*/
|
|
110
141
|
connectOptions: [
|
|
111
|
-
async ({ browserName, visual
|
|
142
|
+
async ({ browserName, visual }, provide) => {
|
|
112
143
|
if (visual && arch() !== BASELINE_ARCH) {
|
|
113
144
|
throw new Error(`The baselines were drawn on ${BASELINE_ARCH} and this machine is ${arch()}: its Linux image renders differently, so the visual projects run on ${BASELINE_ARCH} alone`);
|
|
114
145
|
}
|
|
115
146
|
const remote = visual || browserName === 'webkit';
|
|
116
|
-
const wsEndpoint = remote ? process.env[LINUX_ENV] : undefined;
|
|
147
|
+
const wsEndpoint = remote ? endpointOf(browserName, process.env[LINUX_ENV]) : undefined;
|
|
117
148
|
if (remote && (visual || platform() === 'darwin') && wsEndpoint === undefined) {
|
|
118
149
|
throw new Error('WebKit on macOS and the visual projects run only in the Linux image: its setup project starts it');
|
|
119
150
|
}
|
|
120
|
-
|
|
151
|
+
// The image's browser reaches the host's loopback through the host's proxy (stack/socks.ts).
|
|
152
|
+
await provide(wsEndpoint === undefined ? undefined : { wsEndpoint });
|
|
121
153
|
},
|
|
122
154
|
{ scope: 'worker' },
|
|
123
155
|
],
|
|
@@ -138,8 +170,8 @@ export const test = apiTest.extend({
|
|
|
138
170
|
baseURL: async ({ stack }, provide) => {
|
|
139
171
|
await provide(stack.baseURL);
|
|
140
172
|
},
|
|
141
|
-
/** The test's context,
|
|
142
|
-
context: async ({
|
|
173
|
+
/** The test's context, made once its stack hold, seats and CPU turn are held; named to the edge. */
|
|
174
|
+
context: async ({ cpuTurn: _turn, context, row, stack }, provide, testInfo) => {
|
|
143
175
|
if (testInfo.tags.includes(API)) {
|
|
144
176
|
throw new Error(`an ${API} test makes no page: it is written with apiTest`);
|
|
145
177
|
}
|
|
@@ -184,17 +216,41 @@ export const test = apiTest.extend({
|
|
|
184
216
|
channels: [{}, { option: true }],
|
|
185
217
|
reconnect: [undefined, { option: true }],
|
|
186
218
|
keyboardOnly: [false, { option: true }],
|
|
187
|
-
/**
|
|
188
|
-
*
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
219
|
+
/** Taken after the stack hold, so every holder is a test with its stack, and before the CPU
|
|
220
|
+
* turn, which a holder may wait on: a test waiting for seats holds no turn. The wait is not the
|
|
221
|
+
* test's, and fails should the seats stand still (stack/lock.ts). */
|
|
222
|
+
browserSeat: [
|
|
223
|
+
async ({ stackHold: _held, browserName, browserContexts, visual }, provide, testInfo) => {
|
|
224
|
+
if (!servedByImage(browserName, visual) || process.env[HOST_ENV] === undefined) {
|
|
225
|
+
await provide(false);
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const release = await waitedFor(async () => holdBrowserSeat(browserContexts));
|
|
229
|
+
announceTimeout(testInfo.timeout);
|
|
230
|
+
try {
|
|
231
|
+
await provide(true);
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
release();
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
{ timeout: 0 },
|
|
238
|
+
],
|
|
239
|
+
/** A CPU turn, taken last as every turn is, spans the test's own work; its wait is not the
|
|
240
|
+
* test's. */
|
|
241
|
+
cpuTurn: [
|
|
242
|
+
async ({ browserSeat: _seated }, provide, testInfo) => {
|
|
243
|
+
const release = await waitedFor(holdTestTurn);
|
|
244
|
+
announceTimeout(testInfo.timeout);
|
|
245
|
+
try {
|
|
246
|
+
await provide(true);
|
|
247
|
+
}
|
|
248
|
+
finally {
|
|
249
|
+
release();
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
{ auto: true, timeout: 0 },
|
|
253
|
+
],
|
|
198
254
|
meter: [
|
|
199
255
|
async ({ page, stack, channels, reconnect }, provide) => {
|
|
200
256
|
const options = { apiPrefix: stack.apiPrefix, channels, vitals: false, reconnect };
|
|
@@ -226,6 +282,6 @@ export const test = apiTest.extend({
|
|
|
226
282
|
},
|
|
227
283
|
{ auto: true },
|
|
228
284
|
],
|
|
229
|
-
});
|
|
285
|
+
}));
|
|
230
286
|
export { expect } from '@playwright/test';
|
|
231
287
|
//# sourceMappingURL=fixtures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../testing/src/fixtures.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../testing/src/fixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// A workspace's tests as `node --test` runs them (its arguments: globs and `--import <module>`),
|
|
3
|
-
// those timing code then alone, one at a time
|
|
4
|
-
// KIT_TEST_PHASE=untimed or timed takes one phase, so the
|
|
3
|
+
// those timing code then alone, one at a time, holding the machine's CPU gate whole; the rest
|
|
4
|
+
// under coverage, held to its floors. KIT_TEST_PHASE=untimed or timed takes one phase, so the
|
|
5
|
+
// timed run can have the machine alone.
|
|
5
6
|
import { finished, pipeline } from 'node:stream/promises';
|
|
6
7
|
import { run } from 'node:test';
|
|
7
8
|
import { spec as SpecReporter } from 'node:test/reporters';
|
|
8
9
|
import { parseArgs } from 'node:util';
|
|
10
|
+
import { inWholeTurn } from '../stack/gate-member.js';
|
|
11
|
+
import { GATE_PORT } from '../stack/gate-server.js';
|
|
9
12
|
import { holdFloors } from './hold.js';
|
|
10
13
|
import { measuredOnce } from './instances.js';
|
|
11
14
|
import { PHASE_ENV, phaseOf, testFiles } from './timed.js';
|
|
@@ -47,6 +50,11 @@ const measure = async () => {
|
|
|
47
50
|
return measured;
|
|
48
51
|
};
|
|
49
52
|
const name = process.env['npm_package_name'] ?? cwd;
|
|
53
|
+
/** The CPU gate's port: the machine's own, or the one a test of this runner serves. */
|
|
54
|
+
const GATE_PORT_ENV = 'KIT_CPU_GATE_PORT';
|
|
55
|
+
/** Runs the timed files one at a time, holding every slot of the machine's CPU gate: the tests of
|
|
56
|
+
* other runs, which take their turns there, wait, so none shares the cores they're timed on. */
|
|
57
|
+
const timedPass = async (files) => inWholeTurn(async () => passes(files, false), `the timed tests of ${name} (pid ${String(process.pid)})`, Number(process.env[GATE_PORT_ENV] ?? GATE_PORT));
|
|
50
58
|
const phase = phaseOf(process.env[PHASE_ENV]);
|
|
51
59
|
const untimed = phase !== 'timed';
|
|
52
60
|
const timedToo = phase !== 'untimed';
|
|
@@ -59,6 +67,6 @@ if (!untimed) {
|
|
|
59
67
|
}
|
|
60
68
|
// A timed test shares no CPU with the others: it runs once they are done, and on its own.
|
|
61
69
|
const passed = (!untimed || (await passes(parallel, true))) &&
|
|
62
|
-
(!timedToo || timed.length === 0 || (await
|
|
70
|
+
(!timedToo || timed.length === 0 || (await timedPass(timed)));
|
|
63
71
|
process.exitCode = passed && (!untimed || holdFloors(name, cwd, await measure())) ? 0 : 1;
|
|
64
72
|
//# sourceMappingURL=node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../testing/src/floors/node.ts"],"names":[],"mappings":";AACA,iGAAiG;AACjG,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../testing/src/floors/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import type { Service } from './process.ts';
|
|
2
2
|
import type { ContainerSpec } from './runtime.ts';
|
|
3
|
+
/** The engines the image serves, one browser each: the visual projects' Chromium, and WebKit for
|
|
4
|
+
* the rows macOS can't run it on. */
|
|
5
|
+
declare const ENGINES: readonly ['chromium', 'webkit'];
|
|
6
|
+
type Engine = (typeof ENGINES)[number];
|
|
7
|
+
/** Where each engine's browser is served, by engine. */
|
|
8
|
+
type Endpoints = Readonly<Record<Engine, string>>;
|
|
3
9
|
export interface BrowserServer extends Service {
|
|
4
|
-
readonly
|
|
10
|
+
readonly endpoints: Endpoints;
|
|
5
11
|
}
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
12
|
+
/** The endpoint of the image's browser for `engine` in `given`, the stack host's variable; none
|
|
13
|
+
* where the variable is unset or names no such engine. */
|
|
14
|
+
export declare const endpointOf: (engine: string, given?: string) => string | undefined;
|
|
15
|
+
/** Browser contexts the image serves at once, a seat each, taken by a test for its own time: each
|
|
16
|
+
* engine's one browser is shared by every worker, so a connection costs nothing. */
|
|
8
17
|
export declare const BROWSER_SEATS = 4;
|
|
9
18
|
/** A test's devices against the `declared` contexts it may have open, its own included: each is
|
|
10
19
|
* counted as it is asked for, so devices asked for together through Promise.all are all counted. */
|
|
@@ -23,4 +32,5 @@ export declare const browserServerSpec: (core: {
|
|
|
23
32
|
/** Playwright's browsers in its official Linux image, served to the host's tests so screenshots
|
|
24
33
|
* render the same on every machine, trusting the local CA in `caDir` that signs every edge. */
|
|
25
34
|
export declare const startBrowserServer: (signal: AbortSignal, caDir?: string) => Promise<BrowserServer>;
|
|
35
|
+
export {};
|
|
26
36
|
//# sourceMappingURL=browsers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browsers.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/browsers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"browsers.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/browsers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD;sCACsC;AACtC,QAAA,MAAM,OAAO,YAAI,UAAU,EAAE,QAAQ,CAAU,CAAC;AAEhD,KAAK,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAKvC,wDAAwD;AACxD,KAAK,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAElD,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED;2DAC2D;AAC3D,eAAO,MAAM,UAAU,WAAY,MAAM,UAAU,MAAM,KAAG,MAAM,GAAG,SAIpE,CAAC;AAEF;qFACqF;AACrF,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;qGACqG;AACrG,eAAO,MAAM,YAAY,aAAc,MAAM,KAAG,CAAC,MAAM,MAAM,IAAI,CAiBhE,CAAC;AAMF,qFAAqF;AACrF,eAAO,MAAM,cAAc,QAAO;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CASlF,CAAC;AAiEF;8CAC8C;AAC9C,eAAO,MAAM,iBAAiB,SACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,MACrD,MAAM,KACT,aAWD,CAAC;AAyBH;gGACgG;AAChG,eAAO,MAAM,kBAAkB,WACrB,WAAW,qBAElB,OAAO,CAAC,aAAa,CA4BvB,CAAC"}
|