@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.
Files changed (80) hide show
  1. package/README.md +7 -80
  2. package/dist/testing/src/config-coverage.d.ts.map +1 -1
  3. package/dist/testing/src/config-coverage.js +3 -2
  4. package/dist/testing/src/config-coverage.js.map +1 -1
  5. package/dist/testing/src/fixtures.d.ts +9 -3
  6. package/dist/testing/src/fixtures.d.ts.map +1 -1
  7. package/dist/testing/src/fixtures.js +98 -42
  8. package/dist/testing/src/fixtures.js.map +1 -1
  9. package/dist/testing/src/floors/node.js +11 -3
  10. package/dist/testing/src/floors/node.js.map +1 -1
  11. package/dist/testing/src/stack/browsers.d.ts +13 -3
  12. package/dist/testing/src/stack/browsers.d.ts.map +1 -1
  13. package/dist/testing/src/stack/browsers.js +117 -14
  14. package/dist/testing/src/stack/browsers.js.map +1 -1
  15. package/dist/testing/src/stack/containers.d.ts +6 -2
  16. package/dist/testing/src/stack/containers.d.ts.map +1 -1
  17. package/dist/testing/src/stack/containers.js +8 -1
  18. package/dist/testing/src/stack/containers.js.map +1 -1
  19. package/dist/testing/src/stack/control.d.ts +18 -3
  20. package/dist/testing/src/stack/control.d.ts.map +1 -1
  21. package/dist/testing/src/stack/control.js +50 -10
  22. package/dist/testing/src/stack/control.js.map +1 -1
  23. package/dist/testing/src/stack/gate-member.d.ts +10 -0
  24. package/dist/testing/src/stack/gate-member.d.ts.map +1 -1
  25. package/dist/testing/src/stack/gate-member.js +68 -7
  26. package/dist/testing/src/stack/gate-member.js.map +1 -1
  27. package/dist/testing/src/stack/gate-server.d.ts +37 -4
  28. package/dist/testing/src/stack/gate-server.d.ts.map +1 -1
  29. package/dist/testing/src/stack/gate-server.js +124 -12
  30. package/dist/testing/src/stack/gate-server.js.map +1 -1
  31. package/dist/testing/src/stack/hold.d.ts +24 -3
  32. package/dist/testing/src/stack/hold.d.ts.map +1 -1
  33. package/dist/testing/src/stack/hold.js +136 -11
  34. package/dist/testing/src/stack/hold.js.map +1 -1
  35. package/dist/testing/src/stack/host.d.ts.map +1 -1
  36. package/dist/testing/src/stack/host.js +26 -6
  37. package/dist/testing/src/stack/host.js.map +1 -1
  38. package/dist/testing/src/stack/lock.d.ts +15 -4
  39. package/dist/testing/src/stack/lock.d.ts.map +1 -1
  40. package/dist/testing/src/stack/lock.js +47 -18
  41. package/dist/testing/src/stack/lock.js.map +1 -1
  42. package/dist/testing/src/stack/preview-child.js +14 -3
  43. package/dist/testing/src/stack/preview-child.js.map +1 -1
  44. package/dist/testing/src/stack/runtime-apple.d.ts.map +1 -1
  45. package/dist/testing/src/stack/runtime-apple.js +16 -0
  46. package/dist/testing/src/stack/runtime-apple.js.map +1 -1
  47. package/dist/testing/src/stack/runtime-docker.d.ts +2 -1
  48. package/dist/testing/src/stack/runtime-docker.d.ts.map +1 -1
  49. package/dist/testing/src/stack/runtime-docker.js +29 -3
  50. package/dist/testing/src/stack/runtime-docker.js.map +1 -1
  51. package/dist/testing/src/stack/runtime.d.ts +10 -0
  52. package/dist/testing/src/stack/runtime.d.ts.map +1 -1
  53. package/dist/testing/src/stack/runtime.js +1 -0
  54. package/dist/testing/src/stack/runtime.js.map +1 -1
  55. package/dist/testing/src/stack/socks.d.ts +25 -0
  56. package/dist/testing/src/stack/socks.d.ts.map +1 -0
  57. package/dist/testing/src/stack/socks.js +195 -0
  58. package/dist/testing/src/stack/socks.js.map +1 -0
  59. package/dist/testing/src/stack/stall.d.ts +36 -0
  60. package/dist/testing/src/stack/stall.d.ts.map +1 -0
  61. package/dist/testing/src/stack/stall.js +93 -0
  62. package/dist/testing/src/stack/stall.js.map +1 -0
  63. package/package.json +4 -4
  64. package/testing/src/config-coverage.ts +3 -2
  65. package/testing/src/fixtures.ts +277 -197
  66. package/testing/src/floors/node.ts +19 -3
  67. package/testing/src/stack/browsers.ts +129 -15
  68. package/testing/src/stack/containers.ts +14 -2
  69. package/testing/src/stack/control.ts +62 -11
  70. package/testing/src/stack/gate-member.ts +90 -8
  71. package/testing/src/stack/gate-server.ts +166 -21
  72. package/testing/src/stack/hold.ts +163 -11
  73. package/testing/src/stack/host.ts +32 -9
  74. package/testing/src/stack/lock.ts +61 -21
  75. package/testing/src/stack/preview-child.ts +21 -4
  76. package/testing/src/stack/runtime-apple.ts +20 -1
  77. package/testing/src/stack/runtime-docker.ts +47 -3
  78. package/testing/src/stack/runtime.ts +11 -0
  79. package/testing/src/stack/socks.ts +233 -0
  80. 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 opinionated
4
- and built for those repos, but it's MIT-licensed and versioned with semver, so anyone can use it.
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
- ```jsonc
34
- // tsconfig.json
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":"AAOA,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
+ {"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
- const COVERS = /^\s*(?:\/\/|\*)\s*Covers:\s*(?<keys>.+)$/gmu;
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,wFAAwF;AACxF,MAAM,MAAM,GAAG,6CAA6C,CAAC;AAE7D,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"}
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 with `test.use`. */
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;AAc3E,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;kGAC8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAQD,UAAU,mBAAmB;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,wFAAwF;IACxF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,UAAU,aAAa;IACrB,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,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,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,CAsD1C,CAAC;AAMH,yFAAyF;AACzF,eAAO,MAAM,IAAI,EAAE,QAAQ,CACzB,QAAQ,GAAG,aAAa,GAAG,YAAY,EACvC,UAAU,GAAG,OAAO,GAAG,mBAAmB,GAAG,cAAc,CAmJ3D,CAAC;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,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, browserSeat: _seated }, provide, testInfo) => {
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, browserSeat: _seated }, provide) => {
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
- await provide(wsEndpoint === undefined ? undefined : { wsEndpoint, exposeNetwork: '<loopback>' });
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, used once its stack hold and CPU turn are held; named to the edge. */
142
- context: async ({ stackHold: _held, context, row, stack }, provide, testInfo) => {
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
- /** A CPU turn, taken after the stack hold as every turn is, spans the test's own work; the
188
- * override keeps the hold's own timeout, so none of the wait is charged to the test's. */
189
- stackHold: async ({ stackHold }, provide) => {
190
- const release = await holdTestTurn();
191
- try {
192
- await provide(stackHold);
193
- }
194
- finally {
195
- release();
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; the rest under coverage, held to its floors.
4
- // KIT_TEST_PHASE=untimed or timed takes one phase, so the timed run can have the machine alone.
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 passes(timed, false)));
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":"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"}
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 wsEndpoint: string;
10
+ readonly endpoints: Endpoints;
5
11
  }
6
- /** Browser contexts the image serves at once, a seat each: 4 in one browser peak at 2,272 MiB, 4
7
- * browsers of one each at 2,947, and neither stalls nor is killed. */
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;AAGlD,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAID;uEACuE;AACvE,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;AAgBF;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;AAEH;gGACgG;AAChG,eAAO,MAAM,kBAAkB,WACrB,WAAW,qBAElB,OAAO,CAAC,aAAa,CAKvB,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"}