@qartisan/playwright-loupe 0.0.5 → 0.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/CHANGELOG.md +27 -0
- package/README.md +26 -5
- package/dist/config/resolve.d.ts +1 -1
- package/dist/config/resolve.js +2 -1
- package/dist/config/types.d.ts +7 -0
- package/dist/config/validate.js +1 -0
- package/dist/core/inject.d.ts +4 -0
- package/dist/core/inject.js +1 -0
- package/dist/core/reporter.js +1 -0
- package/dist/renderer/index.html +9 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,33 @@ All notable changes to this project are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Before 1.0, minor versions may contain breaking changes. The JSON report has its own version (`schemaVersion`), see [`docs/schema/v1.md`](docs/schema/v1.md#versioning-policy).
|
|
6
6
|
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Test detail** (`#/test/<id>`): title path, outcome, project, `file:line`, total duration, error category, tags, annotations and dimensions; then one tab per attempt ("Attempt 1", "Retry 1" …, each with its status and duration), hidden for a single attempt. The default attempt is the last failing one: a failed test opens on its last attempt, a flaky test on its failure, not on the passing retry. The attempt is in the URL (`?attempt=1`) next to the filters; an index the test does not have falls back to the default attempt and the URL is corrected. Per attempt:
|
|
12
|
+
- **Errors**, each with its category, `file:line:column`, a "View error group" link with the group's test count, the code snippet and the stack (collapsed). Playwright's colors are rebuilt from the text: the value of `Expected:` / `Received:` lines (and `Expected substring:`, `Received string:`, `Expected pattern:`, `Received array:` …), the `-` / `+` lines of a diff opened by the `- Expected` / `+ Received` header (only there: call log lines are never colored), and the snippet's arrow and caret. The report keeps messages without ANSI codes, so Playwright's character-level highlighting inside strings is not reproduced. Messages are rendered as text, never as HTML. Two new color tokens, `--diff-expected` and `--diff-received`, meet WCAG contrast in both themes.
|
|
13
|
+
- **Steps**: `test.step` steps and steps with an error, with the ancestors needed to place them; each step with children expands. The failing path is highlighted and expanded on load. "Show all steps" (`?steps=all`) adds hooks, fixtures, API calls and `expect` steps, each with its category. A step's error message is shown under the step it comes from.
|
|
14
|
+
- **Attachments**, listed by kind (screenshots, videos, traces, text, other) with their content type: files as relative links (they work from `file://`), small text bodies inline and collapsed, with their size. Viewers come in a later release.
|
|
15
|
+
- **stdout and stderr**, collapsed, with a notice when the report truncated them.
|
|
16
|
+
- **Rerun commands**, copied to the clipboard, to paste in a POSIX shell (bash, zsh; not `cmd.exe`) from the Playwright root directory:
|
|
17
|
+
- this test only, in its project (`npx playwright test basics.spec.ts:34 --project=chromium-a`; no `--project` for an unnamed project);
|
|
18
|
+
- the failed tests of its file, shown only when another line of the file failed (the same test failing in another project does not count), labeled with the distinct `file:line` per project and the projects involved (`10 failed tests in this file, in chromium-a, chromium-b`);
|
|
19
|
+
- the failed tests of the current list, every one of them, not only the rows shown: above the Tests view's table, and as "Rerun failed tests" under the overview's verdict.
|
|
20
|
+
|
|
21
|
+
Projects with exactly the same `file:line` arguments share one command (`--project=a --project=b`); when the sets differ, each project gets its own command, joined with `&&`, because one command would run every file in every project. Arguments are sorted by file, then line, and each `file:line` is given once. Arguments with spaces or shell characters are single-quoted, an inner `'` written `'\''`. Flaky tests are left out. A `file:line` targets the line where the test is declared, and reruns every test declared there: a command is only valid while the file has not changed since the run. Above 100 tests, a note says the command is long.
|
|
22
|
+
- **AI prompt**, copied to the clipboard only, in English: an instruction (most likely cause, test or application, a fix), the test, the attempt, tags and annotations, each error with its message, snippet, location and stack, the failing step with up to 5 steps before it, and the names of the attachments. New option `aiPrompt.includeStack` (default `true`) leaves the stacks out; it is a renderer setting, not part of `report.json`.
|
|
23
|
+
- **Copy fallback**: when the browser refuses the Clipboard API (some do on `file://`), a dialog shows the text selected, to copy by hand. Successful copies are announced to screen readers.
|
|
24
|
+
- **Previous / next**: on the test detail, through the Tests view's current list (filters and sort, every row, not only the first 500), each test on its default attempt; on an error group page, through the Errors view's order. A group opened from a category (its section in the Errors view, `#/errors/category/<name>`) carries `category=<name>` in its URL and walks that category's groups only; a group opened from the global list or from a test walks every group. No wrap-around at the ends.
|
|
25
|
+
- **Keyboard shortcuts**: `j` / `k` next and previous test, `[` / `]` previous and next attempt, `n` / `p` next and previous error group, `?` the list of shortcuts (also behind a keyboard icon in the header). They never fire while typing in a field, with Ctrl, Alt or Meta held, or while a dialog is open. Documented in the README.
|
|
26
|
+
- **Fixture suite**: two intentional failures, a `test.step` failing at the second level (`fails inside a nested step`) and a `toEqual` with a multi-line diff (`returns a different order`). The fixture snapshot gains these 4 tests (2 per project); tests declared after them moved down a few lines.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Tests view default sort**: declaration order, exactly like the sidebar: project (report order), file, line. It used to be status severity, then title path. Filters are there to focus on failures; the default order is now the same in the sidebar, the table and the test detail's previous / next. It is not written in the URL (no `sort` parameter). The Status header still sorts by severity (failed, flaky, passed, skipped), with project, file, line as tie-breaks; other columns still break ties by title. A link with `sort=status:asc` keeps the former order.
|
|
31
|
+
- **Error groups inside a category** are listed in the Errors view's order (most failed tests first, then most flaky), the order their previous / next buttons follow, instead of first occurrence.
|
|
32
|
+
- **Renderer dev sample**: `npm run sample:update` also copies the sample's attachment files to `src/renderer/dev/data/` (gitignored), and the dev server serves them at `data/`, so attachment links work there too.
|
|
33
|
+
|
|
7
34
|
## [0.0.5] 2026-10-17
|
|
8
35
|
|
|
9
36
|
### Added
|
package/README.md
CHANGED
|
@@ -38,15 +38,32 @@ A run that broke outside its tests (a spec file that fails to import, a failing
|
|
|
38
38
|
The report is a single self-contained HTML file. It works offline, straight from `file://`, in light and dark themes.
|
|
39
39
|
|
|
40
40
|
- **Overview:** verdict with pass rate, run errors first when the run broke outside its tests, error categories, project cards.
|
|
41
|
-
- **Errors:** every error group, built from normalized error signatures, with the failed / flaky split and links to the affected tests.
|
|
41
|
+
- **Errors:** every error group, built from normalized error signatures, with the failed / flaky split and links to the affected tests. A group page has previous / next buttons: from a category, they stay within that category.
|
|
42
|
+
- **Test detail:** title path, outcome, project, `file:line`, tags, annotations and dimensions, then one tab per attempt (the last failing attempt first; `?attempt=` in the URL): errors with Expected / Received and diffs highlighted and the code snippet, steps (`test.step` and failing steps, the failing path expanded; "Show all steps" for hooks, fixtures and API calls), attachments listed by kind, stdout and stderr. Previous / next walk the Tests view's current list.
|
|
43
|
+
- **Copy buttons:** rerun commands (this test, the failed tests of its file, the failed tests of the current list) and an AI prompt describing the failure, in English. Both are only copied to the clipboard; nothing is sent anywhere. Projects failing on the same lines share one command (`--project=a --project=b`); otherwise each project gets its own, joined with `&&`.
|
|
44
|
+
- The commands target **POSIX shells** (bash, zsh; not `cmd.exe`) and run from the Playwright root directory: paths in the report are relative to it.
|
|
45
|
+
- A `file:line` argument targets the line where the test is declared and reruns every test declared on that line. A command is only valid while the file has not changed since the run.
|
|
42
46
|
- **Suite health:** dimensions from tags and annotations (with hints for unknown or inconsistent values), slowest, skipped and flaky tests.
|
|
43
|
-
- **Tests:** every test in one sortable list, filtered by status, error category, project, tag and dimension, with the count each filter would give. Header counts, error categories and dimension values open it pre-filtered. Large lists show their first 500 rows, with "Show 500 more" and "Show all".
|
|
47
|
+
- **Tests:** every test in one sortable list (by default in declaration order, as in the sidebar: project, file, line; the Status header sorts failed, flaky, passed, skipped), filtered by status, error category, project, tag and dimension, with the count each filter would give. Header counts, error categories and dimension values open it pre-filtered. Large lists show their first 500 rows, with "Show 500 more" and "Show all".
|
|
44
48
|
- **Sidebar:** search (`/` to focus), projects, folders, files, `describe` blocks and tests, with status icons, failure counts and keyboard navigation. The folder shared by every file is not repeated.
|
|
45
49
|
- **Filters in the URL:** search, filters and sort live in the link, so a filtered view can be shared or bookmarked, even from `file://`. A project without a `name` (Playwright's default project) cannot be selected in the project filter: an empty name cannot be written in the URL. Give your projects a name to filter by them. Each tag is filterable in one place only: a tag a dimension is built from (`@layer:ui` with a `layer` dimension, configured or automatic) is in that dimension's filter (Layer: `ui`), not in the tag filter, so the two can never be combined into an empty result. Unprefixed tags (`@smoke`) and prefixed tags no dimension uses stay in the tag filter.
|
|
46
50
|
|
|
51
|
+
### Keyboard shortcuts
|
|
52
|
+
|
|
53
|
+
| Key | Action | Where |
|
|
54
|
+
| --- | --- | --- |
|
|
55
|
+
| `j` / `k` | Next / previous test | Test detail |
|
|
56
|
+
| `[` / `]` | Previous / next attempt | Test detail |
|
|
57
|
+
| `n` / `p` | Next / previous error group | Error group page |
|
|
58
|
+
| `/` | Focus the search | Everywhere |
|
|
59
|
+
| `Escape` | Clear the search, close a dialog | Everywhere |
|
|
60
|
+
| `?` | Show keyboard shortcuts | Everywhere |
|
|
61
|
+
|
|
62
|
+
Single keys do nothing while typing in a field or with Ctrl, Alt or Meta held. The keyboard icon in the header opens the same list.
|
|
63
|
+
|
|
47
64
|
### Coming next
|
|
48
65
|
|
|
49
|
-
-
|
|
66
|
+
- Media viewers in the test detail: screenshot comparison (side-by-side, slider, overlay, diff), video player, trace viewer.
|
|
50
67
|
|
|
51
68
|
History and flakiness tracking are planned for a later phase; the JSON model is already prepared for them.
|
|
52
69
|
|
|
@@ -69,9 +86,13 @@ export default defineConfig({
|
|
|
69
86
|
{ name: 'Bug', from: 'annotation', type: 'bug' },
|
|
70
87
|
],
|
|
71
88
|
},
|
|
89
|
+
// Leave stack traces out of the copyable AI prompt (default: true).
|
|
90
|
+
aiPrompt: { includeStack: false },
|
|
72
91
|
});
|
|
73
92
|
```
|
|
74
93
|
|
|
94
|
+
`aiPrompt.includeStack` (default `true`) sets whether the AI prompt copied from the test detail includes each error's stack trace. Like `title` and `theme`, it is a presentation setting written to `index.html`, not to `report.json`.
|
|
95
|
+
|
|
75
96
|
Options can also be passed inline (`['@qartisan/playwright-loupe', { title: 'Nightly' }]`) and through `LOUPE_*` environment variables. Precedence: defaults < config file < inline options < environment variables. The config is validated at startup: an invalid option, or a typo in a key, stops the run with an explicit message.
|
|
76
97
|
|
|
77
98
|
Every option, the lookup rules and the environment variables are documented in [`docs/config.md`](docs/config.md).
|
|
@@ -95,7 +116,7 @@ Node.js 22.12 is the minimum because ES module config files are loaded with `req
|
|
|
95
116
|
| `npm run typecheck` | Type-checks the core, tests, fixtures and renderer. |
|
|
96
117
|
| `npm test` | Builds, then runs the Vitest unit tests and the integration tests (fixture suite, and a sharded run merged with `merge-reports`). |
|
|
97
118
|
| `npm run fixtures` | Builds, then runs the fixture suite into `loupe-report/`. Its failures are intentional, see [`fixtures/README.md`](fixtures/README.md). |
|
|
98
|
-
| `npm run sample:update` | Builds, then runs the fixture suite with `fixtures/sample.config.ts` and writes its report to `src/renderer/dev/sample.json`: failures, flaky and skipped tests, a partial run and a run error. |
|
|
99
|
-
| `npm run dev:renderer` | Vite dev server for the renderer, fed with `src/renderer/dev/sample.json`, with hot reload
|
|
119
|
+
| `npm run sample:update` | Builds, then runs the fixture suite with `fixtures/sample.config.ts` and writes its report to `src/renderer/dev/sample.json`: failures, flaky and skipped tests, a partial run and a run error. Its attachment files go to `src/renderer/dev/data/` (gitignored). |
|
|
120
|
+
| `npm run dev:renderer` | Vite dev server for the renderer, fed with `src/renderer/dev/sample.json`, with hot reload; it serves the sample's attachments at `data/`. No Playwright run needed for UI work. |
|
|
100
121
|
|
|
101
122
|
Tests that drive a browser need Chromium: `npx playwright install chromium`.
|
package/dist/config/resolve.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare function stripPlaywrightKeys(options: Record<string, unknown>): R
|
|
|
24
24
|
export declare function envLayer(env: Env): LoupeConfig;
|
|
25
25
|
/**
|
|
26
26
|
* Merges `layer` over `base`: nested objects (`categories`, `dimensions`,
|
|
27
|
-
* `screenshots`) merge key by key; arrays and other values replace. An
|
|
27
|
+
* `screenshots`, `aiPrompt`) merge key by key; arrays and other values replace. An
|
|
28
28
|
* `undefined` value leaves the base untouched.
|
|
29
29
|
*/
|
|
30
30
|
export declare function mergeLayers<T extends object>(base: T, layer: object): T;
|
package/dist/config/resolve.js
CHANGED
|
@@ -47,7 +47,7 @@ function isObject(value) {
|
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Merges `layer` over `base`: nested objects (`categories`, `dimensions`,
|
|
50
|
-
* `screenshots`) merge key by key; arrays and other values replace. An
|
|
50
|
+
* `screenshots`, `aiPrompt`) merge key by key; arrays and other values replace. An
|
|
51
51
|
* `undefined` value leaves the base untouched.
|
|
52
52
|
*/
|
|
53
53
|
export function mergeLayers(base, layer) {
|
|
@@ -114,5 +114,6 @@ export function resolveConfig(layers) {
|
|
|
114
114
|
dimensions: { auto: merged.dimensions?.auto ?? true, definitions: resolveDimensions(merged) },
|
|
115
115
|
screenshots: { defaultView: merged.screenshots?.defaultView ?? 'side-by-side' },
|
|
116
116
|
theme: merged.theme ?? 'system',
|
|
117
|
+
aiPrompt: { includeStack: merged.aiPrompt?.includeStack ?? true },
|
|
117
118
|
};
|
|
118
119
|
}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -68,6 +68,10 @@ export interface LoupeConfig {
|
|
|
68
68
|
};
|
|
69
69
|
/** Default theme of the report. Default: `system`. */
|
|
70
70
|
theme?: Theme;
|
|
71
|
+
aiPrompt?: {
|
|
72
|
+
/** Include each error's stack trace in the copyable AI prompt. Default: `true`. */
|
|
73
|
+
includeStack?: boolean;
|
|
74
|
+
};
|
|
71
75
|
}
|
|
72
76
|
/** Inline reporter options: a config, plus the path of the config file. */
|
|
73
77
|
export interface LoupeReporterOptions extends LoupeConfig {
|
|
@@ -114,4 +118,7 @@ export interface ResolvedConfig {
|
|
|
114
118
|
defaultView: ScreenshotView;
|
|
115
119
|
};
|
|
116
120
|
theme: Theme;
|
|
121
|
+
aiPrompt: {
|
|
122
|
+
includeStack: boolean;
|
|
123
|
+
};
|
|
117
124
|
}
|
package/dist/config/validate.js
CHANGED
|
@@ -227,6 +227,7 @@ export function validateConfig(value, source, options = {}) {
|
|
|
227
227
|
dimensions: object({ auto: boolean(ctx), definitions: arrayOf(dimension(ctx), ctx) }, ctx),
|
|
228
228
|
screenshots: object({ defaultView: oneOf(SCREENSHOT_VIEWS, ctx) }, ctx),
|
|
229
229
|
theme: oneOf(THEMES, ctx),
|
|
230
|
+
aiPrompt: object({ includeStack: boolean(ctx) }, ctx),
|
|
230
231
|
};
|
|
231
232
|
if (options.allowConfigFile)
|
|
232
233
|
fields['configFile'] = nonEmptyString(ctx);
|
package/dist/core/inject.d.ts
CHANGED
|
@@ -13,6 +13,10 @@ export interface RendererSettings {
|
|
|
13
13
|
screenshots: {
|
|
14
14
|
defaultView: 'side-by-side' | 'slider' | 'overlay' | 'diff';
|
|
15
15
|
};
|
|
16
|
+
/** The copyable AI prompt of the test detail. */
|
|
17
|
+
aiPrompt: {
|
|
18
|
+
includeStack: boolean;
|
|
19
|
+
};
|
|
16
20
|
}
|
|
17
21
|
export declare const DEFAULT_RENDERER_SETTINGS: RendererSettings;
|
|
18
22
|
/**
|
package/dist/core/inject.js
CHANGED
package/dist/core/reporter.js
CHANGED
|
@@ -52,6 +52,7 @@ export class LoupeReporter {
|
|
|
52
52
|
title: this.loupeConfig.title,
|
|
53
53
|
theme: this.loupeConfig.theme,
|
|
54
54
|
screenshots: { defaultView: this.loupeConfig.screenshots.defaultView },
|
|
55
|
+
aiPrompt: { includeStack: this.loupeConfig.aiPrompt.includeStack },
|
|
55
56
|
};
|
|
56
57
|
const template = await readFile(TEMPLATE_URL, 'utf8');
|
|
57
58
|
await mkdir(outputFolder, { recursive: true });
|
package/dist/renderer/index.html
CHANGED
|
@@ -4,10 +4,15 @@
|
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<title>Loupe report</title>
|
|
7
|
-
<script type="module">var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h={},g=[],_=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,v=Array.isArray;function y(e,t){for(var n in t)e[n]=t[n];return e}function ee(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function b(t,n,r){var i,a,o,s={};for(o in n)o==`key`?i=n[o]:o==`ref`?a=n[o]:s[o]=n[o];if(arguments.length>2&&(s.children=arguments.length>3?e.call(arguments,2):r),typeof t==`function`&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return x(t,s,i,a,null)}function x(e,r,i,a,o){var s={type:e,props:r,key:i,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++n,__i:-1,__u:0};return o==null&&t.vnode!=null&&t.vnode(s),s}function S(e){return e.children}function te(e,t){this.props=e,this.context=t}function C(e,t){if(t==null)return e.__?C(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?C(e):null}function w(e){if(e.__P&&e.__d){var n=e.__v,r=n.__e,i=[],a=[],o=y({},n);o.__v=n.__v+1,t.vnode&&t.vnode(o),ce(e.__P,o,n,e.__n,e.__P.namespaceURI,32&n.__u?[r]:null,i,r??C(n),!!(32&n.__u),a),o.__v=n.__v,o.__.__k[o.__i]=o,ue(i,o,a),n.__e=n.__=null,o.__e!=r&&T(o)}}function T(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),T(e)}function E(e){(!e.__d&&(e.__d=!0)&&i.push(e)&&!D.__r++||a!=t.debounceRendering)&&((a=t.debounceRendering)||o)(D)}function D(){try{for(var e,t=1;i.length;)i.length>t&&i.sort(s),e=i.shift(),t=i.length,w(e)}finally{i.length=D.__r=0}}function ne(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,_,v,y=r&&r.__k||g,ee=t.length;for(c=re(n,t,y,c,ee),d=0;d<ee;d++)(p=n.__k[d])!=null&&(f=p.__i!=-1&&y[p.__i]||h,p.__i=d,v=ce(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&pe(f.ref,null,p),u.push(p.ref,p.__c||m,p)),_==null&&m!=null&&(_=m),4&p.__u?(c=ie(p,c,e),f.__e&&(f.__e=null)):typeof p.type==`function`&&v!==void 0?c=v:m&&(c=m.nextSibling),p.__u&=-7);return n.__e=_,c}function re(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=x(null,o,null,null,null):v(o)?o=e.__k[a]=x(S,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=x(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,s=null,(l=o.__i=ae(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=C(s)),me(s,s));return r}function ie(e,t,n){var r,i;if(typeof e.type==`function`){for(r=e.__k,i=0;r&&i<r.length;i++)r[i]&&(r[i].__=e,t=ie(r[i],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=C(e)),t=n.insertBefore(e.__e,t||null));do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function ae(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&!(2&l.__u);if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function oe(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||_.test(t)?n:n+`px`}function O(e,t,n,r,i){var a,o;n:if(t==`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||oe(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||oe(e.style,t,n[t])}}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(d,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n[u]=r[u]:(n[u]=f,e.addEventListener(t,a?m:p,a)):e.removeEventListener(t,a?m:p,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function se(e){return function(n){if(this.l){var r=this.l[n.type+e];if(n[l]==null)n[l]=f++;else if(n[l]<r[u])return;return r(t.event?t.event(n):n)}}}function ce(e,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,_,b,x,w,T,E,D,re,ie,ae,oe,O=n.type;if(n.constructor!==void 0)return null;128&r.__u&&(l=!!(32&r.__u),o=[c=n.__e=r.__e]),(d=t.__b)&&d(n);n:if(typeof O==`function`){f=s.length;try{if(w=n.props,T=O.prototype&&O.prototype.render,E=(d=O.contextType)&&i[d.__c],D=d?E?E.props.value:d.__:i,r.__c?x=(p=n.__c=r.__c).__=p.__E:(T?n.__c=p=new O(w,D):(n.__c=p=new te(w,D),p.constructor=O,p.render=he),E&&E.sub(p),p.state||(p.state={}),p.__n=i,m=p.__d=!0,p.__h=[],p._sb=[]),T&&p.__s==null&&(p.__s=p.state),T&&O.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=y({},p.__s)),y(p.__s,O.getDerivedStateFromProps(w,p.__s))),h=p.props,_=p.state,p.__v=n,m)T&&O.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),T&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(T&&O.getDerivedStateFromProps==null&&w!==h&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(w,D),n.__v==r.__v||!p.__e&&p.shouldComponentUpdate!=null&&!1===p.shouldComponentUpdate(w,p.__s,D)){n.__v!=r.__v&&(p.props=w,p.state=p.__s,p.__d=!1),n.__e=r.__e,n.__k=r.__k,n.__k.some(function(e){e&&(e.__=n)}),g.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p),c=C(r);break n}p.componentWillUpdate!=null&&p.componentWillUpdate(w,p.__s,D),T&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(h,_,b)})}if(p.context=D,p.props=w,p.__P=e,p.__e=!1,re=t.__r,ie=0,T)p.state=p.__s,p.__d=!1,re&&re(n),d=p.render(p.props,p.state,p.context),g.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,re&&re(n),d=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++ie<25);p.state=p.__s,p.getChildContext!=null&&(i=y(y({},i),p.getChildContext())),T&&!m&&p.getSnapshotBeforeUpdate!=null&&(b=p.getSnapshotBeforeUpdate(h,_)),ae=d!=null&&d.type===S&&d.key==null?de(d.props.children):d,c=ne(e,v(ae)?ae:[ae],n,r,i,a,o,s,c,l,u),p.base=n.__e,n.__u&=-161,p.__h.length&&s.push(p),x&&(p.__E=p.__=null)}catch(e){if(s.length=f,n.__v=null,l||o!=null){if(e.then){for(n.__u|=l?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o!=null&&(o[o.indexOf(c)]=null),n.__e=c}else if(o!=null)for(oe=o.length;oe--;)ee(o[oe])}else n.__e=r.__e;n.__k??=r.__k||[],e.then||le(n),t.__e(e,n,r)}}else o==null&&n.__v==r.__v?(n.__k=r.__k,n.__e=r.__e):c=n.__e=fe(r.__e,n,r,i,a,o,s,l,u);return(d=t.diffed)&&d(n),128&n.__u?void 0:c}function le(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(le))}function ue(e,n,r){for(var i=0;i<r.length;i++)pe(r[i],r[++i],r[++i]);t.__c&&t.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){t.__e(e,n.__v)}})}function de(e){return typeof e!=`object`||!e||e.__b>0?e:v(e)?e.map(de):e.constructor===void 0?y({},e):null}function fe(n,r,i,a,o,s,c,l,u){var d,f,p,m,g,_,y,b=i.props||h,x=r.props,S=r.type;if(S==`svg`?o=`http://www.w3.org/2000/svg`:S==`math`?o=`http://www.w3.org/1998/Math/MathML`:o||=`http://www.w3.org/1999/xhtml`,s!=null){for(d=0;d<s.length;d++)if((g=s[d])&&`setAttribute`in g==!!S&&(S?g.localName==S:g.nodeType==3)){n=g,s[d]=null;break}}if(n==null){if(S==null)return document.createTextNode(x);n=document.createElementNS(o,S,x.is&&x),l&&=(t.__m&&t.__m(r,s),!1),s=null}if(S==null)b===x||l&&n.data==x||(n.data=x);else{if(s=S==`textarea`&&x.defaultValue!=null?null:s&&e.call(n.childNodes),!l&&s!=null)for(b={},d=0;d<n.attributes.length;d++)b[(g=n.attributes[d]).name]=g.value;for(d in b)g=b[d],d==`dangerouslySetInnerHTML`?p=g:d==`children`||d in x||d==`value`&&`defaultValue`in x||d==`checked`&&`defaultChecked`in x||O(n,d,null,g,o);for(d in x)g=x[d],d==`children`?m=g:d==`dangerouslySetInnerHTML`?f=g:d==`value`?_=g:d==`checked`?y=g:l&&typeof g!=`function`||b[d]===g||O(n,d,g,b[d],o);if(f)l||p&&(f.__html==p.__html||f.__html==n.innerHTML)||(n.innerHTML=f.__html),r.__k=[];else if(p&&(n.innerHTML=``),ne(r.type==`template`?n.content:n,v(m)?m:[m],r,i,a,S==`foreignObject`?`http://www.w3.org/1999/xhtml`:o,s,c,s?s[0]:i.__k&&C(i,0),l,u),s!=null)for(d=s.length;d--;)ee(s[d]);l&&S!=`textarea`||(d=`value`,S==`progress`&&_==null?n.removeAttribute(`value`):_!=null&&(_!==n[d]||S==`progress`&&!_||S==`option`&&_!=b[d])&&O(n,d,_,b[d],o),d=`checked`,y!=null&&y!=n[d]&&O(n,d,y,b[d],o))}return n}function pe(e,n,r){try{if(typeof e==`function`){var i=typeof e.__u==`function`;i&&e.__u(),i&&n==null||(e.__u=e(n))}else e.current=n}catch(e){t.__e(e,r)}}function me(e,n,r){var i,a;if(t.unmount&&t.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||pe(i,null,n)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){t.__e(e,n)}i.base=i.__P=i.__n=null}if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&me(i[a],n,r||typeof e.type!=`function`);r||ee(e.__e),e.__c=e.__=e.__e=void 0}function he(e,t,n){return this.constructor(e,n)}function ge(n,r,i){var a,o,s,c;r==document&&(r=document.documentElement),t.__&&t.__(n,r),o=(a=typeof i==`function`)?null:i&&i.__k||r.__k,s=[],c=[],ce(r,n=(!a&&i||r).__k=b(S,null,[n]),o||h,h,r.namespaceURI,!a&&i?[i]:o?null:r.firstChild?e.call(r.childNodes):null,s,!a&&i?i:o?o.__e:r.firstChild,a,c),ue(s,n,c),n.props.children=null}e=g.slice,t={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},n=0,r=function(e){return e!=null&&e.constructor===void 0},te.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=y({},this.state);typeof e==`function`&&(e=e(y({},n),this.props)),e&&y(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),E(this))},te.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),E(this))},te.prototype.render=S,i=[],o=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,s=function(e,t){return e.__v.__b-t.__v.__b},D.__r=0,c=Math.random().toString(8),l=`__d`+c,u=`__a`+c,d=/(PointerCapture)$|Capture$/i,f=0,p=se(!1),m=se(!0);var _e,k,ve,ye,be=0,xe=[],A=t,Se=A.__b,Ce=A.__r,we=A.diffed,Te=A.__c,Ee=A.unmount,De=A.__;function Oe(e,t){A.__h&&A.__h(k,e,be||t),be=0;var n=k.__H||(k.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function ke(e){return be=1,Ae(Re,e)}function Ae(e,t,n){var r=Oe(_e++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Re(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=k,!k.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=!1,o=r.__c.props!==e;if(r.__c.__H.__.some(function(e){if(e.__N){i=!0;var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a){var s=a.call(this,e,t,n);return i?s||o:s}return!i||o};k.__f=!0;var a=k.shouldComponentUpdate,o=k.componentWillUpdate;k.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},k.shouldComponentUpdate=i}return r.__N||r.__}function je(e,t){var n=Oe(_e++,3);!A.__s&&Le(n.__H,t)&&(n.__=e,n.u=t,k.__H.__h.push(n))}function j(e,t){var n=Oe(_e++,4);!A.__s&&Le(n.__H,t)&&(n.__=e,n.u=t,k.__h.push(n))}function M(e){return be=5,N(function(){return{current:e}},[])}function N(e,t){var n=Oe(_e++,7);return Le(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Me(){for(var e;e=xe.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Fe),t.__h.some(Ie),t.__h=[]}catch(n){t.__h=[],A.__e(n,e.__v)}}}A.__b=function(e){k=null,Se&&Se(e)},A.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),De&&De(e,t)},A.__r=function(e){Ce&&Ce(e),_e=0;var t=(k=e.__c).__H;t&&(ve===k?(t.__h=[],k.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(Fe),t.__h.some(Ie),t.__h=[],_e=0)),ve=k},A.diffed=function(e){we&&we(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(xe.push(t)!==1&&ye===A.requestAnimationFrame||((ye=A.requestAnimationFrame)||Pe)(Me)),t.__H.__.some(function(e){e.u&&=(e.__H=e.u,void 0)})),ve=k=null},A.__c=function(e,t){t.some(function(e){try{e.__h.some(Fe),e.__h=e.__h.filter(function(e){return!e.__||Ie(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],A.__e(n,e.__v)}}),Te&&Te(e,t)},A.unmount=function(e){Ee&&Ee(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{Fe(e)}catch(e){t=e}}),n.__H=void 0,t&&A.__e(t,n.__v))};var Ne=typeof requestAnimationFrame==`function`;function Pe(e){var t,n=function(){clearTimeout(r),Ne&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Ne&&(t=requestAnimationFrame(n))}function Fe(e){var t=k,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),k=t}function Ie(e){var t=k;e.__c=e.__(),k=t}function Le(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function Re(e,t){return typeof t==`function`?t(e):t}var ze=Symbol.for(`preact-signals`);function Be(){if(F>1)F--;else{var e,t=!1;for((function(){var e=Je;for(Je=void 0;e!==void 0;){var t=e.S;if(t.v===e.v)for(var n=t.t;n!==void 0;n=n.x)n.i===e.i&&(n.i=t.i);e=e.o}})();We!==void 0;){var n=We;for(We=void 0,Ge++;n!==void 0;){var r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Ze(n))try{n.c()}catch(n){t||=(e=n,!0)}n=r}}if(Ge=0,F--,t)throw e}}function Ve(e){if(F>0)return e();qe=++Ke,F++;try{return e()}finally{Be()}}var He,P=void 0;function Ue(e){var t=P,n=He;P=void 0,He=void 0;try{return e()}finally{P=t,He=n}}var We=void 0,F=0,Ge=0,Ke=0,qe=0,Je=void 0,Ye=0;function Xe(e){if(P!==void 0){var t=e.n;if(t===void 0||t.t!==P)return t={i:0,S:e,p:P.s,n:void 0,t:P,e:void 0,x:void 0,r:t},P.s!==void 0&&(P.s.n=t),P.s=t,e.n=t,32&P.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=P.s,t.n=void 0,P.s.n=t,P.s=t),t}}function I(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}I.prototype.brand=ze,I.prototype.h=function(){return!0},I.prototype.S=function(e){var t=this,n=this.t;n!==e&&e.e===void 0&&(e.x=n,this.t=e,n===void 0?Ue(function(){var e;(e=t.W)==null||e.call(t)}):n.e=e)},I.prototype.U=function(e){var t=this;if(this.t!==void 0){var n=e.e,r=e.x;n!==void 0&&(n.x=r,e.e=void 0),r!==void 0&&(r.e=n,e.x=void 0),e===this.t&&(this.t=r,r===void 0&&Ue(function(){var e;(e=t.Z)==null||e.call(t)}))}},I.prototype.subscribe=function(e){var t=this;return at(function(){var n=t.value;Ue(function(){return e(n)})},{name:`sub`})},I.prototype.valueOf=function(){return this.value},I.prototype.toString=function(){return this.value+``},I.prototype.toJSON=function(){return this.value},I.prototype.peek=function(){var e=this;return Ue(function(){return e.value})},Object.defineProperty(I.prototype,"value",{get:function(){var e=Xe(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(Ge>100)throw Error(`Cycle detected`);(function(e){F!==0&&Ge===0&&e.l!==qe&&(e.l=qe,Je={S:e,v:e.v,i:e.i,o:Je})})(this),this.v=e,this.i++,Ye++,F++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Be()}}}});function L(e,t){return new I(e,t)}function Ze(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function Qe(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function $e(e){for(var t=e.s,n=void 0;t!==void 0;){var r=t.p;t.i===-1?(t.S.U(t),r!==void 0&&(r.n=t.n),t.n!==void 0&&(t.n.p=r)):n=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=r}e.s=n}function R(e,t){I.call(this,void 0,t),this.x=e,this.s=void 0,this.g=Ye-1,this.f=4}R.prototype=new I,R.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Ye))return!0;if(this.g=Ye,this.f|=1,this.i>0&&!Ze(this))return this.f&=-2,!0;var e=P;try{Qe(this),P=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return P=e,$e(this),this.f&=-2,!0},R.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}I.prototype.S.call(this,e)},R.prototype.U=function(e){if(this.t!==void 0&&(I.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},R.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(R.prototype,"value",{get:function(){if(1&this.f)throw Error(`Cycle detected`);var e=Xe(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function et(e,t){return new R(e,t)}function tt(e){var t=e.m;if(e.m=void 0,typeof t==`function`){F++;var n=P;P=void 0;try{t()}catch(t){throw e.f&=-2,e.f|=8,nt(e),t}finally{P=n,Be()}}}function nt(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,tt(e)}function rt(e){if(P!==this)throw Error(`Out-of-order effect`);$e(this),P=e,this.f&=-2,8&this.f&&nt(this),Be()}function it(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t?.name,He&&He.push(this)}it.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t==`function`&&(this.m=t)}finally{e()}},it.prototype.S=function(){if(1&this.f)throw Error(`Cycle detected`);this.f|=1,this.f&=-9,tt(this),Qe(this),F++;var e=P;return P=this,rt.bind(this,e)},it.prototype.N=function(){2&this.f||(this.f|=2,this.u=We,We=this)},it.prototype.d=function(){this.f|=8,1&this.f||nt(this)},it.prototype.dispose=function(){this.d()};function at(e,t){var n=new it(e,t);try{n.c()}catch(e){throw n.d(),e}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var ot,st,ct=typeof window<`u`&&!!window.__PREACT_SIGNALS_DEVTOOLS__,lt=[];at(function(){ot=this.N})();function z(e,n){t[e]=n.bind(null,t[e]||function(){})}function ut(e){if(st){var t=st;st=void 0,t()}st=e&&e.S()}function dt(e){var t=this,n=e.data,i=pt(n);i.name=`ReactiveDom`,i.value=n;var a=N(function(){for(var e=t,n=t.__v;n=n.__;)if(n.__c){n.__c.__$f|=4;break}var a=et(function(){var e=i.value.value;return e===0?0:!0===e?``:e||``}),o=et(function(){return!Array.isArray(a.value)&&!r(a.value)}),s=at(function(){if(this.N=gt,o.value){var t=a.value;e.__v&&e.__v.__e&&e.__v.__e.nodeType===3&&(e.__v.__e.data=t)}}),c=t.__$u.d;return t.__$u.d=function(){s(),c.call(this)},[o,a]},[]),o=a[0],s=a[1];return o.value?s.peek():s.value}dt.displayName=`ReactiveTextNode`,Object.defineProperties(I.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:dt},props:{configurable:!0,get:function(){var e=this;return{data:{get value(){return e.value}}}}},__b:{configurable:!0,value:1}}),z(`__b`,function(e,t){if(ut(),typeof t.type==`string`){var n,r=t.props;for(var i in r)if(i!==`children`){var a=r[i];a instanceof I&&(n||(t.__np=n={}),n[i]=a,r[i]=a.peek())}}e(t)}),z(`__r`,function(e,t){if(e(t),t.type!==S){ut();var n,r=t.__c;r&&(r.__$f&=-2,(n=r.__$u)===void 0&&(r.__$u=n=function(e,t){var n;return at(function(){n=this},{name:t}),n.c=e,n}(function(e){return function(){var t;ct&&((t=this.y)==null||t.call(this)),e.__$f|=1,e.setState({})}}(r),typeof t.type==`function`?t.type.displayName||t.type.name:``))),ut(n)}}),z(`__e`,function(e,t,n,r){ut(),e(t,n,r)}),z(`diffed`,function(e,t){ut();var n;if(typeof t.type==`string`&&(n=t.__e)){var r=t.__np,i=t.props,a=n.U;if(a)for(var o in a){var s=a[o];s===void 0||r&&o in r||(s.d(),a[o]=void 0)}if(r)for(var c in a||(a={},n.U=a),r){var l=a[c],u=r[c];l===void 0?(l=ft(n,c,u,i),a[c]=l):l.o(u,i)}}e(t)});function ft(e,t,n,r){var i=t in e&&e.ownerSVGElement===void 0,a=L(n);return{o:function(e,t){a.value=e,r=t},d:at(function(){this.N=gt;var n=a.value.value;r[t]!==n&&(r[t]=n,i?e[t]=n:n!=null&&(!1!==n||t[4]===`-`)?e.setAttribute(t,n):e.removeAttribute(t))})}}z(`unmount`,function(e,t){if(typeof t.type==`string`){var n=t.__e;if(n){var r=n.U;if(r)for(var i in n.U=void 0,r){var a=r[i];a&&a.d()}}var o=t.__np;if(o){var s=t.props;for(var c in o)s[c]=o[c]}t.__np=void 0}else{var l=t.__c;if(l){l.__$f|=8;var u=l.__$u;u&&(l.__$u=void 0,u.d())}}e(t)}),z(`__h`,function(e,t,n,r){r<3&&(t.__$f|=2),e(t,n,r)}),te.prototype.shouldComponentUpdate=function(e,t){if(this.__R)return!0;var n=this.__$u,r=n&&n.s!==void 0;for(var i in t)return!0;if(this.__f||typeof this.u==`boolean`&&!0===this.u){var a=2&this.__$f;if(!(r||a||4&this.__$f)||1&this.__$f)return!0}else if(!(r||4&this.__$f)||3&this.__$f)return!0;for(var o in e)if(o!==`__source`&&e[o]!==this.props[o])return!0;for(var s in this.props)if(!(s in e))return!0;return!1};function pt(e,t){return N(function(){return L(e,t)},[])}var mt=function(e){queueMicrotask(function(){queueMicrotask(e)})};function ht(){Ve(function(){for(var e;e=lt.shift();)ot.call(e)})}function gt(){lt.push(this)===1&&(t.requestAnimationFrame||mt)(ht)}function _t(e){try{return window.localStorage.getItem(e)}catch{return null}}function vt(e,t){try{window.localStorage.setItem(e,t)}catch{}}var yt=`loupe.sidebar`,bt=`(max-width: 760px)`;function xt(){return window.matchMedia(bt).matches}var B=L(!xt()&&_t(yt)!==`closed`);function St(){B.value=!B.value,xt()||vt(yt,B.value?`open`:`closed`)}var Ct=L(null);function wt(e){B.value=!0,Ct.value={key:e,seq:(Ct.value?.seq??0)+1}}var Tt=/^(0|[1-9]\d*)$/,Et={"run-errors":{page:`errors`}};function Dt(e){try{return decodeURIComponent(e)}catch{return null}}function Ot(e){return Dt(e)??e}function kt(e){let t=e.split(`/`).filter(e=>e!==``).map(Dt);if(t.some(e=>e===null))return{page:`not-found`,path:e};let[n,r,i,a]=t;if(t.length===0)return{page:`dashboard`};if(t.length===1&&(n===`errors`||n===`health`||n===`tests`))return{page:n};if(n===`errors`&&r===`category`&&t.length===3&&i!==void 0)return{page:`errors`,category:i};if(t.length===1&&n!==void 0&&Object.hasOwn(Et,n))return Et[n];if(n===`group`&&r!==void 0&&t.length===2)return{page:`group`,signature:r};if(n===`test`&&r!==void 0){if(t.length===2)return{page:`test`,id:r,repeatEachIndex:0};if(t.length===4&&i===`repeat`&&a!==void 0&&Tt.test(a))return{page:`test`,id:r,repeatEachIndex:Number(a)}}return{page:`not-found`,path:e}}function At(e){let t=e.startsWith(`#`)?e.slice(1):e,n=t.indexOf(`?`),r=n===-1?t:t.slice(0,n),i=n===-1?``:t.slice(n+1);return{route:kt(r),search:i}}function jt(e){switch(e.page){case`dashboard`:return`/`;case`errors`:return e.category===void 0?`/errors`:`/errors/category/${encodeURIComponent(e.category)}`;case`health`:return`/health`;case`tests`:return`/tests`;case`test`:{let t=`/test/${encodeURIComponent(e.id)}`;return e.repeatEachIndex===0?t:`${t}/repeat/${e.repeatEachIndex}`}case`group`:return`/group/${encodeURIComponent(e.signature)}`;case`not-found`:return e.path.startsWith(`/`)?e.path:`/${e.path}`}}function V(e){return`#${jt(e.route)}${e.search?`?${e.search}`:``}`}function Mt(e){let t=((e.startsWith(`#`)?e.slice(1):e).split(`?`)[0]??``).split(`/`).filter(e=>e!==``);return t.length!==1||!Object.hasOwn(Et,Ot(t[0]))?null:V(At(e))}var Nt=e=>e;function Pt(){let e=window.location.hash,t=At(e),n={route:t.route,search:Nt(t.search)};return(Mt(e)!==null||n.search!==t.search)&&window.history.replaceState(window.history.state,``,V(n)),n}var H=L(Pt());function Ft(){let e=Pt();V(e)!==V(H.value)&&(H.value=e)}window.addEventListener(`hashchange`,Ft),window.addEventListener(`popstate`,Ft);function It(e){Nt=e,Ft()}function U(e){return V({route:e,search:H.value.search})}function Lt(e){window.location.hash=U(e)}function Rt(e,t){let n=V(e);n!==V(H.value)&&(t===`push`?window.history.pushState(null,``,n):window.history.replaceState(window.history.state,``,n),H.value=e)}var zt=[`passed`,`failed`,`flaky`,`skipped`];function Bt(e,t){return t.status!==e.expectedStatus&&t.status!==`skipped`}function Vt(e){let t=new Map;for(let n of e.tests)for(let e of n.attempts)if(Bt(n,e))for(let r of e.errors){let i=t.get(r.signature);i||(i={signature:r.signature,category:r.category??`Uncategorized`,message:r.message,tests:[],failed:0,flaky:0},t.set(r.signature,i));let a=i.tests[i.tests.length-1];a?.test===n?a.attempts.includes(e.index)||a.attempts.push(e.index):(i.tests.push({test:n,attempts:[e.index]}),n.outcome===`failed`?i.failed+=1:n.outcome===`flaky`&&(i.flaky+=1))}return[...t.values()]}function Ht(e){return e.map((e,t)=>({group:e,index:t})).sort((e,t)=>t.group.failed-e.group.failed||t.group.flaky-e.group.flaky||e.index-t.index).map(({group:e})=>e)}function Ut(e){return e.split(`
|
|
8
|
-
`).find(e=>e.trim()!==``)?.trim()??``}var
|
|
9
|
-
`)),categories:Vn(e)},Hn.set(e,t)),t}function Wn(e){return Un(e).categories}function Gn(e){let t=Wn(e),n=e.category!==null&&t.includes(e.category)?e.category:t[0]??null;return{primary:n,others:t.filter(e=>e!==n)}}function Kn(e,t,n=In){switch(t){case`status`:return[e.outcome];case`project`:return[e.project];case`tag`:return Rn(e.tags,n);case`category`:return Wn(e);default:return e.dimensions[wn(t)??``]??[]}}function qn(e,t){if(t.length===0)return!0;let{haystack:n}=Un(e);return t.every(e=>n.includes(e))}function Jn(e,t,n,r){if(n.length===0)return!0;let i=Kn(e,t,r);return n.some(e=>i.includes(e))}function Yn(e,t,n=In){let r=Bn(t.q),i=yn(t.facets);return e.filter(e=>qn(e,r)&&i.every(([t,r])=>Jn(e,t,r,n)))}function Xn(e,t,n,r=In){let i=new Map;for(let[e,t]of n)i.set(e,new Map([...t].map(e=>[e,0])));let a=Bn(t.q),o=yn(t.facets),s=(e,t)=>{let n=i.get(t);if(n)for(let i of new Set(Kn(e,t,r))){let e=n.get(i);e!==void 0&&n.set(i,e+1)}};for(let t of e){if(!qn(t,a))continue;let e=null,i=0;for(let[n,a]of o)if(!Jn(t,n,a,r)&&(i+=1,e=n,i>1))break;if(!(i>1)){if(e!==null)s(t,e);else for(let e of n.keys())s(t,e)}}return i}function Zn(e){let t=Ln(e),n=n=>new Set(e.tests.flatMap(e=>Kn(e,n,t))),r=(e,t)=>new Set([...e.filter(e=>t.has(e)),...[...t].filter(t=>!e.includes(t)).sort((e,t)=>e.localeCompare(t))]),i=new Map,a=(e,t)=>{t.size>0&&i.set(e,t)};a(`status`,r([`failed`,`flaky`,...zt.filter(e=>e!==`failed`&&e!==`flaky`)],n(`status`))),a(`category`,r(e.categories.map(e=>e.name),n(`category`)));let o=n(`project`);o.delete(``),a(`project`,r(e.projects.map(e=>e.name),o)),a(`tag`,r([],n(`tag`)));for(let t of e.dimensions){let e=Cn(t.name);a(e,r(t.values??[],n(e)))}return i}var Qn=L(new Map),$n=L(In);function er(e){Qn.value=Zn(e),$n.value=Ln(e),It(e=>Mn(kn(e,Qn.value)))}var tr=et(()=>kn(H.value.search,Qn.value));function nr(e,t=H.value.route){return V({route:t,search:Mn(e)})}function W(e,t=`push`,n=H.value.route){Rt({route:n,search:Mn(e)},t)}function rr(e){return e.replace(/\\/g,`/`)}function ir(e){let t=null;for(let n of e){let e=rr(n).split(`/`).slice(0,-1);if(t===null){t=e;continue}let r=0;for(;r<t.length&&r<e.length&&t[r]===e[r];)r+=1;if(t.length=r,r===0)break}return t&&t.length>0?`${t.join(`/`)}/`:``}function ar(e,t){let n=rr(e);return t!==``&&n.startsWith(t)?n.slice(t.length):n}var or=4;function sr(e){let t=/(?:\.[^./]{1,6}){1,2}$/.exec(e.slice(1))?.[0]??``,n=e.slice(0,e.length-t.length),r=n.length>12?or:0;return[n.slice(0,n.length-r),`${n.slice(n.length-r)}${t}`]}var cr=[{name:`blue`,reference:`#466cc8`,light:{text:`#385db7`,bg:`#eaf0fe`,border:`#5981df`},dark:{text:`#9ebdff`,bg:`#18233c`,border:`#577cd3`}},{name:`cyan`,reference:`#0a7da1`,light:{text:`#0a708f`,bg:`#e0f4fd`,border:`#2b8fb4`},dark:{text:`#60cdf5`,bg:`#002837`,border:`#268cb1`}},{name:`teal`,reference:`#04837c`,light:{text:`#09726c`,bg:`#dbf7f4`,border:`#29958e`},dark:{text:`#6ed2c9`,bg:`#002b28`,border:`#25928b`}},{name:`violet`,reference:`#8656b7`,light:{text:`#7747a7`,bg:`#f4ecfe`,border:`#9e6ed2`},dark:{text:`#cfaafc`,bg:`#2a1d37`,border:`#9468c3`}},{name:`magenta`,reference:`#ad4681`,light:{text:`#9d3772`,bg:`#feeaf3`,border:`#cc629d`},dark:{text:`#f79dcc`,bg:`#351928`,border:`#bb598f`}},{name:`orange`,reference:`#ab5803`,light:{text:`#954d09`,bg:`#feece1`,border:`#c6702b`},dark:{text:`#f9a970`,bg:`#361d0a`,border:`#bc671f`}},{name:`brown`,reference:`#745f43`,light:{text:`#3c2d18`,bg:`#f5e9d9`,border:`#60503a`},dark:{text:`#b7a182`,bg:`#302412`,border:`#ae9779`}},{name:`gold`,reference:`#b9a542`,light:{text:`#736308`,bg:`#f5f1da`,border:`#9a861a`},dark:{text:`#d2be5d`,bg:`#2b2403`,border:`#94800e`}}],lr={name:`neutral`,reference:`#6b6b6b`,light:{text:`#636363`,bg:`#f0f0f0`,border:`#868686`},dark:{text:`#bebebe`,bg:`#242424`,border:`#808080`}};cr.map(e=>e.name);function ur(e){let t=e.toLowerCase();return[...cr,lr].find(e=>e.reference===t)??null}var dr={light:[`#f7f5f0`,`#ffffff`,`#eeeae2`],dark:[`#080808`,`#0d0d0d`,`#161616`]},fr=4.5,pr=/^#[0-9a-fA-F]{6}$/;function mr(e){return pr.test(e)}function hr(e){if(!mr(e))throw TypeError(`not a #rrggbb color: ${e}`);let t=Number.parseInt(e.slice(1),16);return[t>>16&255,t>>8&255,t&255]}function gr([e,t,n]){return`#${[e,t,n].map(e=>Math.round(Math.min(255,Math.max(0,e))).toString(16).padStart(2,`0`)).join(``)}`}function _r(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function vr(e){return(e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055)*255}function yr(e){let[t,n,r]=hr(e).map(_r);return .2126*t+.7152*n+.0722*r}function br(e,t){let[n,r]=[yr(e),yr(t)].sort((e,t)=>t-e);return(n+.05)/(r+.05)}function xr(e){let[t,n,r]=hr(e).map(_r),i=Math.cbrt(.4122214708*t+.5363325363*n+.0514459929*r),a=Math.cbrt(.2119034982*t+.6806995451*n+.1073969566*r),o=Math.cbrt(.0883024619*t+.2817188376*n+.6299787005*r),s=.2104542553*i+.793617785*a-.0040720468*o,c=1.9779984951*i-2.428592205*a+.4505937099*o,l=.0259040371*i+.7827717662*a-.808675766*o,u=Math.atan2(l,c)*180/Math.PI;return{l:s,c:Math.hypot(c,l),h:u<0?u+360:u}}function Sr({l:e,c:t,h:n}){let r=t*Math.cos(n*Math.PI/180),i=t*Math.sin(n*Math.PI/180),a=(e+.3963377774*r+.2158037573*i)**3,o=(e-.1055613458*r-.0638541728*i)**3,s=(e-.0894841775*r-1.291485548*i)**3;return[4.0767416621*a-3.3077115913*o+.2309699292*s,-1.2684380046*a+2.6097574011*o-.3413193965*s,-.0041960863*a-.7034186147*o+1.707614701*s]}function Cr(e){let t=e.c;for(;;){let n=Sr({...e,c:t});if(n.every(e=>e>=-1e-4&&e<=1.0001)||t<=0)return gr(n.map(e=>vr(Math.min(1,Math.max(0,e)))));t=Math.max(0,t-.005)}}function wr(e,t,n,r){let i=t<n?.01:-.01;for(let a=t;i>0?a<=n:a>=n;a+=i){let t=Cr({...e,l:a});if(r(t))return t}return Cr({...e,l:n})}function Tr(e,t){let n=xr(e),r=n.c<.02?0:n.c,i=dr[t];if(t===`light`){let e=Cr({...n,l:.955,c:Math.min(r,.03)});return{text:wr({...n,c:Math.min(r,.16)},.5,0,t=>br(t,e)>=fr),bg:e,border:wr({...n,c:Math.min(r,.18)},.66,0,t=>[e,...i].every(e=>br(t,e)>=3))}}let a=Cr({...n,l:.26,c:Math.min(r,.05)});return{text:wr({...n,c:Math.min(r,.12)},.8,1,e=>br(e,a)>=fr),bg:a,border:wr({...n,c:Math.min(r,.14)},.6,1,e=>[a,...i].every(t=>br(e,t)>=3))}}var Er=new Map;function Dr(e){let t=e&&mr(e)?e.toLowerCase():lr.reference,n=Er.get(t);if(!n){let e=ur(t);n=e?{light:e.light,dark:e.dark}:{light:Tr(t,`light`),dark:Tr(t,`dark`)},Er.set(t,n)}return n}function Or(e){let{light:t,dark:n}=Dr(e);return{"--cat-text-light":t.text,"--cat-bg-light":t.bg,"--cat-border-light":t.border,"--cat-text-dark":n.text,"--cat-bg-dark":n.bg,"--cat-border-dark":n.border}}function kr(e){return new Map(e.map(e=>[e.name,e.color]))}function Ar(e){if(e<1e3)return`${Math.round(e)} ms`;if(e<6e4)return`${(e/1e3).toFixed(1)} s`;let t=Math.round(e/1e3);if(t<3600)return`${Math.floor(t/60)} min ${String(t%60).padStart(2,`0`)} s`;let n=Math.round(t/60);return`${Math.floor(n/60)} h ${String(n%60).padStart(2,`0`)} min`}function G(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}var jr=`\0`,Mr={project:`p`,folder:`d`,file:`f`,suite:`s`};function Nr(){return{total:0,passed:0,failed:0,flaky:0,skipped:0}}function Pr(e,t){return`t${jr}${e}${jr}${t}`}function Fr(e){return`p${jr}${e}`}function Ir(e,t,n,r){let i={kind:e,key:t,labels:[n],children:[],counts:Nr(),line:1/0};return r!==void 0&&(i.path=r),i}function Lr(e,t){return e.kind===`folder`==(t.kind===`folder`)?zr(e).localeCompare(zr(t)):e.kind===`folder`?-1:1}function Rr(e,t){return e.line===t.line?e.kind===`test`&&t.kind===`test`?e.column-t.column||e.repeatEachIndex-t.repeatEachIndex:e.kind===t.kind?zr(e).localeCompare(zr(t)):e.kind===`test`?1:-1:e.line-t.line}function zr(e){return e.kind===`test`?e.title:e.labels.join(` › `)}function Br(e){for(let t of e.children){if(t.kind===`test`)e.counts.total+=1,e.counts[t.outcome]+=1;else{Br(t);for(let n of[`total`,`passed`,`failed`,`flaky`,`skipped`])e.counts[n]+=t.counts[n]}e.line=Math.min(e.line,t.line)}e.kind===`project`||e.kind===`folder`?e.children.sort(Lr):e.children.sort(Rr)}function Vr(e){let t=e;for(;;){let e=t.children.length===1?t.children[0]:void 0;if(t.kind===`folder`&&e?.kind===`folder`)t={...e,key:t.key,labels:[`${t.labels.join(`/`)}/${e.labels.join(`/`)}`]};else{if(t.kind===`project`||t.kind===`folder`||e?.kind!==`suite`)break;t={...t,labels:[...t.labels,...e.labels],children:e.children}}}return{...t,children:t.children.map(e=>e.kind===`test`?e:Vr(e))}}function Hr(e,t={}){let n=t.prefix??ir(e.tests.map(e=>e.file)),r=new Map;for(let t of e.projects)r.set(t.name,Ir(`project`,Fr(t.name),t.name||`(unnamed project)`));let i=new Map;for(let t of e.tests){let e=r.get(t.project);e||(e=Ir(`project`,Fr(t.project),t.project||`(unnamed project)`),r.set(t.project,e));let a=ar(t.file,n).split(`/`),o=a.pop()??t.file,s=[...a.map((e,t)=>[`folder`,e,`${n}${a.slice(0,t+1).join(`/`)}`]),[`file`,o,rr(t.file)],...t.suitePath.map(e=>[`suite`,e])];for(let[t,n,r]of s){let a=`${e.key}${jr}${Mr[t]}${jr}${n}`,o=i.get(a);o||(o=Ir(t,a,n,r),i.set(a,o),e.children.push(o)),e=o}e.children.push(Ur(t))}let a=[...r.values()].filter(e=>e.children.length>0);for(let e of a)Br(e);return a.map(Vr)}function Ur(e){return{kind:`test`,key:Pr(e.id,e.repeatEachIndex),testId:e.id,repeatEachIndex:e.repeatEachIndex,title:e.title,outcome:e.outcome,line:e.line,column:e.column}}function Wr(e,t){let n=[],r=(e,i,a)=>{e.forEach((o,s)=>{n.push({node:o,level:i,parentKey:a,position:s+1,siblings:e.length}),o.kind!==`test`&&t.has(o.key)&&r(o.children,i+1,o.key)})};return r(e,1,null),n}function Gr(e,t){for(let n of e){if(n.key===t)return[];if(n.kind===`test`)continue;let e=Gr(n.children,t);if(e)return[n.key,...e]}return null}function Kr(e){return e.flatMap(e=>e.kind===`test`?[]:[e.key,...Kr(e.children)])}var qr=0;Array.isArray;function K(e,n,r,i,a,o){n||={};var s,c,l=n;if(`ref`in l)for(c in l={},n)c==`ref`?s=n[c]:l[c]=n[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--qr,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return t.vnode&&t.vnode(u),u}function q({name:e,color:t}){return K(`span`,{class:`category-badge`,style:Or(t),title:`Error category: ${e}`,children:e})}function J({children:e,class:t}){return K(`svg`,{class:`icon ${t??``}`,viewBox:`0 0 16 16`,width:`16`,height:`16`,"aria-hidden":`true`,focusable:`false`,children:e})}var Jr={passed:`Passed`,failed:`Failed`,flaky:`Flaky`,skipped:`Skipped`};function Y(e){return Jr[e]}function X({outcome:e,labelled:t=!1,decorative:n=!1}){let r={passed:K(`path`,{d:`M4.5 8.2l2.3 2.3 4.7-4.9`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`}),failed:K(`path`,{d:`M5.5 5.5l5 5m0-5l-5 5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`}),flaky:K(`path`,{d:`M10.9 5.6A3.6 3.6 0 0 0 4.6 7M5.1 10.4A3.6 3.6 0 0 0 11.4 9M10.9 3.6v2h-2M5.1 12.4v-2h2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`}),skipped:K(`path`,{d:`M5 8h6`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`})}[e];return K(`span`,{class:`outcome-icon outcome-${e}`,title:t||n?void 0:Jr[e],"aria-hidden":n?`true`:void 0,children:[K(J,{children:[K(`circle`,{cx:`8`,cy:`8`,r:`7`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`}),r]}),!n&&K(`span`,{class:t?`outcome-text`:`visually-hidden`,children:Jr[e]})]})}function Yr(e){return K(J,{...e,children:K(`path`,{d:`M6 4l4 4-4 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`})})}function Xr(e){return K(J,{...e,children:[K(`rect`,{x:`1.5`,y:`2.5`,width:`13`,height:`11`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),K(`path`,{d:`M6 2.5v11`,stroke:`currentColor`,"stroke-width":`1.3`})]})}function Zr(e){return K(J,{...e,children:[K(`rect`,{x:`1.5`,y:`2.5`,width:`13`,height:`9`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),K(`path`,{d:`M5.5 14h5M8 11.5V14`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})]})}function Qr(e){return K(J,{...e,children:[K(`circle`,{cx:`8`,cy:`8`,r:`3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),K(`path`,{d:`M8 1v1.6M8 13.4V15M1 8h1.6M13.4 8H15M3 3l1.1 1.1M11.9 11.9L13 13M3 13l1.1-1.1M11.9 4.1L13 3`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})]})}function $r(e){return K(J,{...e,children:K(`path`,{d:`M13.5 9.6A5.8 5.8 0 0 1 6.4 2.5a5.8 5.8 0 1 0 7.1 7.1z`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`})})}function ei(e){return K(J,{...e,children:K(`path`,{d:`M2 2.5h5v5H2zM9 2.5h5v3H9zM9 7.5h5v6H9zM2 9.5h5v4H2z`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`})})}function ti(e){return K(J,{...e,children:[K(`path`,{d:`M8 1.8l6.5 11.4H1.5z`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`}),K(`path`,{d:`M8 6.2v3.3`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`}),K(`circle`,{cx:`8`,cy:`11.4`,r:`.9`,fill:`currentColor`})]})}function ni(e){return K(J,{...e,children:[K(`circle`,{cx:`8`,cy:`8`,r:`6.3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),K(`path`,{d:`M8 4.6v4`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`}),K(`circle`,{cx:`8`,cy:`11.1`,r:`.9`,fill:`currentColor`})]})}function ri(e){return K(J,{...e,children:K(`path`,{d:`M1.5 8.5h3l1.5-4 2.5 7 1.8-4.5 1 1.5h3.2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`,"stroke-linejoin":`round`})})}function ii(e){return K(J,{...e,children:[K(`path`,{d:`M6 4h8M6 8h8M6 12h8`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`}),K(`circle`,{cx:`2.8`,cy:`4`,r:`1`,fill:`currentColor`}),K(`circle`,{cx:`2.8`,cy:`8`,r:`1`,fill:`currentColor`}),K(`circle`,{cx:`2.8`,cy:`12`,r:`1`,fill:`currentColor`})]})}function ai(e){return K(J,{...e,children:[K(`circle`,{cx:`7`,cy:`7`,r:`4.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`}),K(`path`,{d:`M10.4 10.4L14 14`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`})]})}function oi(e){return K(J,{...e,children:K(`path`,{d:`M4.5 4.5l7 7m0-7l-7 7`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})})}function si({direction:e,...t}){return K(J,{...t,children:[e!==`desc`&&K(`path`,{d:`M5 6.5L8 3.5l3 3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`}),e!==`asc`&&K(`path`,{d:`M5 9.5l3 3 3-3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`})]})}function ci({group:e}){return K(`span`,{class:`group-split`,children:[`failed`,`flaky`].filter(t=>e[t]>0).map(t=>K(`span`,{class:`group-split-part split-${t}`,children:[K(X,{outcome:t,decorative:!0}),e[t],` `,t]},t))})}var li=`https://github.com/qartisan/playwright-loupe/blob/main/docs/config.md#dimensions`;function ui(e){return U({page:`test`,id:e.id,repeatEachIndex:e.repeatEachIndex})}function di(e,t){return nr({...bn,facets:{[e]:[t]}},{page:`tests`})}function fi(e){return e||`(unnamed project)`}function pi({rate:e}){return K(`span`,{class:`pass-rate`,title:en,children:[K(`strong`,{children:tn(e)}),` pass rate`,K(`span`,{class:`visually-hidden`,children:` (skipped tests excluded)`})]})}function Z({id:e,title:t,note:n,class:r,children:i}){return K(`section`,{class:`widget ${r??``}`,"aria-labelledby":e,children:[K(`h2`,{id:e,children:t}),n&&K(`p`,{class:`widget-note`,children:n}),i]})}function mi({report:e}){let t=Zt(e),{stats:n}=e.run,r=Qt(n),i=$t(n),a=r.map(({outcome:e,count:t})=>`${t} ${Y(e).toLowerCase()}`).join(`, `);return K(`section`,{class:`widget widget-verdict`,"aria-labelledby":`w-verdict`,children:[K(`h2`,{id:`w-verdict`,class:`visually-hidden`,children:`Verdict`}),K(`div`,{class:`verdict`,children:[K(`p`,{class:`verdict-outcome outcome-${t}`,"data-verdict":t,children:[K(X,{outcome:t,decorative:!0}),K(`span`,{children:Y(t)})]}),K(`p`,{class:`verdict-meta`,children:[i!==null&&K(S,{children:[K(pi,{rate:i}),` ·`,` `]}),G(n.total,`test`),` in `,K(`strong`,{children:Ar(e.run.durationMs)})]})]}),r.length>0&&K(S,{children:[K(`div`,{class:`outcome-bar`,role:`img`,"aria-label":a,children:r.map(({outcome:e,count:t,share:n})=>K(`span`,{class:`outcome-bar-part bar-${e}`,style:{flexGrow:n},title:`${t} ${Y(e).toLowerCase()}`},e))}),K(`ul`,{class:`outcome-legend`,"aria-hidden":`true`,children:r.map(({outcome:e,count:t})=>K(`li`,{children:[K(X,{outcome:e,decorative:!0}),t,` `,Y(e).toLowerCase()]},e))})]})]})}function hi({errors:e}){return K(Z,{id:`w-run-errors`,class:`widget-run-errors`,title:K(S,{children:[K(ti,{}),G(e.length,`error`),` outside tests`]}),note:`A file that failed to load, a global setup or teardown, a worker teardown: Playwright may have run fewer tests.`,children:[K(`ul`,{class:`widget-list`,children:e.slice(0,3).map((e,t)=>K(`li`,{children:K(`code`,{children:qt(e.message)})},t))}),K(`p`,{class:`widget-more`,children:K(`a`,{href:U({page:`errors`}),children:`See the errors`})})]})}function gi({error:e,color:t}){let n=e.location?`${e.location.file}:${e.location.line}:${e.location.column}`:null;return K(`li`,{class:`run-error`,children:[K(`div`,{class:`run-error-meta`,children:[e.category&&K(q,{name:e.category,color:t}),e.project!==null&&K(`span`,{children:[`Project `,e.project||`(unnamed)`]}),n&&K(`code`,{children:n})]}),K(`pre`,{class:`message error-message`,children:e.message}),e.snippet&&K(`pre`,{class:`code-snippet`,children:e.snippet}),e.stack&&e.stack!==e.message&&K(`details`,{children:[K(`summary`,{children:`Stack trace`}),K(`pre`,{class:`stack`,children:e.stack})]})]})}function _i({group:e,colors:t,showCategory:n=!0}){let{headline:r,firstTest:i,others:a}=Jt(e),o=Yt(e);return K(`a`,{class:`group-row`,href:U({page:`group`,signature:e.signature}),children:[K(`span`,{class:`group-row-head`,children:[n&&K(q,{name:e.category,color:t.get(e.category)}),K(`span`,{class:`group-row-counts`,children:[K(ci,{group:e}),o&&K(`span`,{class:`group-attempts`,children:o})]})]}),i&&K(`span`,{class:`group-test`,children:[i.title,a>0&&K(`span`,{class:`muted`,children:[` +`,G(a,`other`)]})]}),K(`code`,{class:`group-message`,children:r})]})}function vi({groups:e,colors:t,showCategory:n=!0}){return K(`ol`,{class:`widget-list group-list`,children:e.map(e=>K(`li`,{children:K(_i,{group:e,colors:t,showCategory:n})},e.signature))})}function yi({categories:e,colors:t}){let n=Math.max(...e.map(e=>e.tests),1);return K(`ul`,{class:`widget-list category-bars`,children:e.map(e=>K(`li`,{children:K(`a`,{class:`category-bar-row`,href:di(`category`,e.name),children:[K(q,{name:e.name,color:t.get(e.name)}),K(`span`,{class:`category-bar-track`,"aria-hidden":`true`,children:K(`span`,{class:`category-bar`,style:{...Or(t.get(e.name)),width:`${e.tests/n*100}%`}})}),K(`span`,{class:`group-count`,children:G(e.tests,`test`)})]})},e.name))})}function bi({categories:e,colors:t,open:n}){return K(`ul`,{class:`widget-list category-list`,children:e.map(e=>K(`li`,{"data-category":e.name,children:K(`details`,{open:e.name===n,children:[K(`summary`,{children:[K(Yr,{class:`chevron`}),K(q,{name:e.name,color:t.get(e.name)}),K(`span`,{class:`muted`,children:G(e.groups.length,`error group`)}),K(`span`,{class:`group-count`,children:G(e.tests,`test`)})]}),K(vi,{groups:e.groups,colors:t,showCategory:!1})]})},e.name))})}function xi({projects:e}){return K(`ul`,{class:`project-cards`,children:e.map(({project:e,passRate:t,durationMs:n})=>K(`li`,{children:K(`button`,{type:`button`,class:`project-card`,"aria-controls":`sidebar`,title:`Show this project in the sidebar`,onClick:()=>wt(Fr(e.name)),children:[K(`span`,{class:`project-name`,children:fi(e.name)}),K(`span`,{class:`counts`,children:[`passed`,`failed`,`flaky`,`skipped`].filter(t=>e.stats[t]>0).map(t=>K(`span`,{class:`count`,children:[K(X,{outcome:t,decorative:!0}),e.stats[t],` `,K(`span`,{class:`visually-hidden`,children:Y(t).toLowerCase()})]},t))}),K(`span`,{class:`project-meta`,children:[G(e.stats.total,`test`),t!==null&&K(S,{children:[` · `,K(pi,{rate:t})]}),` `,`· `,Ar(n),` test time`]})]})},e.name))})}function Si({value:e}){return K(`td`,{class:e===0?`zero`:void 0,children:e})}var Ci=[`passed`,`failed`,`flaky`,`skipped`];function wi(e){let t=Ci.filter(t=>e[t]>0).map(t=>`${e[t]} ${t}`);return t.length>0?t.join(`, `):`no tests`}function Ti(e){return[...e.unknown?[`unknown value`]:[],...e.caseVariants.length>0?[`likely duplicate of ${e.caseVariants.join(`, `)}`]:[]]}function Ei({row:e}){return K(S,{children:[e.unknown&&K(`span`,{class:`hygiene-flag flag-unknown`,title:`Not among the values declared in the config`,children:[K(ti,{}),`unknown value`]}),e.caseVariants.length>0&&K(`span`,{class:`hygiene-flag flag-case`,title:`Differs from another value only by case. Tags are case-sensitive, so they are counted apart.`,children:[K(ti,{}),`likely duplicate of `,e.caseVariants.join(`, `)]})]})}function Di({name:e,values:t}){return K(`ul`,{class:`dimension-bars`,children:t.map(t=>K(`li`,{class:`dimension-bar-row`,"data-value":t.value,children:[K(`span`,{class:`dimension-value-cell`,children:[K(Oi,{name:e,row:t}),K(Ei,{row:t})]}),K(`span`,{class:`outcome-bar dimension-bar`,role:`img`,"aria-label":`${t.value}: ${wi(t)}`,title:wi(t),children:Ci.filter(e=>t[e]>0).map(e=>K(`span`,{class:`outcome-bar-part bar-${e}`,style:{flexGrow:t[e]}},e))}),K(`span`,{class:`dimension-bar-counts`,"aria-hidden":`true`,children:[`failed`,`flaky`].filter(e=>t[e]>0).map(e=>K(`span`,{class:`count`,children:[K(X,{outcome:e,decorative:!0}),t[e]]},e))}),K(`span`,{class:`dimension-total`,"aria-hidden":`true`,children:t.total})]},t.value))})}function Oi({name:e,row:t}){return t.total===0?K(`span`,{class:`dimension-value`,children:t.value}):K(`a`,{class:`dimension-value`,href:di(Cn(e),t.value),title:`Show the ${G(t.total,`test`)} with ${e} ${t.value}`,children:t.value})}var ki={failed:`with failures`,flaky:`flaky`,passed:`all passed`,skipped:`skipped only`,none:`no tests`},Q=L(null);function Ai(e,t){let n=Q.value;n?.key===e&&n.source===t&&(Q.value=null)}function ji(e){e.key===`Escape`&&Q.value&&(Q.value=null)}function Mi({name:e,values:t}){return je(()=>(document.addEventListener(`keydown`,ji),()=>{document.removeEventListener(`keydown`,ji),Q.value?.key.startsWith(`${e}\u0000`)&&(Q.value=null)}),[e]),K(S,{children:[K(`p`,{class:`tile-summary`,children:ln(t)}),K(`ul`,{class:`dimension-tiles`,"aria-label":`${e} values`,children:cn(t).map(t=>{let n=on(t),r=Ti(t),i=[wi(t),...r].join(`; `),a=`${e}\u0000${t.value}`,o=Q.value?.key===a,s={class:`dimension-tile tile-${n}${o?` tooltip-open`:``}`,"data-value":t.value,"data-status":n,onPointerEnter:()=>Q.value={key:a,source:`hover`},onPointerLeave:()=>Ai(a,`hover`),onFocus:()=>Q.value={key:a,source:`focus`},onBlur:()=>Ai(a,`focus`)},c=K(S,{children:[n===`none`?K(`span`,{class:`tile-icon-none`,"aria-hidden":`true`}):K(X,{outcome:n,decorative:!0}),K(`span`,{class:`tile-value`,children:t.value}),r.length>0&&K(ti,{class:`tile-flag`}),K(`span`,{class:`visually-hidden`,children:[`: `,ki[n],`, `,i]}),K(`span`,{class:`tile-details`,"aria-hidden":`true`,hidden:!o,children:[K(`strong`,{children:t.value}),K(`span`,{children:ki[n]}),K(`span`,{children:wi(t)}),r.map(e=>K(`span`,{class:`tile-note`,children:e},e))]})]});return K(`li`,{children:t.total>0?K(`a`,{...s,href:di(Cn(e),t.value),children:c}):K(`span`,{...s,tabIndex:0,children:c})},t.value)})})]})}function Ni({distribution:e}){let{definition:t,values:n,without:r}=e,i=`w-dimension-${t.name}`,a=an(e);return K(`section`,{class:`widget widget-dimension`,"aria-labelledby":i,"data-dimension":t.name,"data-representation":a,children:[K(`h2`,{id:i,children:t.name}),K(`p`,{class:`widget-note`,children:[`From `,t.source===`tag`?`tags @${t.key}:…`:`annotations of type "${t.key}"`,r>0&&` · ${G(r,`test`)} without a value`]}),K(a===`bars`?Di:Mi,{name:t.name,values:n}),K(`details`,{class:`dimension-table`,children:[K(`summary`,{children:[K(Yr,{class:`chevron`}),`Table`]}),K(`table`,{class:`data-table`,children:[K(`thead`,{children:K(`tr`,{children:[K(`th`,{scope:`col`,children:`Value`}),Ci.map(e=>K(`th`,{scope:`col`,children:K(X,{outcome:e,labelled:!0})},e)),K(`th`,{scope:`col`,children:`Total`})]})}),K(`tbody`,{children:n.map(e=>K(`tr`,{children:[K(`th`,{scope:`row`,children:[K(Oi,{name:t.name,row:e}),K(Ei,{row:e})]}),Ci.map(t=>K(Si,{value:e[t]},t)),K(Si,{value:e.total})]},e.value))})]})]}),t.values===null&&K(`p`,{class:`widget-hint`,children:[`No expected values are configured, so typos cannot be flagged as unknown. Declare them with `,K(`code`,{children:`values`}),` in`,` `,K(`a`,{href:li,target:`_blank`,rel:`noopener noreferrer`,children:`the dimension definition`}),`.`]})]})}function Pi({test:e,children:t,aside:n}){return K(`div`,{class:`test-line`,children:[K(X,{outcome:e.outcome}),K(`span`,{class:`test-text`,children:[K(`a`,{href:ui(e),children:e.title}),K(`span`,{class:`test-where`,children:[fi(e.project),` · `,e.file,e.repeatEachIndex>0&&` · repeat ${e.repeatEachIndex}`]}),t]}),n]})}function Fi(e){return`${e.id}/${e.repeatEachIndex}`}function Ii({tests:e}){return K(Z,{id:`w-slowest`,class:`widget-slowest`,title:`Slowest tests`,note:`Total duration, retries included.`,children:K(`ol`,{class:`widget-list`,children:e.map(e=>K(`li`,{children:K(Pi,{test:e,aside:K(`span`,{class:`duration`,children:Ar(e.durationMs)}),children:e.attempts.length>1&&K(`span`,{class:`test-where`,children:G(e.attempts.length,`attempt`)})})},Fi(e)))})})}function Li({tests:e}){return K(Z,{id:`w-skipped`,class:`widget-skipped`,title:`Skipped tests`,children:K(`ul`,{class:`widget-list`,children:e.map(({test:e,kind:t,reason:n})=>K(`li`,{children:K(Pi,{test:e,children:K(`span`,{class:`test-where`,children:[t===`fixme`&&K(`span`,{class:`skip-kind`,children:`fixme`}),` `,n??K(`span`,{class:`muted`,children:`No reason given`})]})})},Fi(e)))})})}function Ri({tests:e,colors:t}){return K(Z,{id:`w-flaky`,class:`widget-flaky`,title:`Flaky tests`,note:`Failed, then passed on a retry: the error of the failing attempt.`,children:K(`ul`,{class:`widget-list`,children:e.map(({test:e,error:n})=>K(`li`,{children:K(Pi,{test:e,children:n&&K(`span`,{class:`flaky-error`,children:[n.category&&K(q,{name:n.category,color:t.get(n.category)}),K(`code`,{children:qt(n.message)})]})})},Fi(e)))})})}function zi({report:e,groups:t,category:n}){let r=M(null);je(()=>{if(n===void 0)return;let e=[...r.current?.querySelectorAll(`[data-category]`)??[]].find(e=>e.dataset.category===n);e?.scrollIntoView({block:`start`}),e?.querySelector(`summary`)?.focus({preventScroll:!0})},[n]);let i=N(()=>Ht(t),[t]),a=N(()=>Xt(e,t),[e,t]),o=N(()=>kr(e.categories),[e]),{errors:s}=e.run;return K(`div`,{class:`page view view-errors`,ref:r,children:[K(`h1`,{children:`Errors`}),s.length===0&&t.length===0&&K(`p`,{class:`muted`,children:`No errors in this run.`}),s.length>0&&K(Z,{id:`w-run-errors`,class:`widget-run-error-list`,title:G(s.length,`run error`),note:`Reported outside any test: a file that failed to load, a global setup or teardown, a worker teardown. Playwright may have run fewer tests because of them.`,children:K(`ol`,{class:`run-errors`,children:s.map((e,t)=>K(gi,{error:e,color:e.category?o.get(e.category):void 0},t))})}),i.length>0&&K(Z,{id:`w-groups`,class:`widget-groups`,title:G(i.length,`error group`),note:`Errors grouped by normalized signature: most failed tests first, then most flaky tests.`,children:K(vi,{groups:i,colors:o})}),a.length>0&&K(Z,{id:`w-categories`,class:`widget-categories`,title:`Error categories`,note:`Failing tests per category; flaky tests count, and a test can be in several categories.`,children:K(bi,{categories:a,colors:o,open:n},n)})]})}function Bi({message:e=`This page does not exist in this report.`}){return K(`div`,{class:`page`,children:[K(`h1`,{children:`Not found`}),K(`p`,{children:e}),K(`p`,{children:K(`a`,{href:U({page:`dashboard`}),children:`Back to the dashboard`})})]})}function Vi(e){return e===0?`first run`:`retry ${e}`}function Hi({report:e,group:t}){if(!t)return K(Bi,{message:`No error group with this signature in this report.`});let n=kr(e.categories).get(t.category);return K(`div`,{class:`page group-page`,children:[K(`p`,{class:`breadcrumb`,children:`Error group`}),K(`h1`,{children:[G(t.tests.length,`test`),` failing with this error`]}),K(`dl`,{class:`group-meta`,children:[K(`div`,{children:[K(`dt`,{children:`Category`}),K(`dd`,{children:K(q,{name:t.category,color:n})})]}),K(`div`,{children:[K(`dt`,{children:`Tests`}),K(`dd`,{children:K(ci,{group:t})})]}),K(`div`,{children:[K(`dt`,{children:`Signature`}),K(`dd`,{children:K(`code`,{children:t.signature})})]})]}),K(`h2`,{children:`Sample message`}),K(`pre`,{class:`message group-sample`,children:t.message}),K(`h2`,{children:`Affected tests`}),K(`table`,{class:`affected-tests`,children:[K(`thead`,{children:K(`tr`,{children:[K(`th`,{scope:`col`,children:`Test`}),K(`th`,{scope:`col`,children:`Project`}),K(`th`,{scope:`col`,children:`File`}),K(`th`,{scope:`col`,children:`Error in`})]})}),K(`tbody`,{children:t.tests.map(({test:e,attempts:t})=>K(`tr`,{children:[K(`td`,{children:K(`span`,{class:`test-cell`,children:[K(X,{outcome:e.outcome}),K(`a`,{href:U({page:`test`,id:e.id,repeatEachIndex:e.repeatEachIndex}),children:[...e.suitePath,e.title].join(` › `)}),e.repeatEachIndex>0&&K(`span`,{class:`row-note`,children:[`repeat `,e.repeatEachIndex]})]})}),K(`td`,{children:e.project||`(unnamed project)`}),K(`td`,{children:K(`code`,{children:[e.file,`:`,e.line]})}),K(`td`,{children:[t.map(Vi).join(`, `),K(`span`,{class:`muted`,children:[` of `,G(e.attempts.length,`attempt`)]})]})]},`${e.id}/${e.repeatEachIndex}`))})]})]})}function Ui({report:e}){let t=N(()=>({dimensions:rn(e).filter(e=>e.values.length>0),slowest:fn(e),skipped:mn(e),flaky:dn(e)}),[e]),n=N(()=>kr(e.categories),[e]),r=t.dimensions.length+t.slowest.length+t.skipped.length+t.flaky.length===0;return K(`div`,{class:`page view view-health`,children:[K(`h1`,{children:`Suite health`}),r&&K(`p`,{class:`muted`,children:`No dimension, slow, skipped or flaky test to show for this run.`}),t.dimensions.length>0&&K(`div`,{class:`widget-grid dimension-grid`,children:t.dimensions.map(e=>K(Ni,{distribution:e},e.definition.name))}),(t.slowest.length>0||t.skipped.length>0||t.flaky.length>0)&&K(`div`,{class:`widget-grid`,children:[t.slowest.length>0&&K(Ii,{tests:t.slowest}),t.flaky.length>0&&K(Ri,{tests:t.flaky,colors:n}),t.skipped.length>0&&K(Li,{tests:t.skipped})]})]})}function Wi({report:e,groups:t}){let n=N(()=>({categories:Xt(e,t),projects:nn(e)}),[e,t]),r=N(()=>kr(e.categories),[e]);return K(`div`,{class:`page view view-overview`,children:[K(`h1`,{children:`Overview`}),K(mi,{report:e}),e.run.errors.length>0&&K(hi,{errors:e.run.errors}),n.categories.length>0&&K(Z,{id:`w-categories`,class:`widget-categories`,title:`Error categories`,note:K(S,{children:[`Failing tests per category. `,K(`a`,{href:U({page:`errors`}),children:[`All `,G(t.length,`error group`)]})]}),children:K(yi,{categories:n.categories,colors:r})}),n.projects.length>0&&K(Z,{id:`w-projects`,class:`widget-projects`,title:`Projects`,children:K(xi,{projects:n.projects})})]})}function Gi({test:e}){return e?K(`div`,{class:`page`,children:[K(`p`,{class:`breadcrumb`,children:[e.project||`(unnamed project)`,e.file,...e.suitePath].map((e,t)=>K(`span`,{class:`label-part`,children:e},t))}),K(`h1`,{class:`test-title`,children:[e.title,e.repeatEachIndex>0&&K(`span`,{class:`row-note`,children:[` repeat `,e.repeatEachIndex]})]}),K(X,{outcome:e.outcome,labelled:!0})]}):K(Bi,{message:`No test with this id in this report.`})}function Ki(e){let t=wn(e);return t===null?{status:`Status`,project:`Project`,tag:`Tag`,category:`Error category`}[e]:t}function qi(e,t){return e===`status`?Y(t):e===`project`?t||`(unnamed project)`:t}function Ji({facet:e,value:t,colors:n}){return e===`status`?K(X,{outcome:t,labelled:!0}):e===`category`?K(q,{name:t,color:n.get(t)}):K(`span`,{class:`facet-value`,children:qi(e,t)})}function Yi({state:e,facet:t,values:n,counts:r,colors:i}){let a=M(null),o=e.facets[t]??[],s=Ki(t);return je(()=>{let e=e=>{let t=a.current;t?.open&&!t.contains(e.target)&&(t.open=!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[]),K(`details`,{class:`facet`,ref:a,onKeyDown:e=>{let t=a.current;e.key===`Escape`&&t?.open&&(t.open=!1,t.querySelector(`summary`)?.focus(),e.stopPropagation())},"data-facet":t,children:[K(`summary`,{class:`facet-button`,children:[K(`span`,{children:s}),o.length>0&&K(`span`,{class:`facet-selected`,children:[o.length,K(`span`,{class:`visually-hidden`,children:` selected`})]}),K(Yr,{class:`chevron`})]}),K(`fieldset`,{class:`facet-menu`,children:[K(`legend`,{class:`visually-hidden`,children:s}),[...n].map(n=>{let a=r?.get(n)??0,s=o.includes(n);return K(`label`,{class:`facet-option${a===0&&!s?` facet-option-empty`:``}`,children:[K(`input`,{type:`checkbox`,checked:s,onChange:r=>W(Pn(e,t,n,r.currentTarget.checked))}),K(Ji,{facet:t,value:n,colors:i}),K(`span`,{class:`facet-count`,children:[a,K(`span`,{class:`visually-hidden`,children:[` `,a===1?`test`:`tests`]})]})]},n)})]})]})}function Xi({state:e,domain:t,counts:n,colors:r}){return K(`div`,{class:`facets`,role:`group`,"aria-label":`Filters`,children:[...t].filter(([e,t])=>e!==`project`||t.size>1).map(([t,i])=>K(Yi,{state:e,facet:t,values:i,counts:n.get(t),colors:r},t))})}function Zi(e,t){let n=[];e.q.trim()!==``&&n.push({key:`q`,label:`Search: ${e.q.trim()}`,remove:e=>({...e,q:``})});let r=new Map([...t.keys()].map((e,t)=>[e,t])),i=yn(e.facets).sort(([e],[t])=>(r.get(e)??1/0)-(r.get(t)??1/0));for(let[e,t]of i)for(let r of t)n.push({key:`${e}\u0000${r}`,label:`${Ki(e)}: ${qi(e,r)}`,remove:t=>Pn(t,e,r,!1)});return n}function Qi({state:e,domain:t}){let n=Zi(e,t),r=M(null),i=M(null);return j(()=>{if(i.current===null)return;let e=[...r.current?.querySelectorAll(`button`)??[]],t=e[Math.min(i.current,e.length-2)]??e[e.length-1];i.current=null,t?t.focus():document.querySelector(`.facets summary`)?.focus()}),n.length===0?null:K(`div`,{class:`filter-chips`,ref:r,children:[K(`ul`,{"aria-label":`Active filters`,children:n.map((t,n)=>K(`li`,{children:K(`button`,{type:`button`,class:`chip`,"aria-label":`Remove filter ${t.label}`,onClick:()=>{i.current=n,W(t.remove(e))},children:[K(`span`,{children:t.label}),K(oi,{})]})},t.key))}),K(`button`,{type:`button`,class:`text-button`,onClick:()=>{i.current=0,W(Fn(e))},children:`Clear all`})]})}var $i=new Intl.NumberFormat(`en-US`);function $(e){return $i.format(e)}function ea(e,t){return Math.min(e,Math.max(t,0))}function ta(e,t,n){let r=e=>e===1?`test`:`tests`;return e<t?t===n?`Showing ${$(e)} of ${$(n)} ${r(n)}`:`Showing ${$(e)} of ${$(t)} matching ${r(t)} (${$(n)} in total)`:t===n?`${$(n)} ${r(n)}`:`${$(t)} of ${$(n)} ${r(n)}`}var na={failed:0,flaky:1,passed:2,skipped:3},ra=new Intl.Collator(void 0,{numeric:!0,sensitivity:`base`});function ia(e){return[...e.suitePath,e.title].join(` › `)}function aa(e){return e===`duration`||e===`attempts`?`desc`:`asc`}function oa(e,t){return e.column===t?{column:t,direction:e.direction===`asc`?`desc`:`asc`}:{column:t,direction:aa(t)}}var sa={title:ia,project:e=>e.project,file:e=>`${e.file}:${e.line}`,category:e=>Gn(e).primary};function ca(e,t){let n=[...new Set(e.map(t).filter(e=>e!==null))].sort(ra.compare),r=new Map(n.map((e,t)=>[e,t]));return new Map(e.map(e=>{let n=t(e);return[e,n===null?null:r.get(n)??null]}))}function la(e){let t={title:ca(e,sa.title),project:ca(e,sa.project),file:ca(e,sa.file),category:ca(e,sa.category)},n=(e,n)=>t[e].get(n)??0,r=[...e].sort((e,t)=>n(`title`,e)-n(`title`,t)||n(`project`,e)-n(`project`,t)||e.repeatEachIndex-t.repeatEachIndex);return{text:t,order:new Map(r.map((e,t)=>[e,t]))}}function ua(e,t,n){switch(t){case`status`:return na[e.outcome];case`duration`:return e.durationMs;case`attempts`:return e.attempts.length;default:return n.text[t].get(e)??null}}function da(e,t,n){return e===null||t===null?e===t?0:e===null?1:-1:n*(e-t)}function fa(e,t,n=la(e)){let r=t.direction===`asc`?1:-1;return e.map(e=>({test:e,key:ua(e,t.column,n),order:n.order.get(e)??0})).sort((e,t)=>da(e.key,t.key,r)||e.order-t.order).map(({test:e})=>e)}var pa=[{column:`status`,label:`Status`},{column:`title`,label:`Test`},{column:`project`,label:`Project`},{column:`file`,label:`File`},{column:`duration`,label:`Duration`,numeric:!0},{column:`category`,label:`Error category`},{column:`attempts`,label:`Attempts`,numeric:!0}];function ma({report:e,state:t,matched:n}){let r=N(()=>kr(e.categories),[e]),i=N(()=>Xn(e.tests,t,Qn.value,$n.value),[e,Mn({...t,sort:vn})]),a=N(()=>la(e.tests),[e]),o=N(()=>fa(n,t.sort,a),[n,a,t.sort.column,t.sort.direction]),s=e.tests.length,c=Mn(t),l=M({viewKey:c,limit:500});l.current.viewKey!==c&&(l.current={viewKey:c,limit:500});let[,u]=ke(0),d=ea(o.length,l.current.limit),f=N(()=>o.slice(0,d),[o,d]),p=ta(d,n.length,s),m=M(null),h=M(null);j(()=>{h.current!==null&&(m.current?.rows[h.current]?.querySelector(`a`)?.focus(),h.current=null)});let g=e=>{h.current=d,l.current={viewKey:c,limit:e},u(e=>e+1)};return K(`div`,{class:`page view view-tests`,children:[K(`h1`,{children:`Tests`}),s>0&&K(`div`,{class:`filter-bar`,children:[K(Xi,{state:t,domain:Qn.value,counts:i,colors:r}),K(Qi,{state:t,domain:Qn.value})]}),K(`p`,{class:`result-count`,"aria-live":`polite`,"aria-atomic":`true`,children:p}),s===0?K(`p`,{class:`muted`,children:`No tests in this run.`}):o.length===0?K(`div`,{class:`empty-state`,children:[K(`p`,{children:`No tests match these filters.`}),K(`button`,{type:`button`,class:`button`,onClick:()=>W(Fn(t)),children:`Reset filters`})]}):K(`div`,{class:`table-scroll`,children:K(`table`,{class:`tests-table`,children:[K(`thead`,{children:K(`tr`,{children:pa.map(({column:e,label:n,numeric:r})=>{let i=t.sort.column===e;return K(`th`,{scope:`col`,class:r?`numeric`:void 0,"aria-sort":i?t.sort.direction===`asc`?`ascending`:`descending`:void 0,children:K(`button`,{type:`button`,class:`sort-button`,onClick:()=>W({...t,sort:oa(t.sort,e)}),children:[n,K(si,{direction:i?t.sort.direction:null,class:i?`sort-active`:`sort-idle`})]})},e)})})}),K(`tbody`,{ref:m,children:f.map(e=>K(_a,{test:e,colors:r},`${e.id}/${e.repeatEachIndex}`))})]})}),d<o.length&&K(`div`,{class:`table-more`,children:[K(`p`,{children:p}),K(`button`,{type:`button`,class:`button`,onClick:()=>g(d+500),children:[`Show `,Math.min(500,o.length-d),` more`]}),K(`button`,{type:`button`,class:`button`,onClick:()=>g(o.length),children:`Show all`})]})]})}function ha({path:e}){let t=e.split(`/`);return K(S,{children:t.map((e,n)=>K(S,{children:[e,n<t.length-1&&K(S,{children:[`/`,K(`wbr`,{})]})]},n))})}function ga({test:e,colors:t}){let{primary:n,others:r}=Gn(e);return n===null?null:K(`span`,{class:`category-badges`,children:[K(q,{name:n,color:t.get(n)}),r.length>0&&K(`span`,{class:`category-more`,title:`Other ${r.length===1?`category`:`categories`} in failing attempts: ${r.join(`, `)}`,children:[K(`span`,{"aria-hidden":`true`,children:[`+`,r.length]}),K(`span`,{class:`visually-hidden`,children:[`, and `,G(r.length,`other category`,`other categories`),`: `,r.join(`, `)]})]})]})}function _a({test:e,colors:t}){return K(`tr`,{children:[K(`td`,{children:K(X,{outcome:e.outcome,labelled:!0})}),K(`td`,{class:`cell-title`,children:[K(`a`,{href:ui(e),children:ia(e)}),e.repeatEachIndex>0&&K(`span`,{class:`row-note`,children:[` repeat `,e.repeatEachIndex]})]}),K(`td`,{class:`cell-project`,children:fi(e.project)}),K(`td`,{children:K(`code`,{children:K(ha,{path:`${e.file}:${e.line}`})})}),K(`td`,{class:`numeric`,children:Ar(e.durationMs)}),K(`td`,{children:K(ga,{test:e,colors:t})}),K(`td`,{class:`numeric`,children:e.attempts.length})]})}function va({version:e}){return K(`footer`,{class:`footer`,children:[`Loupe — a reporter for Playwright `,K(`span`,{class:`muted`,children:[`· v`,e]})]})}function ya(e,t={}){if(typeof e!=`string`||e===``)return null;let n=new Date(e);if(Number.isNaN(n.getTime()))return null;let r=t.timeZone===void 0?{}:{timeZone:t.timeZone},i=new Intl.DateTimeFormat(t.locale,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZoneName:`short`,...r}),a=new Intl.DateTimeFormat(t.locale,{dateStyle:`full`,timeStyle:`long`,...r});return{utc:n.toISOString(),label:i.format(n),full:a.format(n),timeZone:i.resolvedOptions().timeZone}}var ba=[`system`,`light`,`dark`],xa=`loupe.theme`,Sa=L(`system`);function Ca(e){return typeof e==`string`&&ba.includes(e)}function wa(e){let t=_t(xa);Sa.value=Ca(t)?t:Ca(e)?e:`system`,at(()=>{let e=document.documentElement;Sa.value===`system`?delete e.dataset.theme:e.dataset.theme=Sa.value})}function Ta(e){Sa.value=e,vt(xa,e)}var Ea={passed:`Passed`,failed:`Failed`,timedout:`Timed out`,interrupted:`Interrupted`},Da={env:`LOUPE_RUN_SCOPE=partial`,"file-filter":`file filter`,grep:`grep filter`,"project-filter":`project filter`,"last-failed":`--last-failed`,"only-changed":`--only-changed`,"test-list":`test list`,only:`test.only`,shard:`single shard`,list:`--list (no test ran)`};function Oa(e){return Da[e]??e}var ka={system:`System theme`,light:`Light theme`,dark:`Dark theme`},Aa={system:Zr,light:Qr,dark:$r};function ja(){return K(`div`,{class:`theme-switch`,role:`group`,"aria-label":`Theme`,children:ba.map(e=>{let t=Aa[e];return K(`button`,{type:`button`,class:`icon-button`,"aria-pressed":Sa.value===e,title:ka[e],onClick:()=>Ta(e),children:[K(t,{}),K(`span`,{class:`visually-hidden`,children:ka[e]})]},e)})})}function Ma({startedAt:e,durationMs:t}){let n=N(()=>ya(e),[e]),[r,i]=ke(!1);return K(`div`,{class:`run-time`,onPointerLeave:()=>i(!1),children:[K(`dt`,{class:`visually-hidden`,children:`Run`}),K(`dd`,{children:[n&&K(S,{children:[K(`time`,{dateTime:n.utc,tabIndex:0,"aria-describedby":`run-time-details`,onKeyDown:e=>e.key===`Escape`&&i(!0),onBlur:()=>i(!1),children:n.label}),` · `]}),Ar(t)]}),n&&K(`span`,{id:`run-time-details`,role:`tooltip`,class:`run-time-details${r?` dismissed`:``}`,children:[K(`span`,{children:n.full}),K(`span`,{children:[`Time zone: `,n.timeZone]}),K(`span`,{children:[`UTC: `,n.utc]})]})]})}function Na({outcome:e,count:t}){let n=Y(e).toLowerCase(),r=K(S,{children:[K(X,{outcome:e,decorative:!0}),K(`span`,{class:`count-value`,children:t}),K(`span`,{class:`visually-hidden`,children:[` `,n]})]});return t===0?K(`li`,{class:`count zero`,title:Y(e),children:r}):K(`li`,{class:`count`,children:K(`a`,{class:`count-link`,href:nr({...bn,facets:{status:[e]}},{page:`tests`}),title:`Show the ${t} ${n} ${t===1?`test`:`tests`}`,children:r})})}function Pa({report:e,title:t}){let{run:n}=e,r=[];return n.git.branch&&r.push([`Branch`,n.git.branch]),n.git.commit&&r.push([`Commit`,n.git.commit.slice(0,8),n.git.commit]),n.environment.name&&r.push([`Environment`,n.environment.name]),K(S,{children:[K(`header`,{class:`header`,children:[K(`button`,{type:`button`,class:`icon-button`,"aria-controls":`sidebar`,"aria-expanded":B.value,title:B.value?`Hide sidebar`:`Show sidebar`,onClick:St,children:[K(Xr,{}),K(`span`,{class:`visually-hidden`,children:B.value?`Hide sidebar`:`Show sidebar`})]}),K(`div`,{class:`brand`,children:[K(`span`,{class:`wordmark`,children:`Loupe`}),K(`a`,{class:`title`,href:U({page:`dashboard`}),children:t})]}),K(`span`,{class:`run-status run-${n.status}`,children:[K(X,{outcome:n.status===`passed`?`passed`:`failed`,decorative:!0}),Ea[n.status]??n.status]}),K(`ul`,{class:`counts`,"aria-label":`Test counts`,children:zt.map(e=>K(Na,{outcome:e,count:n.stats[e]},e))}),K(`dl`,{class:`run-meta`,children:[K(Ma,{startedAt:n.startedAt,durationMs:n.durationMs}),r.map(([e,t,n])=>K(`div`,{title:n,children:[K(`dt`,{children:e}),K(`dd`,{children:t})]},e))]}),K(ja,{})]}),n.scope===`partial`&&K(`div`,{class:`banner banner-partial`,role:`note`,children:[K(ti,{}),K(`p`,{children:[K(`strong`,{children:`Partial run.`}),` Only part of the suite ran, so these results do not cover every test.`,n.scopeReasons.length>0&&K(S,{children:[` `,`Detected from: `,n.scopeReasons.map(Oa).join(`, `),`.`]})]})]})]})}function Fa({roots:e,route:t,prefix:n,expandAll:r,emptyMessage:i}){let a=t.page===`test`?Pr(t.id,t.repeatEachIndex):null,[o,s]=ke(()=>new Set(e.map(e=>e.key))),[c,l]=ke(null),u=M(new Map),d=M(!1),f=M(!1),[p,m]=ke(null),h=M(null),g=Ct.value;j(()=>{g&&e.some(e=>e.key===g.key)&&(m(g.key),s(e=>e.has(g.key)?e:new Set([...e,g.key])),h.current=g.key,l(g.key))},[e,g]),j(()=>{a&&m(null)},[a]),j(()=>{if(!a)return;let t=Gr(e,a);t&&(f.current=!0,l(a),s(e=>t.every(t=>e.has(t))?e:new Set([...e,...t])))},[e,a]),j(()=>{if(!r)return;let t=Kr(e);s(e=>t.every(t=>e.has(t))?e:new Set([...e,...t]))},[e,r]);let _=N(()=>Wr(e,o),[e,o]),v=N(()=>new Map(_.map((e,t)=>[e.node.key,t])),[_]),y=c!==null&&v.has(c)?c:a!==null&&v.has(a)?a:_[0]?.node.key??null;j(()=>{f.current&&a&&u.current.has(a)&&(f.current=!1,u.current.get(a)?.scrollIntoView({block:`nearest`}));let e=h.current===null?void 0:u.current.get(h.current);e&&(h.current=null,e.focus({preventScroll:!0}),e.scrollIntoView({block:`nearest`})),d.current&&y&&(d.current=!1,u.current.get(y)?.focus())});let ee=n!==``&&K(`p`,{class:`tree-prefix`,title:`Folder shared by every test file, left out of the tree`,children:[K(`span`,{class:`visually-hidden`,children:`Files in `}),n]}),b=e=>{e&&(d.current=!0,l(e.node.key))},x=(e,t)=>{s(n=>{if(n.has(e)===t)return n;let r=new Set(n);return t?r.add(e):r.delete(e),r})};return K(`div`,{class:`tree-section`,children:[K(`div`,{class:`tree-toolbar`,children:[K(`h2`,{id:`tree-heading`,children:`Tests`}),K(`button`,{type:`button`,class:`text-button`,onClick:()=>s(new Set(Kr(e))),children:`Expand all`}),K(`button`,{type:`button`,class:`text-button`,onClick:()=>s(new Set),children:`Collapse all`})]}),ee,e.length===0?K(`p`,{class:`tree-empty`,children:i}):K(`ul`,{class:`tree`,role:`tree`,"aria-labelledby":`tree-heading`,onKeyDown:e=>{if(y===null||e.altKey||e.ctrlKey||e.metaKey)return;let t=v.get(y)??0,n=_[t];if(!n)return;let{node:r}=n,i=r.kind!==`test`,a=i&&o.has(r.key);switch(e.key){case`ArrowDown`:b(_[t+1]);break;case`ArrowUp`:b(_[t-1]);break;case`Home`:b(_[0]);break;case`End`:b(_[_.length-1]);break;case`ArrowRight`:i&&!a?x(r.key,!0):a&&b(_[t+1]);break;case`ArrowLeft`:a?x(r.key,!1):n.parentKey!==null&&b(_[v.get(n.parentKey)??-1]);break;case`Enter`:case` `:r.kind===`test`?Lt({page:`test`,id:r.testId,repeatEachIndex:r.repeatEachIndex}):x(r.key,!a);break;default:return}e.preventDefault()},children:_.map(e=>{let{key:t}=e.node,n={ref:e=>{e?u.current.set(t,e):u.current.delete(t)},role:`treeitem`,"aria-level":e.level,"aria-setsize":e.siblings,"aria-posinset":e.position,tabIndex:t===y?0:-1,style:{"--level":e.level},onFocus:()=>l(t)};return e.node.kind===`test`?K(`li`,{...n,class:`tree-row tree-test`,"aria-selected":t===a,children:K(Ia,{node:e.node})},t):K(`li`,{...n,class:`tree-row tree-group tree-${e.node.kind}${t===p?` revealed`:``}`,"aria-expanded":o.has(t),children:K(Ra,{node:e.node,onToggle:()=>x(t,!o.has(t))})},t)})})]})}function Ia({node:e}){return K(`a`,{class:`row-content`,tabIndex:-1,href:U({page:`test`,id:e.testId,repeatEachIndex:e.repeatEachIndex}),children:[K(X,{outcome:e.outcome}),K(`span`,{class:`row-label`,children:e.title}),e.repeatEachIndex>0&&K(`span`,{class:`row-note`,children:[`repeat `,e.repeatEachIndex]})]})}function La({name:e,path:t}){let[n,r]=sr(e);return K(`span`,{class:`label-part file-name`,children:[K(`span`,{class:`name-head`,"aria-hidden":`true`,children:n}),r&&K(`span`,{class:`name-tail`,"aria-hidden":`true`,children:r}),K(`span`,{class:`visually-hidden`,children:t})]})}function Ra({node:e,onToggle:t}){let{counts:n}=e,r=[G(n.total,`test`),`${n.failed} failed`,...n.flaky>0?[`${n.flaky} flaky`]:[]].join(`, `),[i=``,...a]=e.labels,o=[e.kind===`folder`?`${e.path??i}/`:e.path??i,...a].join(` › `);return K(`div`,{class:`row-content`,onClick:t,children:[K(Yr,{class:`chevron`}),K(`span`,{class:`row-label`,title:o,children:[e.kind===`file`?K(La,{name:i,path:e.path??i}):K(`span`,{class:`label-part`,children:i}),a.map((e,t)=>K(`span`,{class:`label-part`,children:e},t))]}),K(`span`,{class:`row-counts`,title:r,children:[K(`span`,{class:`visually-hidden`,children:r}),n.failed>0&&K(`span`,{class:`badge badge-failed`,"aria-hidden":`true`,children:n.failed}),K(`span`,{class:`row-total`,"aria-hidden":`true`,children:n.total})]})]})}var za=200,Ba=300;function Va({page:e,route:t,children:n,class:r}){return K(`li`,{children:K(`a`,{class:`nav-link ${r??``}`,href:U({page:e}),"aria-current":t.page===e?`page`:void 0,children:n})})}function Ha(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement?!0:e instanceof HTMLInputElement&&![`checkbox`,`radio`,`button`,`submit`,`reset`,`range`,`color`,`file`].includes(e.type):!1}function Ua(){let e=tr.value.q,[t,n]=ke(e),r=M(null),i=M(void 0);j(()=>{e.trim()!==t.trim()&&(clearTimeout(i.current),n(e))},[e]),j(()=>{let e=e=>{e.key!==`/`||e.ctrlKey||e.metaKey||e.altKey||Ha(e.target)||(e.preventDefault(),B.value?r.current?.focus():(B.value=!0,setTimeout(()=>r.current?.focus(),0)))};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e),clearTimeout(i.current)}},[]);let a=e=>W({...tr.value,q:e},`replace`);return K(`div`,{class:`search-field`,children:[K(`label`,{for:`sidebar-search`,class:`visually-hidden`,children:`Search tests`}),K(ai,{}),K(`input`,{ref:r,id:`sidebar-search`,type:`search`,placeholder:`Search tests`,autoComplete:`off`,spellcheck:!1,"aria-keyshortcuts":`/`,value:t,onInput:e=>{let t=e.currentTarget.value;n(t),clearTimeout(i.current),i.current=setTimeout(()=>a(t),za)},onKeyDown:e=>{e.key===`Escape`&&t!==``&&(e.preventDefault(),clearTimeout(i.current),n(``),a(``))}}),K(`kbd`,{class:`search-key`,"aria-hidden":`true`,children:`/`})]})}function Wa({matched:e,route:t}){let n=tr.value,r=Nn(n);return K(`div`,{class:`filter-indicator`,"aria-live":t.page===`tests`?`off`:`polite`,children:r>0&&K(`p`,{children:[K(`span`,{children:G(r,`filter`)}),` · `,K(`a`,{href:U({page:`tests`}),children:G(e,`test`)}),K(`button`,{type:`button`,class:`text-button`,onClick:()=>W(Fn(n)),children:`Clear`})]})})}function Ga({report:e,tree:t,prefix:n,matched:r,route:i,open:a}){let o=e.run.errors.length,s=Nn(tr.value)>0;return K(`nav`,{id:`sidebar`,class:`sidebar`,"aria-label":`Report`,hidden:!a,children:[K(`div`,{class:`sidebar-search`,role:`search`,children:[K(Ua,{}),K(Wa,{matched:r,route:i})]}),K(`ul`,{class:`nav-fixed`,children:[K(Va,{page:`dashboard`,route:i,children:[K(ei,{}),K(`span`,{children:`Overview`})]}),K(Va,{page:`errors`,route:i,class:o>0?`nav-has-run-errors`:void 0,children:[K(ni,{}),K(`span`,{children:`Errors`}),o>0&&K(`span`,{class:`nav-marker`,title:G(o,`run error`),children:[K(ti,{}),K(`span`,{class:`badge badge-failed`,children:o}),K(`span`,{class:`visually-hidden`,children:[`, `,G(o,`run error`)]})]})]}),K(Va,{page:`health`,route:i,children:[K(ri,{}),K(`span`,{children:`Suite health`})]}),K(Va,{page:`tests`,route:i,children:[K(ii,{}),K(`span`,{children:`Tests`})]})]}),K(Fa,{roots:t,route:i,prefix:n,expandAll:s&&r<=Ba,emptyMessage:e.tests.length===0?`No tests in this run.`:`No tests match the filters.`})]})}function Ka({report:e,settings:t}){let n=tr.value,r=N(()=>Yn(e.tests,n,$n.value),[e,Mn({...n,sort:vn})]),i=N(()=>ir(e.tests.map(e=>e.file)),[e]),a=N(()=>Hr({projects:e.projects,tests:r},{prefix:i}),[e,r,i]),o=N(()=>new Map(e.tests.map(e=>[Pr(e.id,e.repeatEachIndex),e])),[e]),s=N(()=>Vt(e),[e]),{route:c}=H.value,l=M(null);je(()=>{(c.page!==`errors`||c.category===void 0)&&l.current?.scrollTo(0,0),xt()&&(B.value=!1)},[JSON.stringify(c)]);let u;switch(c.page){case`dashboard`:u=K(Wi,{report:e,groups:s});break;case`errors`:u=K(zi,{report:e,groups:s,category:c.category});break;case`health`:u=K(Ui,{report:e});break;case`tests`:u=K(ma,{report:e,state:n,matched:r});break;case`test`:u=K(Gi,{test:o.get(Pr(c.id,c.repeatEachIndex))});break;case`group`:u=K(Hi,{report:e,group:s.find(e=>e.signature===c.signature)});break;case`not-found`:u=K(Bi,{})}return K(`div`,{class:`app ${B.value?`sidebar-open`:`sidebar-closed`}`,children:[K(Pa,{report:e,title:t.title}),K(`div`,{class:`layout`,children:[K(Ga,{report:e,tree:a,prefix:i,matched:r.length,route:c,open:B.value}),K(`main`,{class:`main`,ref:l,tabIndex:-1,children:[u,K(va,{version:e.generator.version})]})]})]})}var qa={title:`Loupe report`,theme:`system`,screenshots:{defaultView:`side-by-side`}};function Ja(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ya(e){let t;try{t=JSON.parse(e??``)}catch{return{ok:!1,message:`The report data is missing or is not valid JSON.`}}return Ja(t)?t.schemaVersion===1?!Ja(t.run)||!Array.isArray(t.tests)||!Array.isArray(t.projects)?{ok:!1,message:`The report data is incomplete: run, projects or tests is missing.`}:{ok:!0,report:t}:{ok:!1,message:`Unsupported report schema version ${JSON.stringify(t.schemaVersion)}: this renderer reads version 1.`}:{ok:!1,message:`The report data is not a Loupe report.`}}function Xa(e){try{let t=JSON.parse(e??``);return Ja(t)?{...qa,...t,screenshots:{...qa.screenshots,...Ja(t.screenshots)?t.screenshots:{}}}:qa}catch{return qa}}var Za=Xa(document.getElementById(`loupe-settings`)?.textContent);document.title=Za.title,wa(Za.theme);var Qa=Ya(document.getElementById(`loupe-data`)?.textContent),$a=document.getElementById(`app`)??document.body;Qa.ok&&er(Qa.report),ge(Qa.ok?K(Ka,{report:Qa.report,settings:Za}):K(`div`,{class:`load-error`,role:`alert`,children:[K(`h1`,{children:`Loupe could not open this report`}),K(`p`,{children:Qa.message})]}),$a);</script>
|
|
10
|
-
<style>@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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)format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(data:font/woff2;base64,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)format("woff2")}:root{--bg:#f7f5f0;--bg-card:#fff;--bg-muted:#eeeae2;--fg:#111;--fg-secondary:#666;--border:#e8e4dc;--border-control:#8a857c;--status-passed:#3e6e51;--status-failed:#b3261e;--status-flaky:#6b4a05;--status-flaky-bg:#fbf0d9;--status-skipped:#666;--shadow:0 8px 24px #1111111f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#080808;--bg-card:#0d0d0d;--bg-muted:#161616;--fg:#f0ede8;--fg-secondary:#8a8a8a;--border:#262626;--border-control:#6b6b6b;--status-passed:#7da88a;--status-failed:#f28b82;--status-flaky:#f0cf8a;--status-flaky-bg:#1f1705;--status-skipped:#8a8a8a;--shadow:0 8px 24px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root:not([data-theme=light]) .category-badge,:root:not([data-theme=light]) .category-bar{--cat-text:var(--cat-text-dark);--cat-bg:var(--cat-bg-dark);--cat-border:var(--cat-border-dark)}}:root[data-theme=dark]{--bg:#080808;--bg-card:#0d0d0d;--bg-muted:#161616;--fg:#f0ede8;--fg-secondary:#8a8a8a;--border:#262626;--border-control:#6b6b6b;--status-passed:#7da88a;--status-failed:#f28b82;--status-flaky:#f0cf8a;--status-flaky-bg:#1f1705;--status-skipped:#8a8a8a;--shadow:0 8px 24px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--font-sans:"DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}.category-badge,.category-bar{--cat-text:var(--cat-text-light);--cat-bg:var(--cat-bg-light);--cat-border:var(--cat-border-light)}:root[data-theme=dark] .category-badge,:root[data-theme=dark] .category-bar{--cat-text:var(--cat-text-dark);--cat-bg:var(--cat-bg-dark);--cat-border:var(--cat-border-dark)}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--fg);font:14px/1.5 var(--font-sans);margin:0}#app{height:100%}a{color:var(--fg);text-decoration:underline;-webkit-text-decoration-color:var(--border-control);text-decoration-color:var(--border-control);text-underline-offset:2px}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--fg);outline-offset:2px}code,pre,kbd{font-family:var(--font-mono);font-size:12.5px}h1,h2,h3,strong,b{font-weight:600}[hidden]{display:none!important}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--fg-secondary)}.icon{flex:none;display:block}.app{flex-direction:column;height:100%;display:flex}.layout{flex:1;min-height:0;display:flex;position:relative}.main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:auto}.main:focus{outline:none}.main>.page{flex:1}.header{border-bottom:1px solid var(--border);background:var(--bg-card);flex-wrap:wrap;align-items:center;gap:8px 16px;padding:8px 16px;display:flex}.brand{align-items:baseline;gap:10px;min-width:0;display:flex}.wordmark{color:var(--status-passed);letter-spacing:-.01em;font-size:18px;font-weight:600}.header .title{min-width:0;color:inherit;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;text-decoration:none;overflow:hidden}.header .title:hover{text-decoration:underline}.run-status{border:1px solid;border-radius:999px;align-items:center;gap:4px;padding:1px 8px 1px 4px;font-size:12px;font-weight:600;display:inline-flex}.run-passed{color:var(--status-passed)}.run-failed,.run-timedout,.run-interrupted{color:var(--status-failed)}.counts{gap:12px;margin:0;padding:0;list-style:none;display:flex}.count{font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-weight:600;display:flex}.count.zero{font-weight:400}.count.zero .outcome-icon{color:var(--fg-secondary)}.count-link{color:inherit;border-radius:4px;align-items:center;gap:4px;margin:-2px -4px;padding:2px 4px;text-decoration:none;display:flex}.count-link:hover{background:var(--bg-muted)}.count-link:hover .count-value{text-decoration:underline}.run-meta{color:var(--fg-secondary);flex-wrap:wrap;gap:4px 16px;margin:0;font-size:13px;display:flex}.run-meta div{gap:4px;min-width:0;display:flex}.run-meta dt:after{content:":"}.run-meta dd{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.run-time{position:relative}.run-time dd{overflow:visible}.run-time time{-webkit-text-decoration:underline dotted var(--border-control);text-decoration:underline dotted var(--border-control);text-underline-offset:3px;cursor:help;border-radius:2px}.run-time-details{z-index:20;border:1px solid var(--border-control);background:var(--bg-card);box-shadow:var(--shadow);color:var(--fg);white-space:nowrap;border-radius:6px;flex-direction:column;gap:2px;margin-top:4px;padding:8px 10px;font-size:13px;display:none;position:absolute;top:100%;left:0}.run-time-details:before{content:"";height:6px;position:absolute;bottom:100%;left:0;right:0}.run-time:hover .run-time-details,.run-time:focus-within .run-time-details{display:flex}.run-time .run-time-details.dismissed{display:none}.theme-switch{border:1px solid var(--border-control);border-radius:6px;margin-left:auto;display:flex}.theme-switch .icon-button{border-radius:0}.theme-switch .icon-button:first-child{border-radius:5px 0 0 5px}.theme-switch .icon-button:last-child{border-radius:0 5px 5px 0}.theme-switch [aria-pressed=true]{background:var(--bg-muted);color:var(--fg)}.icon-button{width:30px;height:30px;color:var(--fg-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:hover{background:var(--bg-muted);color:var(--fg)}.text-button{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:2px 6px;font-size:12px}.text-button:hover{background:var(--bg-card);color:var(--fg)}.banner{border-bottom:1px solid var(--border);background:var(--status-flaky-bg);color:var(--status-flaky);align-items:flex-start;gap:8px;padding:8px 16px;display:flex}.banner .icon{margin-top:2px}.banner p{margin:0}.outcome-icon{align-items:center;gap:6px;display:inline-flex}.outcome-passed{color:var(--status-passed)}.outcome-failed{color:var(--status-failed)}.outcome-flaky{color:var(--status-flaky)}.outcome-skipped{color:var(--status-skipped)}.outcome-text{font-weight:600}.badge{text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:20px;padding:0 6px;font-size:12px;font-weight:600;line-height:16px;display:inline-block}.badge-failed{color:var(--status-failed);border:1px solid}.category-badge{border:1px solid var(--cat-border);background:var(--cat-bg);max-width:100%;color:var(--cat-text);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-items:center;padding:0 8px;font-size:12px;font-weight:600;line-height:20px;display:inline-flex;overflow:hidden}.sidebar{border-right:1px solid var(--border);background:var(--bg-muted);flex-direction:column;flex:none;width:340px;max-width:85vw;display:flex;overflow:auto}.nav-fixed{border-bottom:1px solid var(--border);margin:0;padding:8px;list-style:none}.nav-link{color:inherit;border-radius:6px;align-items:center;gap:8px;padding:4px 8px;text-decoration:none;display:flex}.nav-link:hover{background:var(--bg-card)}.nav-link[aria-current=page]{background:var(--bg-card);box-shadow:inset 3px 0 0 var(--fg);font-weight:600}.nav-link .icon{color:var(--fg-secondary)}.nav-marker{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.nav-marker .icon{color:var(--status-failed)}.sidebar-search{z-index:2;border-bottom:1px solid var(--border);background:var(--bg-muted);padding:8px 8px 0;position:sticky;top:0}.search-field{align-items:center;margin-bottom:8px;display:flex;position:relative}.search-field>.icon{color:var(--fg-secondary);pointer-events:none;position:absolute;left:8px}.search-field input{border:1px solid var(--border-control);background:var(--bg-card);width:100%;min-height:32px;color:var(--fg);font:inherit;border-radius:6px;padding:4px 30px}.search-field input::placeholder{color:var(--fg-secondary);opacity:1}.search-field input:focus-visible{outline-offset:0}.search-key{border:1px solid var(--border-control);color:var(--fg-secondary);pointer-events:none;border-radius:4px;padding:0 5px;font-size:11px;line-height:16px;position:absolute;right:8px}.search-field input:focus~.search-key,.search-field input:not(:placeholder-shown)~.search-key{display:none}.filter-indicator p{color:var(--fg-secondary);flex-wrap:wrap;align-items:center;gap:4px;margin:-2px 0 8px;padding:0 4px;font-size:13px;display:flex}.filter-indicator a{color:var(--fg);font-weight:600}.filter-indicator .text-button{text-decoration:underline;-webkit-text-decoration-color:var(--border-control);text-decoration-color:var(--border-control);text-underline-offset:2px;margin-left:auto}.tree-section{padding:8px 0}.tree-toolbar{align-items:center;gap:2px;padding:0 8px 4px 16px;display:flex}.tree-toolbar h2{color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.04em;flex:1;margin:0;font-size:12px;font-weight:600}.tree-empty{color:var(--fg-secondary);padding:0 16px}.tree-prefix{color:var(--fg-secondary);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;margin:0 16px 4px;font-size:12px;overflow:hidden}.tree{margin:0;padding:0 8px;list-style:none}.tree-row{outline-offset:-2px;border-radius:6px}.row-content{min-height:28px;padding:2px 8px 2px calc((var(--level) - 1) * 16px + 8px);color:inherit;cursor:pointer;align-items:center;gap:6px;text-decoration:none;display:flex}.tree-row:hover{background:var(--bg-card)}.tree-test[aria-selected=true],.tree-row.revealed{background:var(--bg-card);box-shadow:inset 3px 0 0 var(--fg)}.tree-test[aria-selected=true]{font-weight:600}.chevron{color:var(--fg-secondary);transition:transform .1s}.tree-group[aria-expanded=true]>.row-content .chevron{transform:rotate(90deg)}.tree-project>.row-content{font-weight:600}.row-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-group .row-label{display:flex}.tree-group .label-part{text-overflow:ellipsis;white-space:pre;flex:0 auto;min-width:0;overflow:hidden}.label-part+.label-part:before{content:" › ";color:var(--fg-secondary)}.tree-group .file-name{display:flex}.tree-group .label-part+.label-part{flex-shrink:8}.name-head{text-overflow:ellipsis;min-width:0;overflow:hidden}.name-tail{flex:none}.row-note{color:var(--fg-secondary);font-size:12px;font-weight:400}.row-counts{flex:none;align-items:center;gap:6px;display:flex}.row-total{min-width:20px;color:var(--fg-secondary);text-align:right;font-variant-numeric:tabular-nums;font-size:12px}.page{padding:24px}.page h1{margin:0 0 12px;font-size:22px;line-height:1.3}.breadcrumb{color:var(--fg-secondary);overflow-wrap:anywhere;margin:0 0 4px;font-size:13px}.test-title{overflow-wrap:anywhere}pre.message{background:var(--bg-muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;margin:0;padding:8px 12px;overflow:auto}.run-errors{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.run-error{border:1px solid var(--border);border-left:3px solid var(--status-failed);background:var(--bg-card);border-radius:6px;padding:12px 16px}.run-error-meta{color:var(--fg-secondary);flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:13px;display:flex}.run-error pre{background:var(--bg-muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;margin:8px 0 0;padding:8px 12px;overflow:auto}.run-error details{margin-top:8px}.run-error summary{color:var(--fg-secondary);cursor:pointer}.load-error{max-width:640px;margin:48px auto;padding:0 16px}.load-error h1{color:var(--status-failed);font-size:20px}.page{container-type:inline-size}.view{flex-direction:column;gap:16px;display:flex}.view>*,.view h1{max-width:1280px}.view>h1{margin-bottom:0}.widget{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;min-width:0;padding:16px}.widget>h2{margin:0 0 12px;font-size:15px;line-height:1.3}.widget-note{color:var(--fg-secondary);margin:-8px 0 12px;font-size:13px}.widget-hint{color:var(--fg-secondary);margin:12px 0 0;font-size:13px}.widget-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.widget-list>li{border-top:1px solid var(--border)}.widget-list>li:first-child{border-top:0}.widget-more{margin:8px 0 0}.widget-grid{grid-template-columns:repeat(auto-fit,minmax(max(380px,50% - 8px),1fr));align-items:start;gap:16px;display:grid}.widget-grid>:last-child:nth-child(odd){grid-column:1/-1}@container (width<=900px){.widget-grid{grid-template-columns:minmax(0,1fr)}}.verdict{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 32px;display:flex}.verdict-outcome{align-items:center;gap:10px;margin:0;font-size:22px;font-weight:600;display:flex}.verdict-outcome .icon{width:28px;height:28px}.verdict-outcome.outcome-flaky{background:var(--status-flaky-bg);border-radius:8px;padding:2px 12px 2px 8px}.verdict-meta{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0}.verdict-meta strong{color:var(--fg)}.outcome-bar{border-radius:5px;gap:2px;height:10px;margin:12px 0 8px;display:flex;overflow:hidden}.outcome-bar-part{flex-basis:0;min-width:4px}.bar-passed{background:var(--status-passed)}.bar-failed{background:var(--status-failed)}.bar-flaky{background:var(--status-flaky)}.bar-skipped{background:var(--status-skipped)}.outcome-legend{color:var(--fg-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:4px 16px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.outcome-legend li{align-items:center;gap:4px;display:flex}.widget-run-errors{border-left:3px solid var(--status-failed)}.widget-run-errors h2{align-items:center;gap:8px;display:flex}.widget-run-errors h2 .icon{color:var(--status-failed)}.widget-run-errors .widget-list code{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.widget-run-errors .widget-list li{padding:6px 0}.group-row{color:inherit;flex-direction:column;gap:2px;padding:8px 4px;text-decoration:none;display:flex}.group-row:hover{background:var(--bg-muted)}.group-row-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;display:flex}.group-test{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-row:hover .group-test{text-decoration:underline}.group-message{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-count{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.group-split{font-variant-numeric:tabular-nums;white-space:nowrap;flex-wrap:wrap;gap:4px 12px;font-weight:600;display:inline-flex}.group-split-part{align-items:center;gap:4px;display:inline-flex}.group-row-counts{flex-wrap:wrap;align-items:center;gap:4px 10px;margin-left:auto;display:inline-flex}.group-attempts{color:var(--fg-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.category-bars{grid-template-columns:minmax(0,max-content) minmax(40px,1fr) auto;display:grid}.category-bars>li{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.category-bar-row{grid-column:1/-1;grid-template-columns:subgrid;color:inherit;align-items:center;gap:8px;padding:6px 4px;text-decoration:none;display:grid}.category-bar-row:hover{background:var(--bg-muted)}.category-bar-row .category-badge{justify-self:start}.category-bar-track{height:8px;display:block}.category-bar{background:var(--cat-border);border-radius:4px;min-width:4px;height:100%;display:block}.category-list>li>details>summary{cursor:pointer;align-items:center;gap:8px;padding:8px 4px;list-style:none;display:flex}.category-list>li>details>summary::-webkit-details-marker{display:none}.category-list>li>details>summary:hover{background:var(--bg-muted)}.category-list summary .chevron{transition:transform .1s}.category-list details[open]>summary .chevron{transform:rotate(90deg)}.category-list summary .group-count{margin-left:auto}.category-list .widget-list{margin:0 0 8px 28px}.project-cards{flex-wrap:wrap;gap:12px;margin:0;padding:0;list-style:none;display:flex}.project-cards>li{flex:240px;min-width:0}.project-card{border:1px solid var(--border-control);background:var(--bg-card);width:100%;height:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;gap:6px;padding:12px;display:flex}.project-card:hover{background:var(--bg-muted)}.project-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.project-card .counts{flex-wrap:wrap;font-size:13px}.project-meta{color:var(--fg-secondary);font-size:13px}.data-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.data-table th,.data-table td{border-top:1px solid var(--border);text-align:right;vertical-align:top;padding:6px 8px}.data-table thead th{color:var(--fg-secondary);border-top:0;font-size:12px;font-weight:600}.data-table thead th .outcome-icon{justify-content:flex-end}.data-table th:first-child,.data-table td:first-child{text-align:left}.data-table .zero{color:var(--fg-secondary)}.data-table tbody th{overflow-wrap:anywhere;font-weight:400}.dimension-bars{grid-template-columns:minmax(0,max-content) minmax(60px,1fr) auto auto;align-items:center;gap:0 12px;margin:0;padding:0;list-style:none;display:grid}.dimension-bar-row{grid-column:1/-1;grid-template-columns:subgrid;border-top:1px solid var(--border);align-items:center;padding:6px 0;display:grid}.dimension-bar-row:first-child{border-top:0}.dimension-value-cell{overflow-wrap:anywhere;min-width:0}a.dimension-value{font-weight:600}.dimension-bar{height:10px;margin:0}.dimension-bar:empty{background:var(--bg-muted)}.dimension-bar-counts{justify-content:flex-end;gap:10px;font-size:13px;display:flex}.dimension-bar-counts .count{font-weight:600}.dimension-total{min-width:28px;color:var(--fg-secondary);text-align:right;font-variant-numeric:tabular-nums;font-size:13px}.tile-summary{margin:0 0 10px;font-size:13px}.dimension-tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.dimension-tiles>li{min-width:0;display:flex}.dimension-tile{color:inherit;border:1px solid var(--border);border-left:4px solid var(--tile-color);background:var(--bg-card);cursor:pointer;border-radius:6px;flex:1;align-items:center;gap:6px;min-width:0;padding:6px 8px;font-size:13px;text-decoration:none;display:flex;position:relative}span.dimension-tile{cursor:default}.dimension-tile:hover,.dimension-tile:focus-visible{background:var(--bg-muted)}.tile-failed{--tile-color:var(--status-failed)}.tile-flaky{--tile-color:var(--status-flaky);background:var(--status-flaky-bg)}.tile-passed{--tile-color:var(--status-passed)}.tile-skipped,.tile-none{--tile-color:var(--status-skipped)}.tile-failed .tile-value,.tile-flaky .tile-value{font-weight:600}.tile-value{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tile-icon-none{border:1.4px dashed var(--status-skipped);border-radius:50%;flex:none;width:16px;height:16px}.tile-flag{color:var(--status-flaky)}.tile-details{z-index:5;border:1px solid var(--border-control);background:var(--bg-card);min-width:180px;max-width:280px;box-shadow:var(--shadow);color:var(--fg);overflow-wrap:anywhere;border-radius:6px;flex-direction:column;gap:2px;padding:8px 10px;font-weight:400;display:none;position:absolute;bottom:calc(100% + 6px);left:0}.tooltip-open .tile-details{display:flex}.tile-details:after{content:"";height:8px;position:absolute;top:100%;left:0;right:0}.tile-note{color:var(--status-flaky)}.dimension-table{margin-top:12px}.dimension-table>summary{color:var(--fg-secondary);cursor:pointer;align-items:center;gap:4px;font-size:13px;list-style:none;display:inline-flex}.dimension-table>summary::-webkit-details-marker{display:none}.dimension-table>summary:hover{color:var(--fg)}.dimension-table[open]>summary .chevron{transform:rotate(90deg)}.dimension-table>.data-table{margin-top:8px}.pass-rate{cursor:help}.pass-rate strong{color:var(--fg)}.hygiene-flag{color:var(--status-flaky);align-items:center;gap:4px;margin-top:2px;font-size:12px;display:flex}.test-line{align-items:center;gap:8px;padding:6px 0;display:flex}.test-line .test-text{flex:1;min-width:0}.test-line .test-text a{overflow-wrap:anywhere}.test-line .test-where{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}.test-line .duration{font-variant-numeric:tabular-nums;flex:none}.skip-kind{border:1px solid var(--border-control);text-transform:uppercase;border-radius:4px;padding:0 6px;font-size:11px;font-weight:600}.flaky-error{align-items:center;gap:8px;min-width:0;margin-top:2px;display:flex}.flaky-error code{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-meta{flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 16px;display:flex}.group-meta div{align-items:center;gap:6px;display:flex}.group-meta dt{color:var(--fg-secondary)}.group-meta dd{margin:0}.group-page h2{margin:24px 0 8px;font-size:16px}.affected-tests{border-collapse:collapse;width:100%}.affected-tests th,.affected-tests td{border-top:1px solid var(--border);text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:6px 8px}.affected-tests thead th{color:var(--fg-secondary);border-top:0;font-size:12px;font-weight:600}.affected-tests .test-cell{align-items:flex-start;gap:6px;display:flex}.filter-bar{flex-direction:column;gap:10px;display:flex}.facets{flex-wrap:wrap;gap:8px;display:flex}.facet{position:relative}.facet-button{border:1px solid var(--border-control);background:var(--bg-card);cursor:pointer;border-radius:6px;align-items:center;gap:6px;min-height:32px;padding:4px 8px 4px 12px;list-style:none;display:inline-flex}.facet-button::-webkit-details-marker{display:none}.facet-button:hover{background:var(--bg-muted)}.facet-button .chevron{transition:transform .1s;transform:rotate(90deg)}.facet[open]>.facet-button .chevron{transform:rotate(-90deg)}.facet-selected{background:var(--fg);min-width:20px;color:var(--bg-card);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 6px;font-size:12px;font-weight:600;line-height:18px}.facet-menu{z-index:15;border:1px solid var(--border-control);background:var(--bg-card);min-width:220px;max-width:min(360px,90vw);max-height:360px;box-shadow:var(--shadow);border-radius:6px;flex-direction:column;margin:0;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0;overflow:auto}.facet-option{cursor:pointer;border-radius:4px;align-items:center;gap:8px;min-height:30px;padding:2px 8px;display:flex}.facet-option:hover{background:var(--bg-muted)}.facet-option input{width:16px;height:16px;accent-color:var(--fg);flex:none;margin:0}.facet-option .facet-value,.facet-option .category-badge{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.facet-count{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin-left:auto;padding-left:12px;font-size:12px}.facet-option-empty>:not(input):not(.facet-count){opacity:.7}.filter-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.filter-chips ul{display:contents}.filter-chips li{list-style:none;display:flex}.chip{border:1px solid var(--border-control);background:var(--bg-muted);max-width:320px;color:var(--fg);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 6px 2px 10px;font-size:13px;display:inline-flex}.chip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip .icon{color:var(--fg-secondary)}.chip:hover .icon{color:var(--fg)}.result-count{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0}.empty-state{border:1px dashed var(--border-control);border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:24px;display:flex}.empty-state p{margin:0}.button{border:1px solid var(--border-control);background:var(--bg-card);min-height:32px;color:var(--fg);font:inherit;cursor:pointer;border-radius:6px;padding:4px 12px}.button:hover{background:var(--bg-muted)}.view-tests>.table-scroll{max-width:none}.table-scroll{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;overflow-x:auto}.tests-table{border-collapse:collapse;width:100%;font-size:13px}.tests-table th,.tests-table td{border-top:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}.tests-table thead th{background:var(--bg-card);white-space:nowrap;border-top:0;position:sticky;top:0}.tests-table .numeric{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.tests-table tbody tr:hover{background:var(--bg-muted)}.tests-table .outcome-icon{white-space:nowrap}.cell-title{overflow-wrap:anywhere;min-width:240px}.cell-project{white-space:nowrap}.category-badges{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.category-more{color:var(--fg-secondary);cursor:help;font-size:12px;font-weight:600}.table-more{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.table-more p{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0 8px 0 0}.sort-button{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:2px;margin:-2px -4px;padding:2px 4px;font-size:12px;font-weight:600;display:inline-flex}.numeric .sort-button{flex-direction:row-reverse}.sort-button:hover{background:var(--bg-muted);color:var(--fg)}[aria-sort]>.sort-button{color:var(--fg)}.sort-idle{opacity:.5}.footer{border-top:1px solid var(--border);color:var(--fg-secondary);padding:16px 24px;font-size:12px}@media (width<=760px){.header{padding:8px 12px}.run-meta{order:10;width:100%}.sidebar{z-index:10;box-shadow:var(--shadow);position:absolute;inset:0 auto 0 0}.page{padding:16px}.footer{padding:12px 16px}.affected-tests thead{display:none}.affected-tests tr{border-top:1px solid var(--border);padding:6px 0;display:block}.affected-tests td{border:0;padding:2px 0;display:block}.run-time-details{white-space:normal}}
|
|
7
|
+
<script type="module">var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h={},g=[],_=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,v=Array.isArray;function y(e,t){for(var n in t)e[n]=t[n];return e}function ee(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function b(t,n,r){var i,a,o,s={};for(o in n)o==`key`?i=n[o]:o==`ref`?a=n[o]:s[o]=n[o];if(arguments.length>2&&(s.children=arguments.length>3?e.call(arguments,2):r),typeof t==`function`&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return x(t,s,i,a,null)}function x(e,r,i,a,o){var s={type:e,props:r,key:i,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++n,__i:-1,__u:0};return o==null&&t.vnode!=null&&t.vnode(s),s}function S(e){return e.children}function te(e,t){this.props=e,this.context=t}function C(e,t){if(t==null)return e.__?C(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?C(e):null}function w(e){if(e.__P&&e.__d){var n=e.__v,r=n.__e,i=[],a=[],o=y({},n);o.__v=n.__v+1,t.vnode&&t.vnode(o),le(e.__P,o,n,e.__n,e.__P.namespaceURI,32&n.__u?[r]:null,i,r??C(n),!!(32&n.__u),a),o.__v=n.__v,o.__.__k[o.__i]=o,de(i,o,a),n.__e=n.__=null,o.__e!=r&&T(o)}}function T(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),T(e)}function ne(e){(!e.__d&&(e.__d=!0)&&i.push(e)&&!E.__r++||a!=t.debounceRendering)&&((a=t.debounceRendering)||o)(E)}function E(){try{for(var e,t=1;i.length;)i.length>t&&i.sort(s),e=i.shift(),t=i.length,w(e)}finally{i.length=E.__r=0}}function re(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,_,v,y=r&&r.__k||g,ee=t.length;for(c=ie(n,t,y,c,ee),d=0;d<ee;d++)(p=n.__k[d])!=null&&(f=p.__i!=-1&&y[p.__i]||h,p.__i=d,v=le(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&me(f.ref,null,p),u.push(p.ref,p.__c||m,p)),_==null&&m!=null&&(_=m),4&p.__u?(c=ae(p,c,e),f.__e&&(f.__e=null)):typeof p.type==`function`&&v!==void 0?c=v:m&&(c=m.nextSibling),p.__u&=-7);return n.__e=_,c}function ie(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=x(null,o,null,null,null):v(o)?o=e.__k[a]=x(S,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=x(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,s=null,(l=o.__i=oe(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=C(s)),he(s,s));return r}function ae(e,t,n){var r,i;if(typeof e.type==`function`){for(r=e.__k,i=0;r&&i<r.length;i++)r[i]&&(r[i].__=e,t=ae(r[i],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=C(e)),t=n.insertBefore(e.__e,t||null));do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function oe(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&!(2&l.__u);if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function se(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||_.test(t)?n:n+`px`}function D(e,t,n,r,i){var a,o;n:if(t==`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||se(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||se(e.style,t,n[t])}}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(d,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n[u]=r[u]:(n[u]=f,e.addEventListener(t,a?m:p,a)):e.removeEventListener(t,a?m:p,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function ce(e){return function(n){if(this.l){var r=this.l[n.type+e];if(n[l]==null)n[l]=f++;else if(n[l]<r[u])return;return r(t.event?t.event(n):n)}}}function le(e,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,_,b,x,w,T,ne,E,ie,ae,oe,se,D=n.type;if(n.constructor!==void 0)return null;128&r.__u&&(l=!!(32&r.__u),o=[c=n.__e=r.__e]),(d=t.__b)&&d(n);n:if(typeof D==`function`){f=s.length;try{if(w=n.props,T=D.prototype&&D.prototype.render,ne=(d=D.contextType)&&i[d.__c],E=d?ne?ne.props.value:d.__:i,r.__c?x=(p=n.__c=r.__c).__=p.__E:(T?n.__c=p=new D(w,E):(n.__c=p=new te(w,E),p.constructor=D,p.render=ge),ne&&ne.sub(p),p.state||(p.state={}),p.__n=i,m=p.__d=!0,p.__h=[],p._sb=[]),T&&p.__s==null&&(p.__s=p.state),T&&D.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=y({},p.__s)),y(p.__s,D.getDerivedStateFromProps(w,p.__s))),h=p.props,_=p.state,p.__v=n,m)T&&D.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),T&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(T&&D.getDerivedStateFromProps==null&&w!==h&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(w,E),n.__v==r.__v||!p.__e&&p.shouldComponentUpdate!=null&&!1===p.shouldComponentUpdate(w,p.__s,E)){n.__v!=r.__v&&(p.props=w,p.state=p.__s,p.__d=!1),n.__e=r.__e,n.__k=r.__k,n.__k.some(function(e){e&&(e.__=n)}),g.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p),c=C(r);break n}p.componentWillUpdate!=null&&p.componentWillUpdate(w,p.__s,E),T&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(h,_,b)})}if(p.context=E,p.props=w,p.__P=e,p.__e=!1,ie=t.__r,ae=0,T)p.state=p.__s,p.__d=!1,ie&&ie(n),d=p.render(p.props,p.state,p.context),g.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,ie&&ie(n),d=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++ae<25);p.state=p.__s,p.getChildContext!=null&&(i=y(y({},i),p.getChildContext())),T&&!m&&p.getSnapshotBeforeUpdate!=null&&(b=p.getSnapshotBeforeUpdate(h,_)),oe=d!=null&&d.type===S&&d.key==null?fe(d.props.children):d,c=re(e,v(oe)?oe:[oe],n,r,i,a,o,s,c,l,u),p.base=n.__e,n.__u&=-161,p.__h.length&&s.push(p),x&&(p.__E=p.__=null)}catch(e){if(s.length=f,n.__v=null,l||o!=null){if(e.then){for(n.__u|=l?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o!=null&&(o[o.indexOf(c)]=null),n.__e=c}else if(o!=null)for(se=o.length;se--;)ee(o[se])}else n.__e=r.__e;n.__k??=r.__k||[],e.then||ue(n),t.__e(e,n,r)}}else o==null&&n.__v==r.__v?(n.__k=r.__k,n.__e=r.__e):c=n.__e=pe(r.__e,n,r,i,a,o,s,l,u);return(d=t.diffed)&&d(n),128&n.__u?void 0:c}function ue(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(ue))}function de(e,n,r){for(var i=0;i<r.length;i++)me(r[i],r[++i],r[++i]);t.__c&&t.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){t.__e(e,n.__v)}})}function fe(e){return typeof e!=`object`||!e||e.__b>0?e:v(e)?e.map(fe):e.constructor===void 0?y({},e):null}function pe(n,r,i,a,o,s,c,l,u){var d,f,p,m,g,_,y,b=i.props||h,x=r.props,S=r.type;if(S==`svg`?o=`http://www.w3.org/2000/svg`:S==`math`?o=`http://www.w3.org/1998/Math/MathML`:o||=`http://www.w3.org/1999/xhtml`,s!=null){for(d=0;d<s.length;d++)if((g=s[d])&&`setAttribute`in g==!!S&&(S?g.localName==S:g.nodeType==3)){n=g,s[d]=null;break}}if(n==null){if(S==null)return document.createTextNode(x);n=document.createElementNS(o,S,x.is&&x),l&&=(t.__m&&t.__m(r,s),!1),s=null}if(S==null)b===x||l&&n.data==x||(n.data=x);else{if(s=S==`textarea`&&x.defaultValue!=null?null:s&&e.call(n.childNodes),!l&&s!=null)for(b={},d=0;d<n.attributes.length;d++)b[(g=n.attributes[d]).name]=g.value;for(d in b)g=b[d],d==`dangerouslySetInnerHTML`?p=g:d==`children`||d in x||d==`value`&&`defaultValue`in x||d==`checked`&&`defaultChecked`in x||D(n,d,null,g,o);for(d in x)g=x[d],d==`children`?m=g:d==`dangerouslySetInnerHTML`?f=g:d==`value`?_=g:d==`checked`?y=g:l&&typeof g!=`function`||b[d]===g||D(n,d,g,b[d],o);if(f)l||p&&(f.__html==p.__html||f.__html==n.innerHTML)||(n.innerHTML=f.__html),r.__k=[];else if(p&&(n.innerHTML=``),re(r.type==`template`?n.content:n,v(m)?m:[m],r,i,a,S==`foreignObject`?`http://www.w3.org/1999/xhtml`:o,s,c,s?s[0]:i.__k&&C(i,0),l,u),s!=null)for(d=s.length;d--;)ee(s[d]);l&&S!=`textarea`||(d=`value`,S==`progress`&&_==null?n.removeAttribute(`value`):_!=null&&(_!==n[d]||S==`progress`&&!_||S==`option`&&_!=b[d])&&D(n,d,_,b[d],o),d=`checked`,y!=null&&y!=n[d]&&D(n,d,y,b[d],o))}return n}function me(e,n,r){try{if(typeof e==`function`){var i=typeof e.__u==`function`;i&&e.__u(),i&&n==null||(e.__u=e(n))}else e.current=n}catch(e){t.__e(e,r)}}function he(e,n,r){var i,a;if(t.unmount&&t.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||me(i,null,n)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){t.__e(e,n)}i.base=i.__P=i.__n=null}if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&he(i[a],n,r||typeof e.type!=`function`);r||ee(e.__e),e.__c=e.__=e.__e=void 0}function ge(e,t,n){return this.constructor(e,n)}function _e(n,r,i){var a,o,s,c;r==document&&(r=document.documentElement),t.__&&t.__(n,r),o=(a=typeof i==`function`)?null:i&&i.__k||r.__k,s=[],c=[],le(r,n=(!a&&i||r).__k=b(S,null,[n]),o||h,h,r.namespaceURI,!a&&i?[i]:o?null:r.firstChild?e.call(r.childNodes):null,s,!a&&i?i:o?o.__e:r.firstChild,a,c),de(s,n,c),n.props.children=null}e=g.slice,t={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},n=0,r=function(e){return e!=null&&e.constructor===void 0},te.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=y({},this.state);typeof e==`function`&&(e=e(y({},n),this.props)),e&&y(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),ne(this))},te.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),ne(this))},te.prototype.render=S,i=[],o=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,s=function(e,t){return e.__v.__b-t.__v.__b},E.__r=0,c=Math.random().toString(8),l=`__d`+c,u=`__a`+c,d=/(PointerCapture)$|Capture$/i,f=0,p=ce(!1),m=ce(!0);var ve,O,ye,be,xe=0,Se=[],k=t,Ce=k.__b,we=k.__r,Te=k.diffed,Ee=k.__c,De=k.unmount,Oe=k.__;function ke(e,t){k.__h&&k.__h(O,e,xe||t),xe=0;var n=O.__H||(O.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function A(e){return xe=1,Ae(ze,e)}function Ae(e,t,n){var r=ke(ve++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):ze(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=O,!O.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=!1,o=r.__c.props!==e;if(r.__c.__H.__.some(function(e){if(e.__N){i=!0;var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a){var s=a.call(this,e,t,n);return i?s||o:s}return!i||o};O.__f=!0;var a=O.shouldComponentUpdate,o=O.componentWillUpdate;O.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},O.shouldComponentUpdate=i}return r.__N||r.__}function je(e,t){var n=ke(ve++,3);!k.__s&&Re(n.__H,t)&&(n.__=e,n.u=t,O.__H.__h.push(n))}function j(e,t){var n=ke(ve++,4);!k.__s&&Re(n.__H,t)&&(n.__=e,n.u=t,O.__h.push(n))}function M(e){return xe=5,N(function(){return{current:e}},[])}function N(e,t){var n=ke(ve++,7);return Re(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Me(){var e=ke(ve++,11);if(!e.__){for(var t=O.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__=`P`+n[0]+`-`+n[1]++}return e.__}function Ne(){for(var e;e=Se.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Ie),t.__h.some(Le),t.__h=[]}catch(n){t.__h=[],k.__e(n,e.__v)}}}k.__b=function(e){O=null,Ce&&Ce(e)},k.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Oe&&Oe(e,t)},k.__r=function(e){we&&we(e),ve=0;var t=(O=e.__c).__H;t&&(ye===O?(t.__h=[],O.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(Ie),t.__h.some(Le),t.__h=[],ve=0)),ye=O},k.diffed=function(e){Te&&Te(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Se.push(t)!==1&&be===k.requestAnimationFrame||((be=k.requestAnimationFrame)||Fe)(Ne)),t.__H.__.some(function(e){e.u&&=(e.__H=e.u,void 0)})),ye=O=null},k.__c=function(e,t){t.some(function(e){try{e.__h.some(Ie),e.__h=e.__h.filter(function(e){return!e.__||Le(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],k.__e(n,e.__v)}}),Ee&&Ee(e,t)},k.unmount=function(e){De&&De(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{Ie(e)}catch(e){t=e}}),n.__H=void 0,t&&k.__e(t,n.__v))};var Pe=typeof requestAnimationFrame==`function`;function Fe(e){var t,n=function(){clearTimeout(r),Pe&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Pe&&(t=requestAnimationFrame(n))}function Ie(e){var t=O,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),O=t}function Le(e){var t=O;e.__c=e.__(),O=t}function Re(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function ze(e,t){return typeof t==`function`?t(e):t}var Be=Symbol.for(`preact-signals`);function Ve(){if(F>1)F--;else{var e,t=!1;for((function(){var e=Ye;for(Ye=void 0;e!==void 0;){var t=e.S;if(t.v===e.v)for(var n=t.t;n!==void 0;n=n.x)n.i===e.i&&(n.i=t.i);e=e.o}})();Ge!==void 0;){var n=Ge;for(Ge=void 0,Ke++;n!==void 0;){var r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Qe(n))try{n.c()}catch(n){t||=(e=n,!0)}n=r}}if(Ke=0,F--,t)throw e}}function He(e){if(F>0)return e();Je=++qe,F++;try{return e()}finally{Ve()}}var Ue,P=void 0;function We(e){var t=P,n=Ue;P=void 0,Ue=void 0;try{return e()}finally{P=t,Ue=n}}var Ge=void 0,F=0,Ke=0,qe=0,Je=0,Ye=void 0,Xe=0;function Ze(e){if(P!==void 0){var t=e.n;if(t===void 0||t.t!==P)return t={i:0,S:e,p:P.s,n:void 0,t:P,e:void 0,x:void 0,r:t},P.s!==void 0&&(P.s.n=t),P.s=t,e.n=t,32&P.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=P.s,t.n=void 0,P.s.n=t,P.s=t),t}}function I(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}I.prototype.brand=Be,I.prototype.h=function(){return!0},I.prototype.S=function(e){var t=this,n=this.t;n!==e&&e.e===void 0&&(e.x=n,this.t=e,n===void 0?We(function(){var e;(e=t.W)==null||e.call(t)}):n.e=e)},I.prototype.U=function(e){var t=this;if(this.t!==void 0){var n=e.e,r=e.x;n!==void 0&&(n.x=r,e.e=void 0),r!==void 0&&(r.e=n,e.x=void 0),e===this.t&&(this.t=r,r===void 0&&We(function(){var e;(e=t.Z)==null||e.call(t)}))}},I.prototype.subscribe=function(e){var t=this;return st(function(){var n=t.value;We(function(){return e(n)})},{name:`sub`})},I.prototype.valueOf=function(){return this.value},I.prototype.toString=function(){return this.value+``},I.prototype.toJSON=function(){return this.value},I.prototype.peek=function(){var e=this;return We(function(){return e.value})},Object.defineProperty(I.prototype,"value",{get:function(){var e=Ze(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(Ke>100)throw Error(`Cycle detected`);(function(e){F!==0&&Ke===0&&e.l!==Je&&(e.l=Je,Ye={S:e,v:e.v,i:e.i,o:Ye})})(this),this.v=e,this.i++,Xe++,F++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Ve()}}}});function L(e,t){return new I(e,t)}function Qe(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function $e(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function et(e){for(var t=e.s,n=void 0;t!==void 0;){var r=t.p;t.i===-1?(t.S.U(t),r!==void 0&&(r.n=t.n),t.n!==void 0&&(t.n.p=r)):n=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=r}e.s=n}function tt(e,t){I.call(this,void 0,t),this.x=e,this.s=void 0,this.g=Xe-1,this.f=4}tt.prototype=new I,tt.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Xe))return!0;if(this.g=Xe,this.f|=1,this.i>0&&!Qe(this))return this.f&=-2,!0;var e=P;try{$e(this),P=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return P=e,et(this),this.f&=-2,!0},tt.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}I.prototype.S.call(this,e)},tt.prototype.U=function(e){if(this.t!==void 0&&(I.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},tt.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(tt.prototype,"value",{get:function(){if(1&this.f)throw Error(`Cycle detected`);var e=Ze(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function nt(e,t){return new tt(e,t)}function rt(e){var t=e.m;if(e.m=void 0,typeof t==`function`){F++;var n=P;P=void 0;try{t()}catch(t){throw e.f&=-2,e.f|=8,it(e),t}finally{P=n,Ve()}}}function it(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,rt(e)}function at(e){if(P!==this)throw Error(`Out-of-order effect`);et(this),P=e,this.f&=-2,8&this.f&&it(this),Ve()}function ot(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t?.name,Ue&&Ue.push(this)}ot.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t==`function`&&(this.m=t)}finally{e()}},ot.prototype.S=function(){if(1&this.f)throw Error(`Cycle detected`);this.f|=1,this.f&=-9,rt(this),$e(this),F++;var e=P;return P=this,at.bind(this,e)},ot.prototype.N=function(){2&this.f||(this.f|=2,this.u=Ge,Ge=this)},ot.prototype.d=function(){this.f|=8,1&this.f||it(this)},ot.prototype.dispose=function(){this.d()};function st(e,t){var n=new ot(e,t);try{n.c()}catch(e){throw n.d(),e}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var ct,lt,ut=typeof window<`u`&&!!window.__PREACT_SIGNALS_DEVTOOLS__,dt=[];st(function(){ct=this.N})();function ft(e,n){t[e]=n.bind(null,t[e]||function(){})}function pt(e){if(lt){var t=lt;lt=void 0,t()}lt=e&&e.S()}function mt(e){var t=this,n=e.data,i=gt(n);i.name=`ReactiveDom`,i.value=n;var a=N(function(){for(var e=t,n=t.__v;n=n.__;)if(n.__c){n.__c.__$f|=4;break}var a=nt(function(){var e=i.value.value;return e===0?0:!0===e?``:e||``}),o=nt(function(){return!Array.isArray(a.value)&&!r(a.value)}),s=st(function(){if(this.N=yt,o.value){var t=a.value;e.__v&&e.__v.__e&&e.__v.__e.nodeType===3&&(e.__v.__e.data=t)}}),c=t.__$u.d;return t.__$u.d=function(){s(),c.call(this)},[o,a]},[]),o=a[0],s=a[1];return o.value?s.peek():s.value}mt.displayName=`ReactiveTextNode`,Object.defineProperties(I.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:mt},props:{configurable:!0,get:function(){var e=this;return{data:{get value(){return e.value}}}}},__b:{configurable:!0,value:1}}),ft(`__b`,function(e,t){if(pt(),typeof t.type==`string`){var n,r=t.props;for(var i in r)if(i!==`children`){var a=r[i];a instanceof I&&(n||(t.__np=n={}),n[i]=a,r[i]=a.peek())}}e(t)}),ft(`__r`,function(e,t){if(e(t),t.type!==S){pt();var n,r=t.__c;r&&(r.__$f&=-2,(n=r.__$u)===void 0&&(r.__$u=n=function(e,t){var n;return st(function(){n=this},{name:t}),n.c=e,n}(function(e){return function(){var t;ut&&((t=this.y)==null||t.call(this)),e.__$f|=1,e.setState({})}}(r),typeof t.type==`function`?t.type.displayName||t.type.name:``))),pt(n)}}),ft(`__e`,function(e,t,n,r){pt(),e(t,n,r)}),ft(`diffed`,function(e,t){pt();var n;if(typeof t.type==`string`&&(n=t.__e)){var r=t.__np,i=t.props,a=n.U;if(a)for(var o in a){var s=a[o];s===void 0||r&&o in r||(s.d(),a[o]=void 0)}if(r)for(var c in a||(a={},n.U=a),r){var l=a[c],u=r[c];l===void 0?(l=ht(n,c,u,i),a[c]=l):l.o(u,i)}}e(t)});function ht(e,t,n,r){var i=t in e&&e.ownerSVGElement===void 0,a=L(n);return{o:function(e,t){a.value=e,r=t},d:st(function(){this.N=yt;var n=a.value.value;r[t]!==n&&(r[t]=n,i?e[t]=n:n!=null&&(!1!==n||t[4]===`-`)?e.setAttribute(t,n):e.removeAttribute(t))})}}ft(`unmount`,function(e,t){if(typeof t.type==`string`){var n=t.__e;if(n){var r=n.U;if(r)for(var i in n.U=void 0,r){var a=r[i];a&&a.d()}}var o=t.__np;if(o){var s=t.props;for(var c in o)s[c]=o[c]}t.__np=void 0}else{var l=t.__c;if(l){l.__$f|=8;var u=l.__$u;u&&(l.__$u=void 0,u.d())}}e(t)}),ft(`__h`,function(e,t,n,r){r<3&&(t.__$f|=2),e(t,n,r)}),te.prototype.shouldComponentUpdate=function(e,t){if(this.__R)return!0;var n=this.__$u,r=n&&n.s!==void 0;for(var i in t)return!0;if(this.__f||typeof this.u==`boolean`&&!0===this.u){var a=2&this.__$f;if(!(r||a||4&this.__$f)||1&this.__$f)return!0}else if(!(r||4&this.__$f)||3&this.__$f)return!0;for(var o in e)if(o!==`__source`&&e[o]!==this.props[o])return!0;for(var s in this.props)if(!(s in e))return!0;return!1};function gt(e,t){return N(function(){return L(e,t)},[])}var _t=function(e){queueMicrotask(function(){queueMicrotask(e)})};function vt(){He(function(){for(var e;e=dt.shift();)ct.call(e)})}function yt(){dt.push(this)===1&&(t.requestAnimationFrame||_t)(vt)}var bt=L({text:``,seq:0});function xt(e){bt.value={text:e,seq:bt.value.seq+1}}var St=L(null);async function Ct(e){try{return typeof navigator.clipboard?.writeText==`function`&&(await navigator.clipboard.writeText(e),!0)}catch{return!1}}async function wt(e,t){return await Ct(t)?(xt(`${e} copied to the clipboard.`),!0):(St.value={label:e,text:t},!1)}function Tt(e){try{return window.localStorage.getItem(e)}catch{return null}}function Et(e,t){try{window.localStorage.setItem(e,t)}catch{}}var Dt=`loupe.sidebar`,Ot=`(max-width: 760px)`;function kt(){return window.matchMedia(Ot).matches}var R=L(!kt()&&Tt(Dt)!==`closed`);function At(){R.value=!R.value,kt()||Et(Dt,R.value?`open`:`closed`)}var jt=L(null);function Mt(e){R.value=!0,jt.value={key:e,seq:(jt.value?.seq??0)+1}}var Nt=/^(0|[1-9]\d*)$/,Pt={"run-errors":{page:`errors`}};function Ft(e){try{return decodeURIComponent(e)}catch{return null}}function It(e){return Ft(e)??e}function Lt(e){let t=e.split(`/`).filter(e=>e!==``).map(Ft);if(t.some(e=>e===null))return{page:`not-found`,path:e};let[n,r,i,a]=t;if(t.length===0)return{page:`dashboard`};if(t.length===1&&(n===`errors`||n===`health`||n===`tests`))return{page:n};if(n===`errors`&&r===`category`&&t.length===3&&i!==void 0)return{page:`errors`,category:i};if(t.length===1&&n!==void 0&&Object.hasOwn(Pt,n))return Pt[n];if(n===`group`&&r!==void 0&&t.length===2)return{page:`group`,signature:r};if(n===`test`&&r!==void 0){if(t.length===2)return{page:`test`,id:r,repeatEachIndex:0};if(t.length===4&&i===`repeat`&&a!==void 0&&Nt.test(a))return{page:`test`,id:r,repeatEachIndex:Number(a)}}return{page:`not-found`,path:e}}function Rt(e){let t=e.startsWith(`#`)?e.slice(1):e,n=t.indexOf(`?`),r=n===-1?t:t.slice(0,n),i=n===-1?``:t.slice(n+1);return{route:Lt(r),search:i}}function zt(e){switch(e.page){case`dashboard`:return`/`;case`errors`:return e.category===void 0?`/errors`:`/errors/category/${encodeURIComponent(e.category)}`;case`health`:return`/health`;case`tests`:return`/tests`;case`test`:{let t=`/test/${encodeURIComponent(e.id)}`;return e.repeatEachIndex===0?t:`${t}/repeat/${e.repeatEachIndex}`}case`group`:return`/group/${encodeURIComponent(e.signature)}`;case`not-found`:return e.path.startsWith(`/`)?e.path:`/${e.path}`}}function z(e){return`#${zt(e.route)}${e.search?`?${e.search}`:``}`}function Bt(e){let t=((e.startsWith(`#`)?e.slice(1):e).split(`?`)[0]??``).split(`/`).filter(e=>e!==``);return t.length!==1||!Object.hasOwn(Pt,It(t[0]))?null:z(Rt(e))}var Vt=(e,t)=>e;function Ht(){let e=window.location.hash,t=Rt(e),n={route:t.route,search:Vt(t.search,t.route)};return(Bt(e)!==null||n.search!==t.search)&&window.history.replaceState(window.history.state,``,z(n)),n}var B=L(Ht());function Ut(){let e=Ht();z(e)!==z(B.value)&&(B.value=e)}window.addEventListener(`hashchange`,Ut),window.addEventListener(`popstate`,Ut);function Wt(e){Vt=e,Ut()}var Gt=new Set([`attempt`]);function Kt(e){return e.split(`&`).filter(e=>e!==``&&!Gt.has(e.split(`=`)[0]??``)).join(`&`)}function V(e){return z({route:e,search:Vt(Kt(B.value.search),e)})}function qt(e){window.location.hash=V(e)}function Jt(e,t){let n=z(e);n!==z(B.value)&&(t===`push`?window.history.pushState(null,``,n):window.history.replaceState(window.history.state,``,n),B.value=e)}var Yt=[`passed`,`failed`,`flaky`,`skipped`],Xt=[`screenshot`,`video`,`trace`,`text`,`other`];function Zt(e,t){return t.status!==e.expectedStatus&&t.status!==`skipped`}function Qt(e){let t=new Map;for(let n of e.tests)for(let e of n.attempts)if(Zt(n,e))for(let r of e.errors){let i=t.get(r.signature);i||(i={signature:r.signature,category:r.category??`Uncategorized`,message:r.message,tests:[],failed:0,flaky:0},t.set(r.signature,i));let a=i.tests[i.tests.length-1];a?.test===n?a.attempts.includes(e.index)||a.attempts.push(e.index):(i.tests.push({test:n,attempts:[e.index]}),n.outcome===`failed`?i.failed+=1:n.outcome===`flaky`&&(i.flaky+=1))}return[...t.values()]}function $t(e){return e.map((e,t)=>({group:e,index:t})).sort((e,t)=>t.group.failed-e.group.failed||t.group.flaky-e.group.flaky||e.index-t.index).map(({group:e})=>e)}function en(e){return e.split(`
|
|
8
|
+
`).find(e=>e.trim()!==``)?.trim()??``}var tn=/^(?:Error: )?(?:expect(?:\.soft|\.poll)?\(\w+\)\.(?:not\.)?\w+\([^)]*\)(?: failed)?|Timed out \d+ms waiting for expect\(.*)$/,nn=/^\s*Locator:\s+(.+?)\s*$/m,rn=/^\s*(?:- )?\u2190 (\d{3}\b.*?)\s*$/m;function an(e){let t=en(e);if(!tn.test(t))return t;let n=nn.exec(e);if(n)return`Locator: ${n[1]}`;let r=rn.exec(e);return r?`\u2190 ${r[1]}`:t}function on(e){return{headline:an(e.message),firstTest:e.tests[0]?.test??null,others:Math.max(0,e.tests.length-1)}}function sn(e){return e.tests.some(({test:e})=>e.attempts.length>1)?`failed on ${e.tests.reduce((e,{attempts:t})=>e+t.length,0)} of ${e.tests.reduce((e,{test:t})=>e+t.attempts.length,0)} attempts`:null}function cn(e,t){let n=new Map;for(let e of t){let t=n.get(e.category);t||(t={tests:new Set,groups:[]},n.set(e.category,t)),t.groups.push(e);for(let{test:n}of e.tests)t.tests.add(n)}let r=e.categories.map(e=>e.name);return[...r.filter(e=>n.has(e)),...[...n.keys()].filter(e=>!r.includes(e))].map(e=>{let t=n.get(e);return{name:e,tests:t.tests.size,groups:t.groups}})}function ln(e){let{stats:t,status:n,errors:r}=e.run;return t.failed>0||n!==`passed`||r.length>0?`failed`:t.flaky>0?`flaky`:`passed`}function un(e){return Yt.filter(t=>e[t]>0).map(t=>({outcome:t,count:e[t],share:e.total>0?e[t]/e.total:0}))}function dn(e){let t=e.total-e.skipped;return t>0?e.passed/t:null}var fn=`Pass rate: passed / (total − skipped). Skipped tests are excluded; flaky tests do not count as passed.`;function pn(e){let t=e*100;return t>99&&t<100?`99%`:t>0&&t<1?`<1%`:`${Math.round(t)}%`}function mn(e){return e.projects.filter(e=>e.stats.total>0).map(t=>{let n=e.tests.filter(e=>e.project===t.name).reduce((e,t)=>e+t.durationMs,0);return{project:t,passRate:dn(t.stats),durationMs:n}})}function hn(e){return e.dimensions.map(t=>{let n=new Map,r=e=>{let r=n.get(e);return r||(r={value:e,passed:0,failed:0,flaky:0,skipped:0,total:0,unknown:t.values!==null&&!t.values.includes(e),caseVariants:[]},n.set(e,r)),r};for(let e of t.values??[])r(e);let i=0;for(let n of e.tests){let e=n.dimensions[t.name]??[];e.length===0&&(i+=1);for(let t of new Set(e)){let e=r(t);e[n.outcome]+=1,e.total+=1}}let a=t.values??[],o=[...n.keys()].filter(e=>!a.includes(e)).sort((e,t)=>e.localeCompare(t)),s=[...a,...o].map(e=>n.get(e)),c=xn(s.map(e=>e.value));for(let e of s)e.caseVariants=c.get(e.value)??[];return{definition:t,values:s,without:i}})}function gn(e){return e.values.length<=8?`bars`:`tiles`}function _n(e){return e.failed>0?`failed`:e.flaky>0?`flaky`:e.passed>0?`passed`:e.skipped>0?`skipped`:`none`}var vn={failed:0,flaky:1,passed:2,skipped:3,none:4};function yn(e){return e.map((e,t)=>({row:e,index:t,status:_n(e)})).sort((e,t)=>vn[e.status]-vn[t.status]||t.row.failed-e.row.failed||t.row.flaky-e.row.flaky||e.index-t.index).map(({row:e})=>e)}function bn(e){let t=t=>e.filter(e=>_n(e)===t).length,n=[[t(`passed`),`all passed`],[t(`failed`),`with failures`],[t(`flaky`),`flaky`],[t(`skipped`),`skipped only`],[t(`none`),`without tests`]];return[`${e.length} ${e.length===1?`value`:`values`}`,...n.filter(([e])=>e>0).map(([e,t])=>`${e} ${t}`)].join(` · `)}function xn(e){let t=new Map;for(let n of new Set(e)){let e=n.toLowerCase();t.set(e,[...t.get(e)??[],n])}let n=new Map;for(let e of t.values())if(!(e.length<2))for(let t of e)n.set(t,e.filter(e=>e!==t));return n}function Sn(e){return e.tests.filter(e=>e.outcome===`flaky`).map(e=>({test:e,error:e.attempts.find(t=>Zt(e,t))?.errors[0]??null}))}function Cn(e,t=10){return e.tests.filter(e=>e.outcome!==`skipped`&&e.durationMs>0).map((e,t)=>({test:e,index:t})).sort((e,t)=>t.test.durationMs-e.test.durationMs||e.index-t.index).slice(0,t).map(({test:e})=>e)}var wn=[`skip`,`fixme`];function Tn(e){return e.tests.filter(e=>e.outcome===`skipped`).map(e=>{let t=[...e.annotations,...e.attempts[e.attempts.length-1]?.annotations??[]].find(e=>wn.includes(e.type));return{test:e,kind:t?t.type:null,reason:t?.description?.trim()||null}})}var En=/^@([^:\s]+):(.+)$/;function Dn(e){let t=En.exec(e);return t?{prefix:t[1]??``,value:t[2]??``}:null}var On=[`status`,`title`,`project`,`file`,`duration`,`category`,`attempts`],H={column:`declaration`,direction:`asc`};function kn(e){return In(Object.keys(e)).map(t=>[t,e[t]??[]]).filter(([,e])=>e.length>0)}var An={q:``,facets:{},sort:H},jn=[`status`,`project`,`tag`],Mn=`dim.`;function Nn(e){return`${Mn}${e}`}function Pn(e){return e.startsWith(Mn)?e.slice(4):null}function Fn(e,t){return e<t?-1:+(e>t)}function In(e){let t=e=>e===`category`?4:Pn(e)===null?jn.indexOf(e):3;return[...e].sort((e,n)=>t(e)-t(n)||Fn(e,n))}function Ln(e){try{return decodeURIComponent(e.replace(/\+/g,` `))}catch{return null}}function Rn(e){let[t,n,...r]=e.split(`:`);return r.length>0||n===void 0?null:t===`declaration`?n===`asc`?H:null:!On.includes(t??``)||n!==`asc`&&n!==`desc`?null:{column:t,direction:n}}function zn(e,t){let n=e;if(e.startsWith(`#`)){let t=e.indexOf(`?`);n=t===-1?``:e.slice(t+1)}else e.startsWith(`?`)&&(n=e.slice(1));let r={},i=``,a=H;for(let e of n.split(`&`)){if(e===``)continue;let n=e.indexOf(`=`),o=Ln(n===-1?e:e.slice(0,n)),s=n===-1?``:e.slice(n+1);if(o===null)continue;if(o===`q`){i=Ln(s)??``;continue}if(o===`sort`){a=Rn(Ln(s)??``)??a;continue}if(!(jn.includes(o)||o===`category`||o.startsWith(Mn)&&o.length>4))continue;let c=o,l=t?.get(c);if(!t||l)for(let e of s.split(`,`)){let t=Ln(e);t===null||t===``||l&&!l.has(t)||(r[c]??=[]).push(t)}}return Bn({q:i,facets:r,sort:a})}function Bn(e){let t={};for(let[n,r]of kn(e.facets))t[n]=[...new Set(r)].sort(Fn);return{q:e.q,facets:t,sort:e.sort}}function Vn(e){return e.column===H.column&&e.direction===H.direction}function Hn(e){let t=Bn(e),n=[],r=t.q.trim();r!==``&&n.push(`q=${encodeURIComponent(r)}`);for(let[e,r]of kn(t.facets))n.push(`${encodeURIComponent(e)}=${r.map(encodeURIComponent).join(`,`)}`);return Vn(t.sort)||n.push(`sort=${t.sort.column}:${t.sort.direction}`),n.join(`&`)}function Un(e){return(e.q.trim()===``?0:1)+kn(e.facets).reduce((e,[,t])=>e+t.length,0)}function Wn(e,t,n,r){let i=e.facets[t]??[],a=r?[...i,n]:i.filter(e=>e!==n);return{...e,facets:{...e.facets,[t]:a}}}function Gn(e){return{...An,sort:e.sort}}var Kn={dimensionTagPrefixes:new Set};function qn(e){return{dimensionTagPrefixes:new Set(e.dimensions.filter(e=>e.source===`tag`).map(e=>e.key))}}function Jn(e,t){return t.dimensionTagPrefixes.size===0?[...e]:e.filter(e=>{let n=Dn(e);return n===null||!t.dimensionTagPrefixes.has(n.prefix)})}function Yn(e){return e.normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase()}function Xn(e){return Yn(e).split(/\s+/).filter(e=>e!==``)}function Zn(e){let t=new Set;for(let n of e.attempts)if(Zt(e,n))for(let e of n.errors)t.add(e.category??`Uncategorized`);return[...t]}var Qn=new WeakMap;function $n(e){let t=Qn.get(e);return t||(t={haystack:Yn([[...e.suitePath,e.title].join(` › `),e.file,e.project].join(`
|
|
9
|
+
`)),categories:Zn(e)},Qn.set(e,t)),t}function er(e){return $n(e).categories}function tr(e){let t=er(e),n=e.category!==null&&t.includes(e.category)?e.category:t[0]??null;return{primary:n,others:t.filter(e=>e!==n)}}function nr(e,t,n=Kn){switch(t){case`status`:return[e.outcome];case`project`:return[e.project];case`tag`:return Jn(e.tags,n);case`category`:return er(e);default:return e.dimensions[Pn(t)??``]??[]}}function rr(e,t){if(t.length===0)return!0;let{haystack:n}=$n(e);return t.every(e=>n.includes(e))}function ir(e,t,n,r){if(n.length===0)return!0;let i=nr(e,t,r);return n.some(e=>i.includes(e))}function ar(e,t,n=Kn){let r=Xn(t.q),i=kn(t.facets);return e.filter(e=>rr(e,r)&&i.every(([t,r])=>ir(e,t,r,n)))}function or(e,t,n,r=Kn){let i=new Map;for(let[e,t]of n)i.set(e,new Map([...t].map(e=>[e,0])));let a=Xn(t.q),o=kn(t.facets),s=(e,t)=>{let n=i.get(t);if(n)for(let i of new Set(nr(e,t,r))){let e=n.get(i);e!==void 0&&n.set(i,e+1)}};for(let t of e){if(!rr(t,a))continue;let e=null,i=0;for(let[n,a]of o)if(!ir(t,n,a,r)&&(i+=1,e=n,i>1))break;if(!(i>1)){if(e!==null)s(t,e);else for(let e of n.keys())s(t,e)}}return i}function sr(e){let t=qn(e),n=n=>new Set(e.tests.flatMap(e=>nr(e,n,t))),r=(e,t)=>new Set([...e.filter(e=>t.has(e)),...[...t].filter(t=>!e.includes(t)).sort((e,t)=>e.localeCompare(t))]),i=new Map,a=(e,t)=>{t.size>0&&i.set(e,t)};a(`status`,r([`failed`,`flaky`,...Yt.filter(e=>e!==`failed`&&e!==`flaky`)],n(`status`))),a(`category`,r(e.categories.map(e=>e.name),n(`category`)));let o=n(`project`);o.delete(``),a(`project`,r(e.projects.map(e=>e.name),o)),a(`tag`,r([],n(`tag`)));for(let t of e.dimensions){let e=Nn(t.name);a(e,r(t.values??[],n(e)))}return i}var cr={failed:0,flaky:1,passed:2,skipped:3},lr=new Intl.Collator(void 0,{numeric:!0,sensitivity:`base`});function ur(e){return[...e.suitePath,e.title].join(` › `)}function dr(e){return e===`duration`||e===`attempts`?`desc`:`asc`}function fr(e,t){return e.column===t?{column:t,direction:e.direction===`asc`?`desc`:`asc`}:{column:t,direction:dr(t)}}var pr={title:ur,project:e=>e.project,file:e=>`${e.file}:${e.line}`,category:e=>tr(e).primary};function mr(e,t){let n=[...new Set(e.map(t).filter(e=>e!==null))].sort(lr.compare),r=new Map(n.map((e,t)=>[e,t]));return new Map(e.map(e=>{let n=t(e);return[e,n===null?null:r.get(n)??null]}))}function hr(e,t=[]){let n={title:mr(e,pr.title),project:mr(e,pr.project),file:mr(e,pr.file),category:mr(e,pr.category)},r=(e,t)=>n[e].get(t)??0,i=[...e].sort((e,t)=>r(`title`,e)-r(`title`,t)||r(`project`,e)-r(`project`,t)||e.repeatEachIndex-t.repeatEachIndex),a=new Map(t.map((e,t)=>[e,t]));for(let t of e)a.has(t.project)||a.set(t.project,a.size);let o=[...e].sort((e,t)=>(a.get(e.project)??0)-(a.get(t.project)??0)||lr.compare(e.file,t.file)||e.line-t.line||e.column-t.column||r(`title`,e)-r(`title`,t)||e.repeatEachIndex-t.repeatEachIndex);return{text:n,order:new Map(i.map((e,t)=>[e,t])),declaration:new Map(o.map((e,t)=>[e,t]))}}function gr(e,t,n){switch(t){case`declaration`:return n.declaration.get(e)??0;case`status`:return cr[e.outcome];case`duration`:return e.durationMs;case`attempts`:return e.attempts.length;default:return n.text[t].get(e)??null}}function _r(e,t,n){return e===null||t===null?e===t?0:e===null?1:-1:n*(e-t)}function vr(e,t,n=hr(e)){let r=t.direction===`asc`?1:-1,i=t.column===`status`||t.column===`declaration`?n.declaration:n.order;return e.map(e=>({test:e,key:gr(e,t.column,n),order:i.get(e)??0})).sort((e,t)=>_r(e.key,t.key,r)||e.order-t.order).map(({test:e})=>e)}var yr=/^(0|[1-9]\d{0,5})$/;function br(e){let t=null,n=!1;for(let r of e.split(`&`)){let[e,i=``]=r.split(`=`);e===`attempt`&&yr.test(i)&&(t=Number(i)),e===`steps`&&i===`all`&&(n=!0)}return{attempt:t,allSteps:n}}function xr(e){let t=[];return e.attempt!==null&&t.push(`attempt=${e.attempt}`),e.allSteps&&t.push(`steps=all`),t.join(`&`)}function Sr(...e){return e.filter(e=>e!==``).join(`&`)}var Cr=L(new Map),wr=L(Kn);function Tr(e){Cr.value=sr(e),wr.value=qn(e),Wt((e,t)=>Sr(Hn(zn(e,Cr.value)),Er(e,t)))}function Er(e,t){return t.page===`test`?xr(br(e)):``}var Dr=nt(()=>zn(B.value.search,Cr.value));function Or(e,t=B.value.route){return z({route:t,search:Hn(e)})}function kr(e,t=`push`,n=B.value.route){let r=B.value,i=z({route:n,search:``})===z({route:r.route,search:``})?Er(r.search,n):``;Jt({route:n,search:Sr(Hn(e),i)},t)}function Ar(e,t=`replace`){let{route:n,search:r}=B.value;Jt({route:n,search:Sr(Hn(zn(r,Cr.value)),e)},t)}function jr(e){return e.replace(/\\/g,`/`)}function Mr(e){let t=null;for(let n of e){let e=jr(n).split(`/`).slice(0,-1);if(t===null){t=e;continue}let r=0;for(;r<t.length&&r<e.length&&t[r]===e[r];)r+=1;if(t.length=r,r===0)break}return t&&t.length>0?`${t.join(`/`)}/`:``}function Nr(e,t){let n=jr(e);return t!==``&&n.startsWith(t)?n.slice(t.length):n}var Pr=4;function Fr(e){let t=/(?:\.[^./]{1,6}){1,2}$/.exec(e.slice(1))?.[0]??``,n=e.slice(0,e.length-t.length),r=n.length>12?Pr:0;return[n.slice(0,n.length-r),`${n.slice(n.length-r)}${t}`]}var Ir=[{name:`blue`,reference:`#466cc8`,light:{text:`#385db7`,bg:`#eaf0fe`,border:`#5981df`},dark:{text:`#9ebdff`,bg:`#18233c`,border:`#577cd3`}},{name:`cyan`,reference:`#0a7da1`,light:{text:`#0a708f`,bg:`#e0f4fd`,border:`#2b8fb4`},dark:{text:`#60cdf5`,bg:`#002837`,border:`#268cb1`}},{name:`teal`,reference:`#04837c`,light:{text:`#09726c`,bg:`#dbf7f4`,border:`#29958e`},dark:{text:`#6ed2c9`,bg:`#002b28`,border:`#25928b`}},{name:`violet`,reference:`#8656b7`,light:{text:`#7747a7`,bg:`#f4ecfe`,border:`#9e6ed2`},dark:{text:`#cfaafc`,bg:`#2a1d37`,border:`#9468c3`}},{name:`magenta`,reference:`#ad4681`,light:{text:`#9d3772`,bg:`#feeaf3`,border:`#cc629d`},dark:{text:`#f79dcc`,bg:`#351928`,border:`#bb598f`}},{name:`orange`,reference:`#ab5803`,light:{text:`#954d09`,bg:`#feece1`,border:`#c6702b`},dark:{text:`#f9a970`,bg:`#361d0a`,border:`#bc671f`}},{name:`brown`,reference:`#745f43`,light:{text:`#3c2d18`,bg:`#f5e9d9`,border:`#60503a`},dark:{text:`#b7a182`,bg:`#302412`,border:`#ae9779`}},{name:`gold`,reference:`#b9a542`,light:{text:`#736308`,bg:`#f5f1da`,border:`#9a861a`},dark:{text:`#d2be5d`,bg:`#2b2403`,border:`#94800e`}}],Lr={name:`neutral`,reference:`#6b6b6b`,light:{text:`#636363`,bg:`#f0f0f0`,border:`#868686`},dark:{text:`#bebebe`,bg:`#242424`,border:`#808080`}};Ir.map(e=>e.name);function Rr(e){let t=e.toLowerCase();return[...Ir,Lr].find(e=>e.reference===t)??null}var zr={light:[`#f7f5f0`,`#ffffff`,`#eeeae2`],dark:[`#080808`,`#0d0d0d`,`#161616`]},Br=4.5,Vr=/^#[0-9a-fA-F]{6}$/;function Hr(e){return Vr.test(e)}function Ur(e){if(!Hr(e))throw TypeError(`not a #rrggbb color: ${e}`);let t=Number.parseInt(e.slice(1),16);return[t>>16&255,t>>8&255,t&255]}function Wr([e,t,n]){return`#${[e,t,n].map(e=>Math.round(Math.min(255,Math.max(0,e))).toString(16).padStart(2,`0`)).join(``)}`}function Gr(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function Kr(e){return(e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055)*255}function qr(e){let[t,n,r]=Ur(e).map(Gr);return .2126*t+.7152*n+.0722*r}function Jr(e,t){let[n,r]=[qr(e),qr(t)].sort((e,t)=>t-e);return(n+.05)/(r+.05)}function Yr(e){let[t,n,r]=Ur(e).map(Gr),i=Math.cbrt(.4122214708*t+.5363325363*n+.0514459929*r),a=Math.cbrt(.2119034982*t+.6806995451*n+.1073969566*r),o=Math.cbrt(.0883024619*t+.2817188376*n+.6299787005*r),s=.2104542553*i+.793617785*a-.0040720468*o,c=1.9779984951*i-2.428592205*a+.4505937099*o,l=.0259040371*i+.7827717662*a-.808675766*o,u=Math.atan2(l,c)*180/Math.PI;return{l:s,c:Math.hypot(c,l),h:u<0?u+360:u}}function Xr({l:e,c:t,h:n}){let r=t*Math.cos(n*Math.PI/180),i=t*Math.sin(n*Math.PI/180),a=(e+.3963377774*r+.2158037573*i)**3,o=(e-.1055613458*r-.0638541728*i)**3,s=(e-.0894841775*r-1.291485548*i)**3;return[4.0767416621*a-3.3077115913*o+.2309699292*s,-1.2684380046*a+2.6097574011*o-.3413193965*s,-.0041960863*a-.7034186147*o+1.707614701*s]}function Zr(e){let t=e.c;for(;;){let n=Xr({...e,c:t});if(n.every(e=>e>=-1e-4&&e<=1.0001)||t<=0)return Wr(n.map(e=>Kr(Math.min(1,Math.max(0,e)))));t=Math.max(0,t-.005)}}function Qr(e,t,n,r){let i=t<n?.01:-.01;for(let a=t;i>0?a<=n:a>=n;a+=i){let t=Zr({...e,l:a});if(r(t))return t}return Zr({...e,l:n})}function $r(e,t){let n=Yr(e),r=n.c<.02?0:n.c,i=zr[t];if(t===`light`){let e=Zr({...n,l:.955,c:Math.min(r,.03)});return{text:Qr({...n,c:Math.min(r,.16)},.5,0,t=>Jr(t,e)>=Br),bg:e,border:Qr({...n,c:Math.min(r,.18)},.66,0,t=>[e,...i].every(e=>Jr(t,e)>=3))}}let a=Zr({...n,l:.26,c:Math.min(r,.05)});return{text:Qr({...n,c:Math.min(r,.12)},.8,1,e=>Jr(e,a)>=Br),bg:a,border:Qr({...n,c:Math.min(r,.14)},.6,1,e=>[a,...i].every(t=>Jr(e,t)>=3))}}var ei=new Map;function ti(e){let t=e&&Hr(e)?e.toLowerCase():Lr.reference,n=ei.get(t);if(!n){let e=Rr(t);n=e?{light:e.light,dark:e.dark}:{light:$r(t,`light`),dark:$r(t,`dark`)},ei.set(t,n)}return n}function ni(e){let{light:t,dark:n}=ti(e);return{"--cat-text-light":t.text,"--cat-bg-light":t.bg,"--cat-border-light":t.border,"--cat-text-dark":n.text,"--cat-bg-dark":n.bg,"--cat-border-dark":n.border}}function ri(e){return new Map(e.map(e=>[e.name,e.color]))}function U(e){if(e<1e3)return`${Math.round(e)} ms`;if(e<6e4)return`${(e/1e3).toFixed(1)} s`;let t=Math.round(e/1e3);if(t<3600)return`${Math.floor(t/60)} min ${String(t%60).padStart(2,`0`)} s`;let n=Math.round(t/60);return`${Math.floor(n/60)} h ${String(n%60).padStart(2,`0`)} min`}function W(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}var ii=`\0`,ai={project:`p`,folder:`d`,file:`f`,suite:`s`};function oi(){return{total:0,passed:0,failed:0,flaky:0,skipped:0}}function si(e,t){return`t${ii}${e}${ii}${t}`}function ci(e){return`p${ii}${e}`}function li(e,t,n,r){let i={kind:e,key:t,labels:[n],children:[],counts:oi(),line:1/0};return r!==void 0&&(i.path=r),i}function ui(e,t){return e.kind===`folder`==(t.kind===`folder`)?fi(e).localeCompare(fi(t)):e.kind===`folder`?-1:1}function di(e,t){return e.line===t.line?e.kind===`test`&&t.kind===`test`?e.column-t.column||e.repeatEachIndex-t.repeatEachIndex:e.kind===t.kind?fi(e).localeCompare(fi(t)):e.kind===`test`?1:-1:e.line-t.line}function fi(e){return e.kind===`test`?e.title:e.labels.join(` › `)}function pi(e){for(let t of e.children){if(t.kind===`test`)e.counts.total+=1,e.counts[t.outcome]+=1;else{pi(t);for(let n of[`total`,`passed`,`failed`,`flaky`,`skipped`])e.counts[n]+=t.counts[n]}e.line=Math.min(e.line,t.line)}e.kind===`project`||e.kind===`folder`?e.children.sort(ui):e.children.sort(di)}function mi(e){let t=e;for(;;){let e=t.children.length===1?t.children[0]:void 0;if(t.kind===`folder`&&e?.kind===`folder`)t={...e,key:t.key,labels:[`${t.labels.join(`/`)}/${e.labels.join(`/`)}`]};else{if(t.kind===`project`||t.kind===`folder`||e?.kind!==`suite`)break;t={...t,labels:[...t.labels,...e.labels],children:e.children}}}return{...t,children:t.children.map(e=>e.kind===`test`?e:mi(e))}}function hi(e,t={}){let n=t.prefix??Mr(e.tests.map(e=>e.file)),r=new Map;for(let t of e.projects)r.set(t.name,li(`project`,ci(t.name),t.name||`(unnamed project)`));let i=new Map;for(let t of e.tests){let e=r.get(t.project);e||(e=li(`project`,ci(t.project),t.project||`(unnamed project)`),r.set(t.project,e));let a=Nr(t.file,n).split(`/`),o=a.pop()??t.file,s=[...a.map((e,t)=>[`folder`,e,`${n}${a.slice(0,t+1).join(`/`)}`]),[`file`,o,jr(t.file)],...t.suitePath.map(e=>[`suite`,e])];for(let[t,n,r]of s){let a=`${e.key}${ii}${ai[t]}${ii}${n}`,o=i.get(a);o||(o=li(t,a,n,r),i.set(a,o),e.children.push(o)),e=o}e.children.push(gi(t))}let a=[...r.values()].filter(e=>e.children.length>0);for(let e of a)pi(e);return a.map(mi)}function gi(e){return{kind:`test`,key:si(e.id,e.repeatEachIndex),testId:e.id,repeatEachIndex:e.repeatEachIndex,title:e.title,outcome:e.outcome,line:e.line,column:e.column}}function _i(e,t){let n=[],r=(e,i,a)=>{e.forEach((o,s)=>{n.push({node:o,level:i,parentKey:a,position:s+1,siblings:e.length}),o.kind!==`test`&&t.has(o.key)&&r(o.children,i+1,o.key)})};return r(e,1,null),n}function vi(e,t){for(let n of e){if(n.key===t)return[];if(n.kind===`test`)continue;let e=vi(n.children,t);if(e)return[n.key,...e]}return null}function yi(e){return e.flatMap(e=>e.kind===`test`?[]:[e.key,...yi(e.children)])}var bi=/^[\w@%+=:,./-]+$/;function xi(e){return bi.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function Si(e,t){return e<t?-1:+(e>t)}function Ci(e){let t=new Map;for(let n of e){let e=t.get(n.project);e||(e=new Map,t.set(n.project,e)),e.set(`${n.file}:${n.line}`,n)}return new Map([...t].map(([e,t])=>[e,[...t.values()].sort((e,t)=>Si(e.file,t.file)||e.line-t.line).map(e=>`${e.file}:${e.line}`)]))}function wi(e,t){let n=t.filter(e=>e!==``).map(e=>`--project=${xi(e)}`);return[`npx playwright test`,...e.map(xi),...n].join(` `)}function Ti(e){let t=new Map;for(let[n,r]of Ci(e)){let e=n===``?`\0unnamed`:r.join(`\0`),i=t.get(e);i?i.projects.push(n):t.set(e,{locations:r,projects:[n]})}return[...t.values()].map(({locations:e,projects:t})=>wi(e,t)).join(` && `)}function Ei(e){return e.filter(e=>e.outcome===`failed`)}function Di(e,t){return Ei(e).filter(e=>e.file===t)}function Oi(e,t){let n=Di(e,t.file);if(!n.some(e=>e.line!==t.line))return null;let r=[...Ci(n)].map(([e,t])=>({project:e||`(unnamed project)`,count:t.length})),i=e=>e===1?`failed test`:`failed tests`,[a]=r;return r.length===1&&a?{tests:n,label:`${a.count} ${i(a.count)} in this file`}:a&&r.every(({count:e})=>e===a.count)?{tests:n,label:`${a.count} ${i(a.count)} in this file, in ${r.map(({project:e})=>e).join(`, `)}`}:{tests:n,label:`failed tests in this file: ${r.map(({project:e,count:t})=>`${t} in ${e}`).join(`, `)}`}}var ki=`For a POSIX shell (bash, zsh), run from the Playwright root directory: paths are relative to it. A file:line argument targets the line where the test is declared, and reruns every test declared on that line. The command is only valid while the file has not changed since the run.`,Ai=0;Array.isArray;function G(e,n,r,i,a,o){n||={};var s,c,l=n;if(`ref`in l)for(c in l={},n)c==`ref`?s=n[c]:l[c]=n[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Ai,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return t.vnode&&t.vnode(u),u}function K({name:e,color:t}){return G(`span`,{class:`category-badge`,style:ni(t),title:`Error category: ${e}`,children:e})}function q({children:e,class:t}){return G(`svg`,{class:`icon ${t??``}`,viewBox:`0 0 16 16`,width:`16`,height:`16`,"aria-hidden":`true`,focusable:`false`,children:e})}var ji={passed:`Passed`,failed:`Failed`,flaky:`Flaky`,skipped:`Skipped`};function J(e){return ji[e]}function Y({outcome:e,labelled:t=!1,decorative:n=!1}){let r={passed:G(`path`,{d:`M4.5 8.2l2.3 2.3 4.7-4.9`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`}),failed:G(`path`,{d:`M5.5 5.5l5 5m0-5l-5 5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`}),flaky:G(`path`,{d:`M10.9 5.6A3.6 3.6 0 0 0 4.6 7M5.1 10.4A3.6 3.6 0 0 0 11.4 9M10.9 3.6v2h-2M5.1 12.4v-2h2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`}),skipped:G(`path`,{d:`M5 8h6`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`})}[e];return G(`span`,{class:`outcome-icon outcome-${e}`,title:t||n?void 0:ji[e],"aria-hidden":n?`true`:void 0,children:[G(q,{children:[G(`circle`,{cx:`8`,cy:`8`,r:`7`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`}),r]}),!n&&G(`span`,{class:t?`outcome-text`:`visually-hidden`,children:ji[e]})]})}function X(e){return G(q,{...e,children:G(`path`,{d:`M6 4l4 4-4 4`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`})})}function Mi(e){return G(q,{...e,children:[G(`rect`,{x:`1.5`,y:`2.5`,width:`13`,height:`11`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),G(`path`,{d:`M6 2.5v11`,stroke:`currentColor`,"stroke-width":`1.3`})]})}function Ni(e){return G(q,{...e,children:[G(`rect`,{x:`1.5`,y:`2.5`,width:`13`,height:`9`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),G(`path`,{d:`M5.5 14h5M8 11.5V14`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})]})}function Pi(e){return G(q,{...e,children:[G(`circle`,{cx:`8`,cy:`8`,r:`3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),G(`path`,{d:`M8 1v1.6M8 13.4V15M1 8h1.6M13.4 8H15M3 3l1.1 1.1M11.9 11.9L13 13M3 13l1.1-1.1M11.9 4.1L13 3`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})]})}function Fi(e){return G(q,{...e,children:G(`path`,{d:`M13.5 9.6A5.8 5.8 0 0 1 6.4 2.5a5.8 5.8 0 1 0 7.1 7.1z`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`})})}function Ii(e){return G(q,{...e,children:G(`path`,{d:`M2 2.5h5v5H2zM9 2.5h5v3H9zM9 7.5h5v6H9zM2 9.5h5v4H2z`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`})})}function Li(e){return G(q,{...e,children:[G(`path`,{d:`M8 1.8l6.5 11.4H1.5z`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`}),G(`path`,{d:`M8 6.2v3.3`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`}),G(`circle`,{cx:`8`,cy:`11.4`,r:`.9`,fill:`currentColor`})]})}function Ri(e){return G(q,{...e,children:[G(`circle`,{cx:`8`,cy:`8`,r:`6.3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),G(`path`,{d:`M8 4.6v4`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`}),G(`circle`,{cx:`8`,cy:`11.1`,r:`.9`,fill:`currentColor`})]})}function zi(e){return G(q,{...e,children:G(`path`,{d:`M1.5 8.5h3l1.5-4 2.5 7 1.8-4.5 1 1.5h3.2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`,"stroke-linejoin":`round`})})}function Bi(e){return G(q,{...e,children:[G(`path`,{d:`M6 4h8M6 8h8M6 12h8`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`}),G(`circle`,{cx:`2.8`,cy:`4`,r:`1`,fill:`currentColor`}),G(`circle`,{cx:`2.8`,cy:`8`,r:`1`,fill:`currentColor`}),G(`circle`,{cx:`2.8`,cy:`12`,r:`1`,fill:`currentColor`})]})}function Vi(e){return G(q,{...e,children:[G(`circle`,{cx:`7`,cy:`7`,r:`4.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`}),G(`path`,{d:`M10.4 10.4L14 14`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`})]})}function Hi(e){return G(q,{...e,children:G(`path`,{d:`M4.5 4.5l7 7m0-7l-7 7`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})})}function Ui({direction:e,...t}){return G(q,{...t,children:[e!==`desc`&&G(`path`,{d:`M5 6.5L8 3.5l3 3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`}),e!==`asc`&&G(`path`,{d:`M5 9.5l3 3 3-3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`})]})}function Wi(e){return G(q,{...e,children:[G(`rect`,{x:`5.5`,y:`5.5`,width:`8`,height:`9`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),G(`path`,{d:`M10.5 3.5v-.5A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v7A1.5 1.5 0 0 0 4 11.5h.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})]})}function Gi(e){return G(q,{...e,children:G(`path`,{d:`M3.5 8.5l3 3 6-6.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`})})}function Ki(e){return G(q,{...e,children:[G(`rect`,{x:`1`,y:`3.5`,width:`14`,height:`9`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),G(`path`,{d:`M4 6.5h1M7.5 6.5h1M11 6.5h1M4 9.5h8`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})]})}var qi=2e3;function Ji({label:e,text:t,help:n,children:r}){let[i,a]=A(!1),o=M(void 0),s=Me();return je(()=>()=>clearTimeout(o.current),[]),G(S,{children:[G(`button`,{type:`button`,class:`button copy-button`,title:n,"aria-describedby":n?s:void 0,onClick:async()=>{await wt(e,t())&&(a(!0),clearTimeout(o.current),o.current=setTimeout(()=>a(!1),qi))},children:[G(i?Gi:Wi,{}),G(`span`,{children:r}),i&&G(`span`,{class:`copy-done`,children:` · Copied`})]}),n&&G(`span`,{id:s,hidden:!0,children:n})]})}function Yi({group:e}){return G(`span`,{class:`group-split`,children:[`failed`,`flaky`].filter(t=>e[t]>0).map(t=>G(`span`,{class:`group-split-part split-${t}`,children:[G(Y,{outcome:t,decorative:!0}),e[t],` `,t]},t))})}var Xi=`https://github.com/qartisan/playwright-loupe/blob/main/docs/config.md#dimensions`;function Zi(e){return V({page:`test`,id:e.id,repeatEachIndex:e.repeatEachIndex})}function Qi(e,t){let n=Dr.value;return Or({...n,facets:{...n.facets,category:t===void 0?[]:[t]}},{page:`group`,signature:e})}function $i(e,t){return Or({...An,facets:{[e]:[t]}},{page:`tests`})}function ea(e){return e||`(unnamed project)`}function ta({rate:e}){return G(`span`,{class:`pass-rate`,title:fn,children:[G(`strong`,{children:pn(e)}),` pass rate`,G(`span`,{class:`visually-hidden`,children:` (skipped tests excluded)`})]})}function Z({id:e,title:t,note:n,class:r,children:i}){return G(`section`,{class:`widget ${r??``}`,"aria-labelledby":e,children:[G(`h2`,{id:e,children:t}),n&&G(`p`,{class:`widget-note`,children:n}),i]})}function na({report:e,children:t}){let n=ln(e),{stats:r}=e.run,i=un(r),a=dn(r),o=i.map(({outcome:e,count:t})=>`${t} ${J(e).toLowerCase()}`).join(`, `);return G(`section`,{class:`widget widget-verdict`,"aria-labelledby":`w-verdict`,children:[G(`h2`,{id:`w-verdict`,class:`visually-hidden`,children:`Verdict`}),G(`div`,{class:`verdict`,children:[G(`p`,{class:`verdict-outcome outcome-${n}`,"data-verdict":n,children:[G(Y,{outcome:n,decorative:!0}),G(`span`,{children:J(n)})]}),G(`p`,{class:`verdict-meta`,children:[a!==null&&G(S,{children:[G(ta,{rate:a}),` ·`,` `]}),W(r.total,`test`),` in `,G(`strong`,{children:U(e.run.durationMs)})]})]}),t,i.length>0&&G(S,{children:[G(`div`,{class:`outcome-bar`,role:`img`,"aria-label":o,children:i.map(({outcome:e,count:t,share:n})=>G(`span`,{class:`outcome-bar-part bar-${e}`,style:{flexGrow:n},title:`${t} ${J(e).toLowerCase()}`},e))}),G(`ul`,{class:`outcome-legend`,"aria-hidden":`true`,children:i.map(({outcome:e,count:t})=>G(`li`,{children:[G(Y,{outcome:e,decorative:!0}),t,` `,J(e).toLowerCase()]},e))})]})]})}function ra({tests:e,action:t=`Copy rerun command`}){let n=Ei(e);return n.length===0?null:G(`div`,{class:`rerun-failed`,children:[G(Ji,{label:`Rerun command`,help:ki,text:()=>Ti(n),children:[t,` · `,W(n.length,`failed test`)]}),n.length>100&&G(`p`,{class:`rerun-note`,children:[`The command lists `,W(n.length,`test`),`: it is long, and some terminals may cut it.`]})]})}function ia({errors:e}){return G(Z,{id:`w-run-errors`,class:`widget-run-errors`,title:G(S,{children:[G(Li,{}),W(e.length,`error`),` outside tests`]}),note:`A file that failed to load, a global setup or teardown, a worker teardown: Playwright may have run fewer tests.`,children:[G(`ul`,{class:`widget-list`,children:e.slice(0,3).map((e,t)=>G(`li`,{children:G(`code`,{children:an(e.message)})},t))}),G(`p`,{class:`widget-more`,children:G(`a`,{href:V({page:`errors`}),children:`See the errors`})})]})}function aa({error:e,color:t}){let n=e.location?`${e.location.file}:${e.location.line}:${e.location.column}`:null;return G(`li`,{class:`run-error`,children:[G(`div`,{class:`run-error-meta`,children:[e.category&&G(K,{name:e.category,color:t}),e.project!==null&&G(`span`,{children:[`Project `,e.project||`(unnamed)`]}),n&&G(`code`,{children:n})]}),G(`pre`,{class:`message error-message`,children:e.message}),e.snippet&&G(`pre`,{class:`code-snippet`,children:e.snippet}),e.stack&&e.stack!==e.message&&G(`details`,{children:[G(`summary`,{children:`Stack trace`}),G(`pre`,{class:`stack`,children:e.stack})]})]})}function oa({group:e,colors:t,inCategory:n}){let{headline:r,firstTest:i,others:a}=on(e),o=sn(e);return G(`a`,{class:`group-row`,href:Qi(e.signature,n),children:[G(`span`,{class:`group-row-head`,children:[n===void 0&&G(K,{name:e.category,color:t.get(e.category)}),G(`span`,{class:`group-row-counts`,children:[G(Yi,{group:e}),o&&G(`span`,{class:`group-attempts`,children:o})]})]}),i&&G(`span`,{class:`group-test`,children:[i.title,a>0&&G(`span`,{class:`muted`,children:[` +`,W(a,`other`)]})]}),G(`code`,{class:`group-message`,children:r})]})}function sa({groups:e,colors:t,inCategory:n}){return G(`ol`,{class:`widget-list group-list`,children:e.map(e=>G(`li`,{children:G(oa,{group:e,colors:t,inCategory:n})},e.signature))})}function ca({categories:e,colors:t}){let n=Math.max(...e.map(e=>e.tests),1);return G(`ul`,{class:`widget-list category-bars`,children:e.map(e=>G(`li`,{children:G(`a`,{class:`category-bar-row`,href:$i(`category`,e.name),children:[G(K,{name:e.name,color:t.get(e.name)}),G(`span`,{class:`category-bar-track`,"aria-hidden":`true`,children:G(`span`,{class:`category-bar`,style:{...ni(t.get(e.name)),width:`${e.tests/n*100}%`}})}),G(`span`,{class:`group-count`,children:W(e.tests,`test`)})]})},e.name))})}function la({categories:e,colors:t,open:n}){return G(`ul`,{class:`widget-list category-list`,children:e.map(e=>G(`li`,{"data-category":e.name,children:G(`details`,{open:e.name===n,children:[G(`summary`,{children:[G(X,{class:`chevron`}),G(K,{name:e.name,color:t.get(e.name)}),G(`span`,{class:`muted`,children:W(e.groups.length,`error group`)}),G(`span`,{class:`group-count`,children:W(e.tests,`test`)})]}),G(sa,{groups:e.groups,colors:t,inCategory:e.name})]})},e.name))})}function ua({projects:e}){return G(`ul`,{class:`project-cards`,children:e.map(({project:e,passRate:t,durationMs:n})=>G(`li`,{children:G(`button`,{type:`button`,class:`project-card`,"aria-controls":`sidebar`,title:`Show this project in the sidebar`,onClick:()=>Mt(ci(e.name)),children:[G(`span`,{class:`project-name`,children:ea(e.name)}),G(`span`,{class:`counts`,children:[`passed`,`failed`,`flaky`,`skipped`].filter(t=>e.stats[t]>0).map(t=>G(`span`,{class:`count`,children:[G(Y,{outcome:t,decorative:!0}),e.stats[t],` `,G(`span`,{class:`visually-hidden`,children:J(t).toLowerCase()})]},t))}),G(`span`,{class:`project-meta`,children:[W(e.stats.total,`test`),t!==null&&G(S,{children:[` · `,G(ta,{rate:t})]}),` `,`· `,U(n),` test time`]})]})},e.name))})}function da({value:e}){return G(`td`,{class:e===0?`zero`:void 0,children:e})}var fa=[`passed`,`failed`,`flaky`,`skipped`];function pa(e){let t=fa.filter(t=>e[t]>0).map(t=>`${e[t]} ${t}`);return t.length>0?t.join(`, `):`no tests`}function ma(e){return[...e.unknown?[`unknown value`]:[],...e.caseVariants.length>0?[`likely duplicate of ${e.caseVariants.join(`, `)}`]:[]]}function ha({row:e}){return G(S,{children:[e.unknown&&G(`span`,{class:`hygiene-flag flag-unknown`,title:`Not among the values declared in the config`,children:[G(Li,{}),`unknown value`]}),e.caseVariants.length>0&&G(`span`,{class:`hygiene-flag flag-case`,title:`Differs from another value only by case. Tags are case-sensitive, so they are counted apart.`,children:[G(Li,{}),`likely duplicate of `,e.caseVariants.join(`, `)]})]})}function ga({name:e,values:t}){return G(`ul`,{class:`dimension-bars`,children:t.map(t=>G(`li`,{class:`dimension-bar-row`,"data-value":t.value,children:[G(`span`,{class:`dimension-value-cell`,children:[G(_a,{name:e,row:t}),G(ha,{row:t})]}),G(`span`,{class:`outcome-bar dimension-bar`,role:`img`,"aria-label":`${t.value}: ${pa(t)}`,title:pa(t),children:fa.filter(e=>t[e]>0).map(e=>G(`span`,{class:`outcome-bar-part bar-${e}`,style:{flexGrow:t[e]}},e))}),G(`span`,{class:`dimension-bar-counts`,"aria-hidden":`true`,children:[`failed`,`flaky`].filter(e=>t[e]>0).map(e=>G(`span`,{class:`count`,children:[G(Y,{outcome:e,decorative:!0}),t[e]]},e))}),G(`span`,{class:`dimension-total`,"aria-hidden":`true`,children:t.total})]},t.value))})}function _a({name:e,row:t}){return t.total===0?G(`span`,{class:`dimension-value`,children:t.value}):G(`a`,{class:`dimension-value`,href:$i(Nn(e),t.value),title:`Show the ${W(t.total,`test`)} with ${e} ${t.value}`,children:t.value})}var va={failed:`with failures`,flaky:`flaky`,passed:`all passed`,skipped:`skipped only`,none:`no tests`},Q=L(null);function ya(e,t){let n=Q.value;n?.key===e&&n.source===t&&(Q.value=null)}function ba(e){e.key===`Escape`&&Q.value&&(Q.value=null)}function xa({name:e,values:t}){return je(()=>(document.addEventListener(`keydown`,ba),()=>{document.removeEventListener(`keydown`,ba),Q.value?.key.startsWith(`${e}\u0000`)&&(Q.value=null)}),[e]),G(S,{children:[G(`p`,{class:`tile-summary`,children:bn(t)}),G(`ul`,{class:`dimension-tiles`,"aria-label":`${e} values`,children:yn(t).map(t=>{let n=_n(t),r=ma(t),i=[pa(t),...r].join(`; `),a=`${e}\u0000${t.value}`,o=Q.value?.key===a,s={class:`dimension-tile tile-${n}${o?` tooltip-open`:``}`,"data-value":t.value,"data-status":n,onPointerEnter:()=>Q.value={key:a,source:`hover`},onPointerLeave:()=>ya(a,`hover`),onFocus:()=>Q.value={key:a,source:`focus`},onBlur:()=>ya(a,`focus`)},c=G(S,{children:[n===`none`?G(`span`,{class:`tile-icon-none`,"aria-hidden":`true`}):G(Y,{outcome:n,decorative:!0}),G(`span`,{class:`tile-value`,children:t.value}),r.length>0&&G(Li,{class:`tile-flag`}),G(`span`,{class:`visually-hidden`,children:[`: `,va[n],`, `,i]}),G(`span`,{class:`tile-details`,"aria-hidden":`true`,hidden:!o,children:[G(`strong`,{children:t.value}),G(`span`,{children:va[n]}),G(`span`,{children:pa(t)}),r.map(e=>G(`span`,{class:`tile-note`,children:e},e))]})]});return G(`li`,{children:t.total>0?G(`a`,{...s,href:$i(Nn(e),t.value),children:c}):G(`span`,{...s,tabIndex:0,children:c})},t.value)})})]})}function Sa({distribution:e}){let{definition:t,values:n,without:r}=e,i=`w-dimension-${t.name}`,a=gn(e);return G(`section`,{class:`widget widget-dimension`,"aria-labelledby":i,"data-dimension":t.name,"data-representation":a,children:[G(`h2`,{id:i,children:t.name}),G(`p`,{class:`widget-note`,children:[`From `,t.source===`tag`?`tags @${t.key}:…`:`annotations of type "${t.key}"`,r>0&&` · ${W(r,`test`)} without a value`]}),G(a===`bars`?ga:xa,{name:t.name,values:n}),G(`details`,{class:`dimension-table`,children:[G(`summary`,{children:[G(X,{class:`chevron`}),`Table`]}),G(`table`,{class:`data-table`,children:[G(`thead`,{children:G(`tr`,{children:[G(`th`,{scope:`col`,children:`Value`}),fa.map(e=>G(`th`,{scope:`col`,children:G(Y,{outcome:e,labelled:!0})},e)),G(`th`,{scope:`col`,children:`Total`})]})}),G(`tbody`,{children:n.map(e=>G(`tr`,{children:[G(`th`,{scope:`row`,children:[G(_a,{name:t.name,row:e}),G(ha,{row:e})]}),fa.map(t=>G(da,{value:e[t]},t)),G(da,{value:e.total})]},e.value))})]})]}),t.values===null&&G(`p`,{class:`widget-hint`,children:[`No expected values are configured, so typos cannot be flagged as unknown. Declare them with `,G(`code`,{children:`values`}),` in`,` `,G(`a`,{href:Xi,target:`_blank`,rel:`noopener noreferrer`,children:`the dimension definition`}),`.`]})]})}function Ca({test:e,children:t,aside:n}){return G(`div`,{class:`test-line`,children:[G(Y,{outcome:e.outcome}),G(`span`,{class:`test-text`,children:[G(`a`,{href:Zi(e),children:e.title}),G(`span`,{class:`test-where`,children:[ea(e.project),` · `,e.file,e.repeatEachIndex>0&&` · repeat ${e.repeatEachIndex}`]}),t]}),n]})}function wa(e){return`${e.id}/${e.repeatEachIndex}`}function Ta({tests:e}){return G(Z,{id:`w-slowest`,class:`widget-slowest`,title:`Slowest tests`,note:`Total duration, retries included.`,children:G(`ol`,{class:`widget-list`,children:e.map(e=>G(`li`,{children:G(Ca,{test:e,aside:G(`span`,{class:`duration`,children:U(e.durationMs)}),children:e.attempts.length>1&&G(`span`,{class:`test-where`,children:W(e.attempts.length,`attempt`)})})},wa(e)))})})}function Ea({tests:e}){return G(Z,{id:`w-skipped`,class:`widget-skipped`,title:`Skipped tests`,children:G(`ul`,{class:`widget-list`,children:e.map(({test:e,kind:t,reason:n})=>G(`li`,{children:G(Ca,{test:e,children:G(`span`,{class:`test-where`,children:[t===`fixme`&&G(`span`,{class:`skip-kind`,children:`fixme`}),` `,n??G(`span`,{class:`muted`,children:`No reason given`})]})})},wa(e)))})})}function Da({tests:e,colors:t}){return G(Z,{id:`w-flaky`,class:`widget-flaky`,title:`Flaky tests`,note:`Failed, then passed on a retry: the error of the failing attempt.`,children:G(`ul`,{class:`widget-list`,children:e.map(({test:e,error:n})=>G(`li`,{children:G(Ca,{test:e,children:n&&G(`span`,{class:`flaky-error`,children:[n.category&&G(K,{name:n.category,color:t.get(n.category)}),G(`code`,{children:an(n.message)})]})})},wa(e)))})})}function Oa({report:e,groups:t,category:n}){let r=M(null);je(()=>{if(n===void 0)return;let e=[...r.current?.querySelectorAll(`[data-category]`)??[]].find(e=>e.dataset.category===n);e?.scrollIntoView({block:`start`}),e?.querySelector(`summary`)?.focus({preventScroll:!0})},[n]);let i=N(()=>$t(t),[t]),a=N(()=>cn(e,i),[e,i]),o=N(()=>ri(e.categories),[e]),{errors:s}=e.run;return G(`div`,{class:`page view view-errors`,ref:r,children:[G(`h1`,{children:`Errors`}),s.length===0&&t.length===0&&G(`p`,{class:`muted`,children:`No errors in this run.`}),s.length>0&&G(Z,{id:`w-run-errors`,class:`widget-run-error-list`,title:W(s.length,`run error`),note:`Reported outside any test: a file that failed to load, a global setup or teardown, a worker teardown. Playwright may have run fewer tests because of them.`,children:G(`ol`,{class:`run-errors`,children:s.map((e,t)=>G(aa,{error:e,color:e.category?o.get(e.category):void 0},t))})}),i.length>0&&G(Z,{id:`w-groups`,class:`widget-groups`,title:W(i.length,`error group`),note:`Errors grouped by normalized signature: most failed tests first, then most flaky tests.`,children:G(sa,{groups:i,colors:o})}),a.length>0&&G(Z,{id:`w-categories`,class:`widget-categories`,title:`Error categories`,note:`Failing tests per category; flaky tests count, and a test can be in several categories.`,children:G(la,{categories:a,colors:o,open:n},n)})]})}function ka({label:e,position:t,total:n,outside:r,previous:i,next:a,previousLabel:o,nextLabel:s,keys:c}){return G(`nav`,{class:`pager`,"aria-label":e,children:[G(`button`,{type:`button`,class:`button pager-button`,disabled:!i,"aria-keyshortcuts":c[0],onClick:i??void 0,children:[G(X,{class:`chevron-back`}),o]}),G(`span`,{class:`pager-position`,children:t===null?r:`${t} of ${n}`}),G(`button`,{type:`button`,class:`button pager-button`,disabled:!a,"aria-keyshortcuts":c[1],onClick:a??void 0,children:[s,G(X,{})]})]})}function Aa(e,t){let n=e.indexOf(t);return n===-1?{position:null,total:e.length,previous:null,next:null}:{position:n+1,total:e.length,previous:e[n-1]??null,next:e[n+1]??null}}function ja(e,t=[]){let n=$t(e);return t.length===0?n:n.filter(e=>t.includes(e.category))}function Ma(e,t,n){let r=n.length>0&&n.includes(t.category);return{...Aa(ja(e,r?n:[]),t),restricted:r}}var Na=[{keys:[`j`,`k`],action:`Next / previous test`,where:`Test detail`},{keys:[`[`,`]`],action:`Previous / next attempt`,where:`Test detail`},{keys:[`n`,`p`],action:`Next / previous error group`,where:`Error group page`},{keys:[`/`],action:`Focus the search`,where:`Everywhere`},{keys:[`Escape`],action:`Clear the search, close a dialog`,where:`Everywhere`},{keys:[`?`],action:`Show keyboard shortcuts`,where:`Everywhere`}];function Pa(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement?!0:e instanceof HTMLInputElement&&![`checkbox`,`radio`,`button`,`submit`,`reset`,`range`,`color`,`file`].includes(e.type):!1}function Fa(e){return e.defaultPrevented||e.ctrlKey||e.altKey||e.metaKey||e.isComposing||Pa(e.target)?!1:document.querySelector(`dialog[open]`)===null}function Ia(e){let t=M(e);t.current=e,j(()=>{let e=e=>{if(!Fa(e))return;let n=t.current[e.key];n&&(e.preventDefault(),n())};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[])}function La({message:e=`This page does not exist in this report.`}){return G(`div`,{class:`page`,children:[G(`h1`,{children:`Not found`}),G(`p`,{children:e}),G(`p`,{children:G(`a`,{href:V({page:`dashboard`}),children:`Back to the dashboard`})})]})}function Ra(e){return e===0?`first run`:`retry ${e}`}function za({report:e,groups:t,group:n}){let r=Dr.value.facets.category??[],i=n?Ma(t,n,r):null,a=e=>e?()=>qt({page:`group`,signature:e.signature}):null;if(Ia({n:a(i?.next),p:a(i?.previous)}),!n||!i)return G(La,{message:`No error group with this signature in this report.`});let o=ri(e.categories).get(n.category);return G(`div`,{class:`page group-page`,children:[G(ka,{label:i.restricted?`Error groups in ${r.join(`, `)}`:`Error groups`,position:i.position,total:i.total,outside:``,previous:a(i.previous),next:a(i.next),previousLabel:`Previous group`,nextLabel:`Next group`,keys:[`p`,`n`]}),G(`p`,{class:`breadcrumb`,children:i.restricted?`Error group · ${r.join(`, `)}`:`Error group`}),G(`h1`,{children:[W(n.tests.length,`test`),` failing with this error`]}),G(`dl`,{class:`group-meta`,children:[G(`div`,{children:[G(`dt`,{children:`Category`}),G(`dd`,{children:G(K,{name:n.category,color:o})})]}),G(`div`,{children:[G(`dt`,{children:`Tests`}),G(`dd`,{children:G(Yi,{group:n})})]}),G(`div`,{children:[G(`dt`,{children:`Signature`}),G(`dd`,{children:G(`code`,{children:n.signature})})]})]}),G(`h2`,{children:`Sample message`}),G(`pre`,{class:`message group-sample`,children:n.message}),G(`h2`,{children:`Affected tests`}),G(`table`,{class:`affected-tests`,children:[G(`thead`,{children:G(`tr`,{children:[G(`th`,{scope:`col`,children:`Test`}),G(`th`,{scope:`col`,children:`Project`}),G(`th`,{scope:`col`,children:`File`}),G(`th`,{scope:`col`,children:`Error in`})]})}),G(`tbody`,{children:n.tests.map(({test:e,attempts:t})=>G(`tr`,{children:[G(`td`,{children:G(`span`,{class:`test-cell`,children:[G(Y,{outcome:e.outcome}),G(`a`,{href:V({page:`test`,id:e.id,repeatEachIndex:e.repeatEachIndex}),children:[...e.suitePath,e.title].join(` › `)}),e.repeatEachIndex>0&&G(`span`,{class:`row-note`,children:[`repeat `,e.repeatEachIndex]})]})}),G(`td`,{children:e.project||`(unnamed project)`}),G(`td`,{children:G(`code`,{children:[e.file,`:`,e.line]})}),G(`td`,{children:[t.map(Ra).join(`, `),G(`span`,{class:`muted`,children:[` of `,W(e.attempts.length,`attempt`)]})]})]},`${e.id}/${e.repeatEachIndex}`))})]})]})}function Ba({report:e}){let t=N(()=>({dimensions:hn(e).filter(e=>e.values.length>0),slowest:Cn(e),skipped:Tn(e),flaky:Sn(e)}),[e]),n=N(()=>ri(e.categories),[e]),r=t.dimensions.length+t.slowest.length+t.skipped.length+t.flaky.length===0;return G(`div`,{class:`page view view-health`,children:[G(`h1`,{children:`Suite health`}),r&&G(`p`,{class:`muted`,children:`No dimension, slow, skipped or flaky test to show for this run.`}),t.dimensions.length>0&&G(`div`,{class:`widget-grid dimension-grid`,children:t.dimensions.map(e=>G(Sa,{distribution:e},e.definition.name))}),(t.slowest.length>0||t.skipped.length>0||t.flaky.length>0)&&G(`div`,{class:`widget-grid`,children:[t.slowest.length>0&&G(Ta,{tests:t.slowest}),t.flaky.length>0&&G(Da,{tests:t.flaky,colors:n}),t.skipped.length>0&&G(Ea,{tests:t.skipped})]})]})}function Va({report:e,groups:t,matched:n}){let r=N(()=>({categories:cn(e,t),projects:mn(e)}),[e,t]),i=N(()=>ri(e.categories),[e]);return G(`div`,{class:`page view view-overview`,children:[G(`h1`,{children:`Overview`}),G(na,{report:e,children:G(ra,{tests:n,action:`Rerun failed tests`})}),e.run.errors.length>0&&G(ia,{errors:e.run.errors}),r.categories.length>0&&G(Z,{id:`w-categories`,class:`widget-categories`,title:`Error categories`,note:G(S,{children:[`Failing tests per category. `,G(`a`,{href:V({page:`errors`}),children:[`All `,W(t.length,`error group`)]})]}),children:G(ca,{categories:r.categories,colors:i})}),r.projects.length>0&&G(Z,{id:`w-projects`,class:`widget-projects`,title:`Projects`,children:G(ua,{projects:r.projects})})]})}var Ha=/^((Expected|Received)(?: [a-z]+)*:)(\s+)(\S.*)$/,Ua=/^- Expected(?:\s+- \d+)?$/,Wa=/^\+ Received(?:\s+\+ \d+)?$/,Ga=/^[-+ ] /;function Ka(e){return[{text:e,tone:null}]}function qa(e){let t=Ha.exec(e);if(!t)return null;let[,n=``,r,i=``,a=``]=t;return[{text:`${n}${i}`,tone:null},{text:a,tone:r===`Expected`?`expected`:`received`}]}function Ja(e){return e.startsWith(`- `)?[{text:e,tone:`expected`}]:e.startsWith(`+ `)?[{text:e,tone:`received`}]:Ka(e)}function Ya(e){let t=e.split(`
|
|
10
|
+
`),n=[],r=0;for(;r<t.length;){let e=t[r],i=t[r+1];if(Ua.test(e)&&i!==void 0&&Wa.test(i)){for(n.push([{text:e,tone:`expected`}],[{text:i,tone:`received`}]),r+=2;r<t.length&&t[r]===``;)n.push(Ka(t[r++]));for(;r<t.length&&Ga.test(t[r]);)n.push(Ja(t[r++]))}else n.push(qa(e)??Ka(e)),r+=1}return n}var Xa=/^(>)(\s*\d+ \|.*)$/,Za=/^(\s*\|\s*)(\^+)(\s*)$/;function Qa(e){return e.split(`
|
|
11
|
+
`).map(e=>{let t=Xa.exec(e);if(t)return[{text:t[1],tone:`marker`},{text:t[2],tone:`strong`}];let n=Za.exec(e);return n?[{text:n[1],tone:null},{text:n[2],tone:`marker`},...n[3]?[{text:n[3],tone:null}]:[]]:Ka(e)})}function $a(e){let t=[],n=e,r=``;for(;;){let e=-1;for(let t=n.length-1;t>=0;t--)if(n[t]?.error){e=t;break}if(e===-1)return t;let i=`${r}${e}`;t.push(i),n=n[e].steps,r=`${i}.`}}function eo(e){return e.category===`test.step`||e.error!==null}function to(e,t){let n=new Set($a(e)),r=[...n].pop(),i=(e,a)=>e.flatMap((e,o)=>{let s=`${a}${o}`,c=i(e.steps,`${s}.`);return t==="default"&&!eo(e)&&c.length===0?[]:[{step:e,key:s,children:c,onFailingPath:n.has(s),failing:s===r}]});return i(e,``)}function no(e,t){let n=[],r=e;for(let e of t){let t=r[Number(e.split(`.`).pop())];if(!t)break;n.push(t),r=t.steps}return n}function ro(e,t=5){let n=$a(e);if(n.length===0)return null;let r=no(e,n),i=r.length>1?r[r.length-2].steps:e,a=Number(n[n.length-1].split(`.`).pop());return{path:r,preceding:i.slice(Math.max(0,a-t),a)}}function io({lines:e}){return G(S,{children:e.map((e,t)=>G(S,{children:[t>0&&`
|
|
12
|
+
`,e.map((e,t)=>e.tone?G(`span`,{class:`tone-${e.tone}`,children:e.text},t):e.text)]},t))})}function ao(e){return e?e.column===void 0?`${e.file}:${e.line}`:`${e.file}:${e.line}:${e.column}`:null}function oo({error:e,group:t,color:n}){let r=ao(e.location);return G(`article`,{class:`error-card`,children:[G(`div`,{class:`error-head`,children:[G(K,{name:e.category??`Uncategorized`,color:n}),r&&G(`code`,{class:`error-location`,children:r}),t&&G(`a`,{class:`error-group-link`,href:Qi(t.signature),title:`Every test failing with this error`,children:[`View error group `,G(`span`,{class:`muted`,children:[`(`,W(t.tests.length,`test`),`)`]})]})]}),G(`pre`,{class:`message error-message`,children:G(io,{lines:Ya(e.message)})}),e.snippet&&G(`pre`,{class:`code-snippet`,children:G(io,{lines:Qa(e.snippet)})}),e.stack&&e.stack!==e.message&&G(`details`,{class:`stack-details`,children:[G(`summary`,{children:[G(X,{class:`chevron`}),`Show stack`]}),G(`pre`,{class:`stack`,children:e.stack})]})]})}function so(e){return e.error!==null&&!e.steps.some(e=>e.error!==null)}function co({node:e,mode:t,expanded:n,toggle:r}){let{step:i,children:a}=e,o=n.has(e.key),s=ao(i.location?{file:i.location.file,line:i.location.line}:null);return G(`li`,{class:`step${e.onFailingPath?` step-failing-path`:``}${e.failing?` step-failing`:``}`,"data-category":i.category,children:[G(`div`,{class:`step-row`,children:[a.length>0?G(`button`,{type:`button`,class:`step-toggle`,"aria-expanded":o,onClick:()=>r(e.key),children:[G(X,{class:`chevron`}),G(`span`,{class:`visually-hidden`,children:[o?`Collapse`:`Expand`,` `,i.title]})]}):G(`span`,{class:`step-toggle-space`}),i.error?G(Y,{outcome:`failed`}):G(`span`,{class:`step-icon-space`}),G(`span`,{class:`step-text`,children:[G(`span`,{class:`step-title`,children:i.title}),i.subtitle&&G(`span`,{class:`step-subtitle`,children:[` `,i.subtitle]}),t===`all`&&G(`span`,{class:`step-category`,children:i.category}),e.failing&&G(`span`,{class:`visually-hidden`,children:` (failing step)`})]}),s&&G(`code`,{class:`step-location`,children:s}),G(`span`,{class:`step-duration`,children:U(i.durationMs)})]}),i.error&&so(i)&&G(`pre`,{class:`message step-error`,children:G(io,{lines:Ya(i.error.message)})}),o&&a.length>0&&G(lo,{nodes:a,mode:t,expanded:n,toggle:r})]})}function lo({nodes:e,mode:t,expanded:n,toggle:r}){return G(`ul`,{class:`step-list`,children:e.map(e=>G(co,{node:e,mode:t,expanded:n,toggle:r},e.key))})}function uo({steps:e,mode:t}){let n=to(e,t),[r,i]=A(()=>new Set($a(e)));return n.length===0?G(`p`,{class:`muted`,children:[`No `,t==="default"?`test.step or failing step`:`step`,` in this attempt.`]}):G(lo,{nodes:n,mode:t,expanded:r,toggle:e=>i(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})})}var fo={screenshot:`Screenshots`,video:`Videos`,trace:`Traces`,text:`Text`,other:`Other`},po=new TextEncoder;function mo(e){return e<1e3?`${e} B`:e<1e6?`${(e/1e3).toFixed(1)} kB`:`${(e/1e6).toFixed(1)} MB`}function ho(e){return e.split(`/`).map(encodeURIComponent).join(`/`)}function go({attachment:e}){let t=t=>G(`span`,{class:`attachment-meta`,children:[e.contentType,t&&` · ${t}`]});return e.body===null?G(`div`,{class:`attachment-file`,children:[e.path?G(`a`,{class:`attachment-name`,href:ho(e.path),children:e.name}):G(`span`,{class:`attachment-name`,children:[e.name,` `,G(`span`,{class:`muted`,children:`(file missing)`})]}),t(null)]}):G(`details`,{class:`attachment-body`,children:[G(`summary`,{children:[G(X,{class:`chevron`}),G(`span`,{class:`attachment-name`,children:e.name}),t(mo(po.encode(e.body).length))]}),G(`pre`,{children:e.body})]})}function _o({attachments:e}){return G(`div`,{class:`attachment-groups`,children:Xt.map(t=>{let n=e.filter(e=>e.kind===t);return n.length===0?null:G(`section`,{class:`attachment-group`,"aria-label":fo[t],children:[G(`h3`,{children:[fo[t],` `,G(`span`,{class:`muted`,children:n.length})]}),G(`ul`,{class:`attachment-list`,children:n.map((e,t)=>G(`li`,{children:G(go,{attachment:e})},t))})]},t)})})}function vo({name:e,output:t}){if(t.text===``&&!t.truncated)return null;let n=t.text.split(`
|
|
13
|
+
`).filter((e,t,n)=>e!==``||t<n.length-1).length;return G(`details`,{class:`output-block`,children:[G(`summary`,{children:[G(X,{class:`chevron`}),G(`span`,{class:`output-name`,children:e}),G(`span`,{class:`muted`,children:W(n,`line`)}),t.truncated&&G(`span`,{class:`output-truncated`,children:`truncated`})]}),t.truncated&&G(`p`,{class:`output-notice`,children:`Truncated: the report keeps the first 32,768 characters of each attempt.`}),G(`pre`,{children:t.text})]})}function yo(e){return e===0?`Attempt 1`:`Retry ${e}`}function bo(e){let t=e.attempts.filter(t=>Zt(e,t));return t[t.length-1]??e.attempts[e.attempts.length-1]??null}function xo(e,t){if(t===null)return{attempt:bo(e),valid:!0};let n=e.attempts.find(e=>e.index===t);return n?{attempt:n,valid:!0}:{attempt:bo(e),valid:!1}}var So=`A Playwright test failed. Explain the most likely cause of the failure, say whether the problem is more likely in the test or in the application under test, and suggest a fix.`;function Co(e){let t=e.replace(/\s+$/,``),n=Math.max(2,...[...t.matchAll(/`+/g)].map(e=>e[0].length)),r="`".repeat(n+1);return`${r}\n${t}\n${r}`}function wo(e){return e.location?`${e.location.file}:${e.location.line}:${e.location.column}`:null}function To(e){return e.subtitle?`${e.title} (${e.subtitle})`:e.title}function Eo(e,t,n,r){let i=[`## Error${n>1?` ${t+1} of ${n}`:``}`,``,`Category: ${e.category??`Uncategorized`}`],a=wo(e);return a&&i.push(`Location: ${a}`),i.push(``,`Message:`,Co(e.message)),e.snippet&&i.push(``,`Code:`,Co(e.snippet)),r.includeStack&&e.stack&&e.stack!==e.message&&i.push(``,`Stack:`,Co(e.stack)),i}function Do(e,t,n){let r=e.attempts.findIndex(e=>e.index===t.index)+1,i=[So,``,`## Test`,``,`- Title: ${[...e.suitePath,e.title].join(` › `)}`,`- Location: ${e.file}:${e.line}`,`- Project: ${e.project||`(unnamed)`}`,`- Outcome: ${e.outcome}`,`- Attempt: ${r} of ${e.attempts.length} (${yo(t.index).toLowerCase()}), status ${t.status}`,`- Error category: ${t.errors[0]?.category??e.category??`none`}`];e.tags.length>0&&i.push(`- Tags: ${e.tags.join(`, `)}`);let a=[...e.annotations,...t.annotations];a.length>0&&i.push(`- Annotations: ${a.map(({type:e,description:t})=>t?`${e}: ${t}`:e).join(`; `)}`),t.errors.forEach((e,r)=>i.push(``,...Eo(e,r,t.errors.length,n))),t.errors.length===0&&i.push(``,`## Error`,``,`This attempt reported no error.`);let o=ro(t.steps);return o&&(i.push(``,`## Failing step`,``,o.path.map(To).join(` › `)),o.preceding.length>0&&i.push(``,`Steps before it, at the same level:`,...o.preceding.map((e,t)=>`${t+1}. ${To(e)}`))),t.attachments.length>0&&i.push(``,`## Attachments (not included)`,``,...t.attachments.map(e=>`- ${e.name} (${e.contentType})`)),`${i.join(`
|
|
14
|
+
`)}\n`}var Oo={passed:`passed`,failed:`failed`,timedOut:`failed`,interrupted:`failed`,skipped:`skipped`},ko={passed:`Passed`,failed:`Failed`,timedOut:`Timed out`,interrupted:`Interrupted`,skipped:`Skipped`};function Ao(e){return{page:`test`,id:e.id,repeatEachIndex:e.repeatEachIndex}}function jo({type:e,description:t}){return t?`${e}: ${t}`:e}function Mo({test:e}){let t=Object.entries(e.dimensions).filter(([,e])=>e.length>0);return e.tags.length===0&&e.annotations.length===0&&t.length===0?null:G(`dl`,{class:`test-meta`,children:[e.tags.length>0&&G(`div`,{children:[G(`dt`,{children:`Tags`}),G(`dd`,{class:`chips`,children:e.tags.map(e=>G(`span`,{class:`tag`,children:e},e))})]}),e.annotations.length>0&&G(`div`,{children:[G(`dt`,{children:`Annotations`}),G(`dd`,{class:`chips`,children:e.annotations.map((e,t)=>G(`span`,{class:`tag`,children:jo(e)},t))})]}),t.map(([e,t])=>G(`div`,{children:[G(`dt`,{children:e}),G(`dd`,{children:t.join(`, `)})]},e))]})}function No({test:e,selected:t,select:n}){let r=M(null),i=t=>{let i=e.attempts[(t+e.attempts.length)%e.attempts.length];i&&(n(i),r.current?.querySelector(`[data-attempt="${i.index}"]`)?.focus())},a=e.attempts.indexOf(t);return G(`div`,{class:`attempt-tabs`,role:`tablist`,"aria-label":`Attempts`,ref:r,onKeyDown:t=>{let n={ArrowRight:a+1,ArrowLeft:a-1,Home:0,End:e.attempts.length-1}[t.key];n!==void 0&&(t.preventDefault(),i(n))},children:e.attempts.map(e=>{let r=e===t;return G(`button`,{type:`button`,role:`tab`,id:`attempt-tab-${e.index}`,class:`attempt-tab`,"data-attempt":e.index,"aria-selected":r,"aria-controls":`attempt-panel`,tabIndex:r?0:-1,onClick:()=>n(e),children:[G(Y,{outcome:Oo[e.status],decorative:!0}),G(`span`,{children:yo(e.index)}),G(`span`,{class:`visually-hidden`,children:[`, `,ko[e.status]]}),G(`span`,{class:`attempt-duration`,children:U(e.durationMs)})]},e.index)})})}function Po({test:e,attempt:t,params:n,groups:r,colors:i}){let a=n.allSteps?`all`:`default`,o=new Set(e.annotations.map(jo)),s=t.annotations.filter(e=>!o.has(jo(e)));return G(S,{children:[t.errors.length>0&&G(`section`,{class:`detail-section`,"aria-labelledby":`detail-errors`,children:[G(`h2`,{id:`detail-errors`,children:t.errors.length===1?`Error`:W(t.errors.length,`error`)}),t.errors.map((e,t)=>G(oo,{error:e,group:r.get(e.signature),color:e.category?i.get(e.category):void 0},t))]}),t.steps.length>0&&G(`section`,{class:`detail-section`,"aria-labelledby":`detail-steps`,children:[G(`div`,{class:`section-head`,children:[G(`h2`,{id:`detail-steps`,children:`Steps`}),G(`button`,{type:`button`,class:`button toggle-button`,"aria-pressed":n.allSteps,onClick:()=>Ar(xr({...n,allSteps:!n.allSteps})),children:`Show all steps`})]}),G(uo,{steps:t.steps,mode:a},`${e.id}/${e.repeatEachIndex}/${t.index}`)]}),t.attachments.length>0&&G(`section`,{class:`detail-section`,"aria-labelledby":`detail-attachments`,children:[G(`h2`,{id:`detail-attachments`,children:`Attachments`}),G(_o,{attachments:t.attachments})]}),s.length>0&&G(`section`,{class:`detail-section`,"aria-labelledby":`detail-annotations`,children:[G(`h2`,{id:`detail-annotations`,children:`Annotations of this attempt`}),G(`ul`,{class:`chips`,children:s.map((e,t)=>G(`li`,{class:`tag`,children:jo(e)},t))})]}),(t.stdout.text!==``||t.stderr.text!==``||t.stdout.truncated||t.stderr.truncated)&&G(`section`,{class:`detail-section`,"aria-labelledby":`detail-output`,children:[G(`h2`,{id:`detail-output`,children:`Output`}),G(vo,{name:`stdout`,output:t.stdout}),G(vo,{name:`stderr`,output:t.stderr})]})]})}function Fo({report:e,test:t,sequence:n,groups:r,settings:i}){let a=N(()=>ri(e.categories),[e]),o=br(B.value.search),s=t?xo(t,o.attempt):null,c=s?.attempt??null;j(()=>{s&&!s.valid&&Ar(xr({...o,attempt:null}))},[s?.valid]);let l=t?Aa(n,t):null,u=e=>e?()=>qt(Ao(e)):null,d=e=>{if(!t||!c)return null;let n=t.attempts[t.attempts.indexOf(c)+e];return n?()=>Ar(xr({...o,attempt:n.index})):null};if(Ia({j:u(l?.next),k:u(l?.previous),"[":d(-1),"]":d(1)}),!t)return G(La,{message:`No test with this id in this report.`});let{primary:f}=tr(t),p=Oi(e.tests,t);return G(`div`,{class:`page test-page`,children:[G(ka,{label:`Tests in the current list`,position:l?.position??null,total:n.length,outside:`Not in the current list (${W(n.length,`test`)})`,previous:u(l?.previous),next:u(l?.next),previousLabel:`Previous`,nextLabel:`Next`,keys:[`k`,`j`]}),G(`header`,{class:`test-header`,children:[G(`h1`,{class:`test-title`,children:[t.suitePath.map((e,t)=>G(`span`,{class:`title-suite`,children:[e,G(`span`,{class:`title-separator`,children:` › `})]},t)),t.title,t.repeatEachIndex>0&&G(`span`,{class:`row-note`,children:[` repeat `,t.repeatEachIndex]})]}),G(`div`,{class:`test-summary`,children:[G(Y,{outcome:t.outcome,labelled:!0}),G(`span`,{children:ea(t.project)}),G(`code`,{children:[t.file,`:`,t.line]}),G(`span`,{children:U(t.durationMs)}),f!==null&&G(K,{name:f,color:a.get(f)})]}),G(Mo,{test:t}),G(`div`,{class:`test-actions`,children:[G(Ji,{label:`Rerun command`,help:ki,text:()=>Ti([t]),children:`Copy rerun command`}),p&&G(Ji,{label:`Rerun command`,help:`For a POSIX shell (bash, zsh), run from the Playwright root directory: paths are relative to it. A file:line argument targets the line where the test is declared, and reruns every test declared on that line. The command is only valid while the file has not changed since the run.`,text:()=>Ti(p.tests),children:[`Copy rerun command · `,p.label]}),c&&c.errors.length>0&&G(Ji,{label:`AI prompt`,help:`A description of this attempt's failure, in English, to paste in the AI assistant of your choice. Nothing is sent anywhere.`,text:()=>Do(t,c,{includeStack:i.aiPrompt.includeStack}),children:`Copy AI prompt`})]})]}),c&&t.attempts.length>1&&G(No,{test:t,selected:c,select:e=>Ar(xr({...o,attempt:e.index}))}),c&&G(`div`,{class:`attempt-panel`,id:`attempt-panel`,role:t.attempts.length>1?`tabpanel`:void 0,"aria-labelledby":t.attempts.length>1?`attempt-tab-${c.index}`:void 0,children:G(Po,{test:t,attempt:c,params:o,groups:r,colors:a})})]})}function Io(e){let t=Pn(e);return t===null?{status:`Status`,project:`Project`,tag:`Tag`,category:`Error category`}[e]:t}function Lo(e,t){return e===`status`?J(t):e===`project`?t||`(unnamed project)`:t}function Ro({facet:e,value:t,colors:n}){return e===`status`?G(Y,{outcome:t,labelled:!0}):e===`category`?G(K,{name:t,color:n.get(t)}):G(`span`,{class:`facet-value`,children:Lo(e,t)})}function zo({state:e,facet:t,values:n,counts:r,colors:i}){let a=M(null),o=e.facets[t]??[],s=Io(t);return je(()=>{let e=e=>{let t=a.current;t?.open&&!t.contains(e.target)&&(t.open=!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[]),G(`details`,{class:`facet`,ref:a,onKeyDown:e=>{let t=a.current;e.key===`Escape`&&t?.open&&(t.open=!1,t.querySelector(`summary`)?.focus(),e.stopPropagation())},"data-facet":t,children:[G(`summary`,{class:`facet-button`,children:[G(`span`,{children:s}),o.length>0&&G(`span`,{class:`facet-selected`,children:[o.length,G(`span`,{class:`visually-hidden`,children:` selected`})]}),G(X,{class:`chevron`})]}),G(`fieldset`,{class:`facet-menu`,children:[G(`legend`,{class:`visually-hidden`,children:s}),[...n].map(n=>{let a=r?.get(n)??0,s=o.includes(n);return G(`label`,{class:`facet-option${a===0&&!s?` facet-option-empty`:``}`,children:[G(`input`,{type:`checkbox`,checked:s,onChange:r=>kr(Wn(e,t,n,r.currentTarget.checked))}),G(Ro,{facet:t,value:n,colors:i}),G(`span`,{class:`facet-count`,children:[a,G(`span`,{class:`visually-hidden`,children:[` `,a===1?`test`:`tests`]})]})]},n)})]})]})}function Bo({state:e,domain:t,counts:n,colors:r}){return G(`div`,{class:`facets`,role:`group`,"aria-label":`Filters`,children:[...t].filter(([e,t])=>e!==`project`||t.size>1).map(([t,i])=>G(zo,{state:e,facet:t,values:i,counts:n.get(t),colors:r},t))})}function Vo(e,t){let n=[];e.q.trim()!==``&&n.push({key:`q`,label:`Search: ${e.q.trim()}`,remove:e=>({...e,q:``})});let r=new Map([...t.keys()].map((e,t)=>[e,t])),i=kn(e.facets).sort(([e],[t])=>(r.get(e)??1/0)-(r.get(t)??1/0));for(let[e,t]of i)for(let r of t)n.push({key:`${e}\u0000${r}`,label:`${Io(e)}: ${Lo(e,r)}`,remove:t=>Wn(t,e,r,!1)});return n}function Ho({state:e,domain:t}){let n=Vo(e,t),r=M(null),i=M(null);return j(()=>{if(i.current===null)return;let e=[...r.current?.querySelectorAll(`button`)??[]],t=e[Math.min(i.current,e.length-2)]??e[e.length-1];i.current=null,t?t.focus():document.querySelector(`.facets summary`)?.focus()}),n.length===0?null:G(`div`,{class:`filter-chips`,ref:r,children:[G(`ul`,{"aria-label":`Active filters`,children:n.map((t,n)=>G(`li`,{children:G(`button`,{type:`button`,class:`chip`,"aria-label":`Remove filter ${t.label}`,onClick:()=>{i.current=n,kr(t.remove(e))},children:[G(`span`,{children:t.label}),G(Hi,{})]})},t.key))}),G(`button`,{type:`button`,class:`text-button`,onClick:()=>{i.current=0,kr(Gn(e))},children:`Clear all`})]})}var Uo=new Intl.NumberFormat(`en-US`);function $(e){return Uo.format(e)}function Wo(e,t){return Math.min(e,Math.max(t,0))}function Go(e,t,n){let r=e=>e===1?`test`:`tests`;return e<t?t===n?`Showing ${$(e)} of ${$(n)} ${r(n)}`:`Showing ${$(e)} of ${$(t)} matching ${r(t)} (${$(n)} in total)`:t===n?`${$(n)} ${r(n)}`:`${$(t)} of ${$(n)} ${r(n)}`}var Ko=[{column:`status`,label:`Status`},{column:`title`,label:`Test`},{column:`project`,label:`Project`},{column:`file`,label:`File`},{column:`duration`,label:`Duration`,numeric:!0},{column:`category`,label:`Error category`},{column:`attempts`,label:`Attempts`,numeric:!0}];function qo({report:e,state:t,sorted:n}){let r=N(()=>ri(e.categories),[e]),i=N(()=>or(e.tests,t,Cr.value,wr.value),[e,Hn({...t,sort:H})]),a=e.tests.length,o=Hn(t),s=M({viewKey:o,limit:500});s.current.viewKey!==o&&(s.current={viewKey:o,limit:500});let[,c]=A(0),l=Wo(n.length,s.current.limit),u=N(()=>n.slice(0,l),[n,l]),d=Go(l,n.length,a),f=M(null),p=M(null);j(()=>{p.current!==null&&(f.current?.rows[p.current]?.querySelector(`a`)?.focus(),p.current=null)});let m=e=>{p.current=l,s.current={viewKey:o,limit:e},c(e=>e+1)};return G(`div`,{class:`page view view-tests`,children:[G(`h1`,{children:`Tests`}),a>0&&G(`div`,{class:`filter-bar`,children:[G(Bo,{state:t,domain:Cr.value,counts:i,colors:r}),G(Ho,{state:t,domain:Cr.value})]}),G(`p`,{class:`result-count`,"aria-live":`polite`,"aria-atomic":`true`,children:d}),G(ra,{tests:n}),a===0?G(`p`,{class:`muted`,children:`No tests in this run.`}):n.length===0?G(`div`,{class:`empty-state`,children:[G(`p`,{children:`No tests match these filters.`}),G(`button`,{type:`button`,class:`button`,onClick:()=>kr(Gn(t)),children:`Reset filters`})]}):G(`div`,{class:`table-scroll`,children:G(`table`,{class:`tests-table`,children:[G(`thead`,{children:G(`tr`,{children:Ko.map(({column:e,label:n,numeric:r})=>{let i=t.sort.column===e;return G(`th`,{scope:`col`,class:r?`numeric`:void 0,"aria-sort":i?t.sort.direction===`asc`?`ascending`:`descending`:void 0,children:G(`button`,{type:`button`,class:`sort-button`,onClick:()=>kr({...t,sort:fr(t.sort,e)}),children:[n,G(Ui,{direction:i?t.sort.direction:null,class:i?`sort-active`:`sort-idle`})]})},e)})})}),G(`tbody`,{ref:f,children:u.map(e=>G(Xo,{test:e,colors:r},`${e.id}/${e.repeatEachIndex}`))})]})}),l<n.length&&G(`div`,{class:`table-more`,children:[G(`p`,{children:d}),G(`button`,{type:`button`,class:`button`,onClick:()=>m(l+500),children:[`Show `,Math.min(500,n.length-l),` more`]}),G(`button`,{type:`button`,class:`button`,onClick:()=>m(n.length),children:`Show all`})]})]})}function Jo({path:e}){let t=e.split(`/`);return G(S,{children:t.map((e,n)=>G(S,{children:[e,n<t.length-1&&G(S,{children:[`/`,G(`wbr`,{})]})]},n))})}function Yo({test:e,colors:t}){let{primary:n,others:r}=tr(e);return n===null?null:G(`span`,{class:`category-badges`,children:[G(K,{name:n,color:t.get(n)}),r.length>0&&G(`span`,{class:`category-more`,title:`Other ${r.length===1?`category`:`categories`} in failing attempts: ${r.join(`, `)}`,children:[G(`span`,{"aria-hidden":`true`,children:[`+`,r.length]}),G(`span`,{class:`visually-hidden`,children:[`, and `,W(r.length,`other category`,`other categories`),`: `,r.join(`, `)]})]})]})}function Xo({test:e,colors:t}){return G(`tr`,{children:[G(`td`,{children:G(Y,{outcome:e.outcome,labelled:!0})}),G(`td`,{class:`cell-title`,children:[G(`a`,{href:Zi(e),children:ur(e)}),e.repeatEachIndex>0&&G(`span`,{class:`row-note`,children:[` repeat `,e.repeatEachIndex]})]}),G(`td`,{class:`cell-project`,children:ea(e.project)}),G(`td`,{children:G(`code`,{children:G(Jo,{path:`${e.file}:${e.line}`})})}),G(`td`,{class:`numeric`,children:U(e.durationMs)}),G(`td`,{children:G(Yo,{test:e,colors:t})}),G(`td`,{class:`numeric`,children:e.attempts.length})]})}function Zo({open:e,onClose:t,title:n,class:r,children:i}){let a=M(null),o=M(null),s=Me();return j(()=>{let t=a.current;t&&(e&&!t.open?(o.current=document.activeElement instanceof HTMLElement?document.activeElement:null,t.showModal()):!e&&t.open&&t.close())},[e]),G(`dialog`,{ref:a,class:`dialog ${r??``}`,"aria-labelledby":s,onClose:()=>{t();let e=document.activeElement;(!e||e===document.body||a.current?.contains(e))&&o.current?.focus(),o.current=null},onClick:e=>{e.target===a.current&&a.current?.close()},children:[G(`div`,{class:`dialog-head`,children:[G(`h2`,{id:s,children:n}),G(`button`,{type:`button`,class:`icon-button`,title:`Close`,onClick:()=>a.current?.close(),children:[G(Hi,{}),G(`span`,{class:`visually-hidden`,children:`Close`})]})]}),i]})}function Qo(){let e=St.value,t=M(null);return j(()=>{e&&(t.current?.focus(),t.current?.select())},[e]),G(Zo,{open:e!==null,onClose:()=>St.value=null,title:`Copy ${e?.label.toLowerCase()??``}`,class:`copy-dialog`,children:[G(`p`,{class:`dialog-note`,children:`The browser did not allow copying from this page. The text is selected: press Ctrl+C (⌘C on macOS) to copy it.`}),G(`textarea`,{ref:t,class:`copy-text`,readOnly:!0,rows:8,"aria-label":e?.label??``,value:e?.text??``,spellcheck:!1})]})}function $o({open:e,onClose:t}){return G(Zo,{open:e,onClose:t,title:`Keyboard shortcuts`,class:`shortcuts-dialog`,children:[G(`table`,{class:`shortcuts-table`,children:[G(`thead`,{children:G(`tr`,{children:[G(`th`,{scope:`col`,children:`Key`}),G(`th`,{scope:`col`,children:`Action`}),G(`th`,{scope:`col`,children:`Where`})]})}),G(`tbody`,{children:Na.map(({keys:e,action:t,where:n})=>G(`tr`,{children:[G(`td`,{children:e.map((e,t)=>G(`span`,{children:[t>0&&` / `,G(`kbd`,{children:e})]},e))}),G(`td`,{children:t}),G(`td`,{children:n})]},t))})]}),G(`p`,{class:`dialog-note`,children:`Single keys do nothing while typing in a field or with Ctrl, Alt or Meta held.`})]})}function es({version:e}){return G(`footer`,{class:`footer`,children:[`Loupe — a reporter for Playwright `,G(`span`,{class:`muted`,children:[`· v`,e]})]})}function ts(e,t={}){if(typeof e!=`string`||e===``)return null;let n=new Date(e);if(Number.isNaN(n.getTime()))return null;let r=t.timeZone===void 0?{}:{timeZone:t.timeZone},i=new Intl.DateTimeFormat(t.locale,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZoneName:`short`,...r}),a=new Intl.DateTimeFormat(t.locale,{dateStyle:`full`,timeStyle:`long`,...r});return{utc:n.toISOString(),label:i.format(n),full:a.format(n),timeZone:i.resolvedOptions().timeZone}}var ns=[`system`,`light`,`dark`],rs=`loupe.theme`,is=L(`system`);function as(e){return typeof e==`string`&&ns.includes(e)}function os(e){let t=Tt(rs);is.value=as(t)?t:as(e)?e:`system`,st(()=>{let e=document.documentElement;is.value===`system`?delete e.dataset.theme:e.dataset.theme=is.value})}function ss(e){is.value=e,Et(rs,e)}var cs={passed:`Passed`,failed:`Failed`,timedout:`Timed out`,interrupted:`Interrupted`},ls={env:`LOUPE_RUN_SCOPE=partial`,"file-filter":`file filter`,grep:`grep filter`,"project-filter":`project filter`,"last-failed":`--last-failed`,"only-changed":`--only-changed`,"test-list":`test list`,only:`test.only`,shard:`single shard`,list:`--list (no test ran)`};function us(e){return ls[e]??e}var ds={system:`System theme`,light:`Light theme`,dark:`Dark theme`},fs={system:Ni,light:Pi,dark:Fi};function ps(){return G(`div`,{class:`theme-switch`,role:`group`,"aria-label":`Theme`,children:ns.map(e=>{let t=fs[e];return G(`button`,{type:`button`,class:`icon-button`,"aria-pressed":is.value===e,title:ds[e],onClick:()=>ss(e),children:[G(t,{}),G(`span`,{class:`visually-hidden`,children:ds[e]})]},e)})})}function ms(){let[e,t]=A(!1);return Ia({"?":()=>t(!0)}),G(S,{children:[G(`button`,{type:`button`,class:`icon-button`,title:`Keyboard shortcuts (?)`,"aria-keyshortcuts":`?`,onClick:()=>t(!0),children:[G(Ki,{}),G(`span`,{class:`visually-hidden`,children:`Keyboard shortcuts`})]}),G($o,{open:e,onClose:()=>t(!1)})]})}function hs({startedAt:e,durationMs:t}){let n=N(()=>ts(e),[e]),[r,i]=A(!1);return G(`div`,{class:`run-time`,onPointerLeave:()=>i(!1),children:[G(`dt`,{class:`visually-hidden`,children:`Run`}),G(`dd`,{children:[n&&G(S,{children:[G(`time`,{dateTime:n.utc,tabIndex:0,"aria-describedby":`run-time-details`,onKeyDown:e=>e.key===`Escape`&&i(!0),onBlur:()=>i(!1),children:n.label}),` · `]}),U(t)]}),n&&G(`span`,{id:`run-time-details`,role:`tooltip`,class:`run-time-details${r?` dismissed`:``}`,children:[G(`span`,{children:n.full}),G(`span`,{children:[`Time zone: `,n.timeZone]}),G(`span`,{children:[`UTC: `,n.utc]})]})]})}function gs({outcome:e,count:t}){let n=J(e).toLowerCase(),r=G(S,{children:[G(Y,{outcome:e,decorative:!0}),G(`span`,{class:`count-value`,children:t}),G(`span`,{class:`visually-hidden`,children:[` `,n]})]});return t===0?G(`li`,{class:`count zero`,title:J(e),children:r}):G(`li`,{class:`count`,children:G(`a`,{class:`count-link`,href:Or({...An,facets:{status:[e]}},{page:`tests`}),title:`Show the ${t} ${n} ${t===1?`test`:`tests`}`,children:r})})}function _s({report:e,title:t}){let{run:n}=e,r=[];return n.git.branch&&r.push([`Branch`,n.git.branch]),n.git.commit&&r.push([`Commit`,n.git.commit.slice(0,8),n.git.commit]),n.environment.name&&r.push([`Environment`,n.environment.name]),G(S,{children:[G(`header`,{class:`header`,children:[G(`button`,{type:`button`,class:`icon-button`,"aria-controls":`sidebar`,"aria-expanded":R.value,title:R.value?`Hide sidebar`:`Show sidebar`,onClick:At,children:[G(Mi,{}),G(`span`,{class:`visually-hidden`,children:R.value?`Hide sidebar`:`Show sidebar`})]}),G(`div`,{class:`brand`,children:[G(`span`,{class:`wordmark`,children:`Loupe`}),G(`a`,{class:`title`,href:V({page:`dashboard`}),children:t})]}),G(`span`,{class:`run-status run-${n.status}`,children:[G(Y,{outcome:n.status===`passed`?`passed`:`failed`,decorative:!0}),cs[n.status]??n.status]}),G(`ul`,{class:`counts`,"aria-label":`Test counts`,children:Yt.map(e=>G(gs,{outcome:e,count:n.stats[e]},e))}),G(`dl`,{class:`run-meta`,children:[G(hs,{startedAt:n.startedAt,durationMs:n.durationMs}),r.map(([e,t,n])=>G(`div`,{title:n,children:[G(`dt`,{children:e}),G(`dd`,{children:t})]},e))]}),G(`div`,{class:`header-tools`,children:[G(ms,{}),G(ps,{})]})]}),n.scope===`partial`&&G(`div`,{class:`banner banner-partial`,role:`note`,children:[G(Li,{}),G(`p`,{children:[G(`strong`,{children:`Partial run.`}),` Only part of the suite ran, so these results do not cover every test.`,n.scopeReasons.length>0&&G(S,{children:[` `,`Detected from: `,n.scopeReasons.map(us).join(`, `),`.`]})]})]})]})}function vs({roots:e,route:t,prefix:n,expandAll:r,emptyMessage:i}){let a=t.page===`test`?si(t.id,t.repeatEachIndex):null,[o,s]=A(()=>new Set(e.map(e=>e.key))),[c,l]=A(null),u=M(new Map),d=M(!1),f=M(!1),[p,m]=A(null),h=M(null),g=jt.value;j(()=>{g&&e.some(e=>e.key===g.key)&&(m(g.key),s(e=>e.has(g.key)?e:new Set([...e,g.key])),h.current=g.key,l(g.key))},[e,g]),j(()=>{a&&m(null)},[a]),j(()=>{if(!a)return;let t=vi(e,a);t&&(f.current=!0,l(a),s(e=>t.every(t=>e.has(t))?e:new Set([...e,...t])))},[e,a]),j(()=>{if(!r)return;let t=yi(e);s(e=>t.every(t=>e.has(t))?e:new Set([...e,...t]))},[e,r]);let _=N(()=>_i(e,o),[e,o]),v=N(()=>new Map(_.map((e,t)=>[e.node.key,t])),[_]),y=c!==null&&v.has(c)?c:a!==null&&v.has(a)?a:_[0]?.node.key??null;j(()=>{f.current&&a&&u.current.has(a)&&(f.current=!1,u.current.get(a)?.scrollIntoView({block:`nearest`}));let e=h.current===null?void 0:u.current.get(h.current);e&&(h.current=null,e.focus({preventScroll:!0}),e.scrollIntoView({block:`nearest`})),d.current&&y&&(d.current=!1,u.current.get(y)?.focus())});let ee=n!==``&&G(`p`,{class:`tree-prefix`,title:`Folder shared by every test file, left out of the tree`,children:[G(`span`,{class:`visually-hidden`,children:`Files in `}),n]}),b=e=>{e&&(d.current=!0,l(e.node.key))},x=(e,t)=>{s(n=>{if(n.has(e)===t)return n;let r=new Set(n);return t?r.add(e):r.delete(e),r})};return G(`div`,{class:`tree-section`,children:[G(`div`,{class:`tree-toolbar`,children:[G(`h2`,{id:`tree-heading`,children:`Tests`}),G(`button`,{type:`button`,class:`text-button`,onClick:()=>s(new Set(yi(e))),children:`Expand all`}),G(`button`,{type:`button`,class:`text-button`,onClick:()=>s(new Set),children:`Collapse all`})]}),ee,e.length===0?G(`p`,{class:`tree-empty`,children:i}):G(`ul`,{class:`tree`,role:`tree`,"aria-labelledby":`tree-heading`,onKeyDown:e=>{if(y===null||e.altKey||e.ctrlKey||e.metaKey)return;let t=v.get(y)??0,n=_[t];if(!n)return;let{node:r}=n,i=r.kind!==`test`,a=i&&o.has(r.key);switch(e.key){case`ArrowDown`:b(_[t+1]);break;case`ArrowUp`:b(_[t-1]);break;case`Home`:b(_[0]);break;case`End`:b(_[_.length-1]);break;case`ArrowRight`:i&&!a?x(r.key,!0):a&&b(_[t+1]);break;case`ArrowLeft`:a?x(r.key,!1):n.parentKey!==null&&b(_[v.get(n.parentKey)??-1]);break;case`Enter`:case` `:r.kind===`test`?qt({page:`test`,id:r.testId,repeatEachIndex:r.repeatEachIndex}):x(r.key,!a);break;default:return}e.preventDefault()},children:_.map(e=>{let{key:t}=e.node,n={ref:e=>{e?u.current.set(t,e):u.current.delete(t)},role:`treeitem`,"aria-level":e.level,"aria-setsize":e.siblings,"aria-posinset":e.position,tabIndex:t===y?0:-1,style:{"--level":e.level},onFocus:()=>l(t)};return e.node.kind===`test`?G(`li`,{...n,class:`tree-row tree-test`,"aria-selected":t===a,children:G(ys,{node:e.node})},t):G(`li`,{...n,class:`tree-row tree-group tree-${e.node.kind}${t===p?` revealed`:``}`,"aria-expanded":o.has(t),children:G(xs,{node:e.node,onToggle:()=>x(t,!o.has(t))})},t)})})]})}function ys({node:e}){return G(`a`,{class:`row-content`,tabIndex:-1,href:V({page:`test`,id:e.testId,repeatEachIndex:e.repeatEachIndex}),children:[G(Y,{outcome:e.outcome}),G(`span`,{class:`row-label`,children:e.title}),e.repeatEachIndex>0&&G(`span`,{class:`row-note`,children:[`repeat `,e.repeatEachIndex]})]})}function bs({name:e,path:t}){let[n,r]=Fr(e);return G(`span`,{class:`label-part file-name`,children:[G(`span`,{class:`name-head`,"aria-hidden":`true`,children:n}),r&&G(`span`,{class:`name-tail`,"aria-hidden":`true`,children:r}),G(`span`,{class:`visually-hidden`,children:t})]})}function xs({node:e,onToggle:t}){let{counts:n}=e,r=[W(n.total,`test`),`${n.failed} failed`,...n.flaky>0?[`${n.flaky} flaky`]:[]].join(`, `),[i=``,...a]=e.labels,o=[e.kind===`folder`?`${e.path??i}/`:e.path??i,...a].join(` › `);return G(`div`,{class:`row-content`,onClick:t,children:[G(X,{class:`chevron`}),G(`span`,{class:`row-label`,title:o,children:[e.kind===`file`?G(bs,{name:i,path:e.path??i}):G(`span`,{class:`label-part`,children:i}),a.map((e,t)=>G(`span`,{class:`label-part`,children:e},t))]}),G(`span`,{class:`row-counts`,title:r,children:[G(`span`,{class:`visually-hidden`,children:r}),n.failed>0&&G(`span`,{class:`badge badge-failed`,"aria-hidden":`true`,children:n.failed}),G(`span`,{class:`row-total`,"aria-hidden":`true`,children:n.total})]})]})}var Ss=200,Cs=300;function ws({page:e,route:t,children:n,class:r}){return G(`li`,{children:G(`a`,{class:`nav-link ${r??``}`,href:V({page:e}),"aria-current":t.page===e?`page`:void 0,children:n})})}function Ts(){let e=Dr.value.q,[t,n]=A(e),r=M(null),i=M(void 0);j(()=>{e.trim()!==t.trim()&&(clearTimeout(i.current),n(e))},[e]),j(()=>{let e=e=>{e.key===`/`&&Fa(e)&&(e.preventDefault(),R.value?r.current?.focus():(R.value=!0,setTimeout(()=>r.current?.focus(),0)))};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e),clearTimeout(i.current)}},[]);let a=e=>kr({...Dr.value,q:e},`replace`);return G(`div`,{class:`search-field`,children:[G(`label`,{for:`sidebar-search`,class:`visually-hidden`,children:`Search tests`}),G(Vi,{}),G(`input`,{ref:r,id:`sidebar-search`,type:`search`,placeholder:`Search tests`,autoComplete:`off`,spellcheck:!1,"aria-keyshortcuts":`/`,value:t,onInput:e=>{let t=e.currentTarget.value;n(t),clearTimeout(i.current),i.current=setTimeout(()=>a(t),Ss)},onKeyDown:e=>{e.key===`Escape`&&t!==``&&(e.preventDefault(),clearTimeout(i.current),n(``),a(``))}}),G(`kbd`,{class:`search-key`,"aria-hidden":`true`,children:`/`})]})}function Es({matched:e,route:t}){let n=Dr.value,r=Un(n);return G(`div`,{class:`filter-indicator`,"aria-live":t.page===`tests`?`off`:`polite`,children:r>0&&G(`p`,{children:[G(`span`,{children:W(r,`filter`)}),` · `,G(`a`,{href:V({page:`tests`}),children:W(e,`test`)}),G(`button`,{type:`button`,class:`text-button`,onClick:()=>kr(Gn(n)),children:`Clear`})]})})}function Ds({report:e,tree:t,prefix:n,matched:r,route:i,open:a}){let o=e.run.errors.length,s=Un(Dr.value)>0;return G(`nav`,{id:`sidebar`,class:`sidebar`,"aria-label":`Report`,hidden:!a,children:[G(`div`,{class:`sidebar-search`,role:`search`,children:[G(Ts,{}),G(Es,{matched:r,route:i})]}),G(`ul`,{class:`nav-fixed`,children:[G(ws,{page:`dashboard`,route:i,children:[G(Ii,{}),G(`span`,{children:`Overview`})]}),G(ws,{page:`errors`,route:i,class:o>0?`nav-has-run-errors`:void 0,children:[G(Ri,{}),G(`span`,{children:`Errors`}),o>0&&G(`span`,{class:`nav-marker`,title:W(o,`run error`),children:[G(Li,{}),G(`span`,{class:`badge badge-failed`,children:o}),G(`span`,{class:`visually-hidden`,children:[`, `,W(o,`run error`)]})]})]}),G(ws,{page:`health`,route:i,children:[G(zi,{}),G(`span`,{children:`Suite health`})]}),G(ws,{page:`tests`,route:i,children:[G(Bi,{}),G(`span`,{children:`Tests`})]})]}),G(vs,{roots:t,route:i,prefix:n,expandAll:s&&r<=Cs,emptyMessage:e.tests.length===0?`No tests in this run.`:`No tests match the filters.`})]})}function Os({report:e,settings:t}){let n=Dr.value,r=N(()=>ar(e.tests,n,wr.value),[e,Hn({...n,sort:H})]),i=N(()=>Mr(e.tests.map(e=>e.file)),[e]),a=N(()=>hi({projects:e.projects,tests:r},{prefix:i}),[e,r,i]),o=N(()=>new Map(e.tests.map(e=>[si(e.id,e.repeatEachIndex),e])),[e]),s=N(()=>hr(e.tests,e.projects.map(e=>e.name)),[e]),c=N(()=>vr(r,n.sort,s),[r,s,n.sort.column,n.sort.direction]),l=N(()=>Qt(e),[e]),u=N(()=>$t(l),[l]),d=N(()=>new Map(l.map(e=>[e.signature,e])),[l]),{route:f}=B.value,p=M(null);je(()=>{(f.page!==`errors`||f.category===void 0)&&p.current?.scrollTo(0,0),kt()&&(R.value=!1)},[JSON.stringify(f)]);let m;switch(f.page){case`dashboard`:m=G(Va,{report:e,groups:l,matched:c});break;case`errors`:m=G(Oa,{report:e,groups:l,category:f.category});break;case`health`:m=G(Ba,{report:e});break;case`tests`:m=G(qo,{report:e,state:n,sorted:c});break;case`test`:m=G(Fo,{report:e,test:o.get(si(f.id,f.repeatEachIndex)),sequence:c,groups:d,settings:t});break;case`group`:m=G(za,{report:e,groups:u,group:d.get(f.signature)});break;case`not-found`:m=G(La,{})}return G(`div`,{class:`app ${R.value?`sidebar-open`:`sidebar-closed`}`,children:[G(_s,{report:e,title:t.title}),G(`div`,{class:`layout`,children:[G(Ds,{report:e,tree:a,prefix:i,matched:r.length,route:f,open:R.value}),G(`main`,{class:`main`,ref:p,tabIndex:-1,children:[m,G(es,{version:e.generator.version})]})]}),G(Qo,{}),G(`p`,{class:`visually-hidden`,role:`status`,"aria-live":`polite`,children:[bt.value.text,bt.value.seq%2==1?`\xA0`:``]})]})}var ks={title:`Loupe report`,theme:`system`,screenshots:{defaultView:`side-by-side`},aiPrompt:{includeStack:!0}};function As(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function js(e){let t;try{t=JSON.parse(e??``)}catch{return{ok:!1,message:`The report data is missing or is not valid JSON.`}}return As(t)?t.schemaVersion===1?!As(t.run)||!Array.isArray(t.tests)||!Array.isArray(t.projects)?{ok:!1,message:`The report data is incomplete: run, projects or tests is missing.`}:{ok:!0,report:t}:{ok:!1,message:`Unsupported report schema version ${JSON.stringify(t.schemaVersion)}: this renderer reads version 1.`}:{ok:!1,message:`The report data is not a Loupe report.`}}function Ms(e){try{let t=JSON.parse(e??``);return As(t)?{...ks,...t,screenshots:{...ks.screenshots,...As(t.screenshots)?t.screenshots:{}},aiPrompt:{...ks.aiPrompt,...As(t.aiPrompt)?t.aiPrompt:{}}}:ks}catch{return ks}}var Ns=Ms(document.getElementById(`loupe-settings`)?.textContent);document.title=Ns.title,os(Ns.theme);var Ps=js(document.getElementById(`loupe-data`)?.textContent),Fs=document.getElementById(`app`)??document.body;Ps.ok&&Tr(Ps.report),_e(Ps.ok?G(Os,{report:Ps.report,settings:Ns}):G(`div`,{class:`load-error`,role:`alert`,children:[G(`h1`,{children:`Loupe could not open this report`}),G(`p`,{children:Ps.message})]}),Fs);</script>
|
|
15
|
+
<style>@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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)format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(data:font/woff2;base64,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)format("woff2")}:root{--bg:#f7f5f0;--bg-card:#fff;--bg-muted:#eeeae2;--fg:#111;--fg-secondary:#666;--border:#e8e4dc;--border-control:#8a857c;--status-passed:#3e6e51;--status-failed:#b3261e;--status-flaky:#6b4a05;--status-flaky-bg:#fbf0d9;--status-skipped:#666;--diff-expected:#1f6b3a;--diff-received:#b3261e;--shadow:0 8px 24px #1111111f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#080808;--bg-card:#0d0d0d;--bg-muted:#161616;--fg:#f0ede8;--fg-secondary:#8a8a8a;--border:#262626;--border-control:#6b6b6b;--status-passed:#7da88a;--status-failed:#f28b82;--status-flaky:#f0cf8a;--status-flaky-bg:#1f1705;--status-skipped:#8a8a8a;--diff-expected:#7fc79a;--diff-received:#f28b82;--shadow:0 8px 24px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root:not([data-theme=light]) .category-badge,:root:not([data-theme=light]) .category-bar{--cat-text:var(--cat-text-dark);--cat-bg:var(--cat-bg-dark);--cat-border:var(--cat-border-dark)}}:root[data-theme=dark]{--bg:#080808;--bg-card:#0d0d0d;--bg-muted:#161616;--fg:#f0ede8;--fg-secondary:#8a8a8a;--border:#262626;--border-control:#6b6b6b;--status-passed:#7da88a;--status-failed:#f28b82;--status-flaky:#f0cf8a;--status-flaky-bg:#1f1705;--status-skipped:#8a8a8a;--diff-expected:#7fc79a;--diff-received:#f28b82;--shadow:0 8px 24px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--font-sans:"DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}.category-badge,.category-bar{--cat-text:var(--cat-text-light);--cat-bg:var(--cat-bg-light);--cat-border:var(--cat-border-light)}:root[data-theme=dark] .category-badge,:root[data-theme=dark] .category-bar{--cat-text:var(--cat-text-dark);--cat-bg:var(--cat-bg-dark);--cat-border:var(--cat-border-dark)}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--fg);font:14px/1.5 var(--font-sans);margin:0}#app{height:100%}a{color:var(--fg);text-decoration:underline;-webkit-text-decoration-color:var(--border-control);text-decoration-color:var(--border-control);text-underline-offset:2px}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--fg);outline-offset:2px}code,pre,kbd{font-family:var(--font-mono);font-size:12.5px}h1,h2,h3,strong,b{font-weight:600}[hidden]{display:none!important}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--fg-secondary)}.icon{flex:none;display:block}.app{flex-direction:column;height:100%;display:flex}.layout{flex:1;min-height:0;display:flex;position:relative}.main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:auto}.main:focus{outline:none}.main>.page{flex:1}.header{border-bottom:1px solid var(--border);background:var(--bg-card);flex-wrap:wrap;align-items:center;gap:8px 16px;padding:8px 16px;display:flex}.brand{align-items:baseline;gap:10px;min-width:0;display:flex}.wordmark{color:var(--status-passed);letter-spacing:-.01em;font-size:18px;font-weight:600}.header .title{min-width:0;color:inherit;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;text-decoration:none;overflow:hidden}.header .title:hover{text-decoration:underline}.run-status{border:1px solid;border-radius:999px;align-items:center;gap:4px;padding:1px 8px 1px 4px;font-size:12px;font-weight:600;display:inline-flex}.run-passed{color:var(--status-passed)}.run-failed,.run-timedout,.run-interrupted{color:var(--status-failed)}.counts{gap:12px;margin:0;padding:0;list-style:none;display:flex}.count{font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-weight:600;display:flex}.count.zero{font-weight:400}.count.zero .outcome-icon{color:var(--fg-secondary)}.count-link{color:inherit;border-radius:4px;align-items:center;gap:4px;margin:-2px -4px;padding:2px 4px;text-decoration:none;display:flex}.count-link:hover{background:var(--bg-muted)}.count-link:hover .count-value{text-decoration:underline}.run-meta{color:var(--fg-secondary);flex-wrap:wrap;gap:4px 16px;margin:0;font-size:13px;display:flex}.run-meta div{gap:4px;min-width:0;display:flex}.run-meta dt:after{content:":"}.run-meta dd{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.run-time{position:relative}.run-time dd{overflow:visible}.run-time time{-webkit-text-decoration:underline dotted var(--border-control);text-decoration:underline dotted var(--border-control);text-underline-offset:3px;cursor:help;border-radius:2px}.run-time-details{z-index:20;border:1px solid var(--border-control);background:var(--bg-card);box-shadow:var(--shadow);color:var(--fg);white-space:nowrap;border-radius:6px;flex-direction:column;gap:2px;margin-top:4px;padding:8px 10px;font-size:13px;display:none;position:absolute;top:100%;left:0}.run-time-details:before{content:"";height:6px;position:absolute;bottom:100%;left:0;right:0}.run-time:hover .run-time-details,.run-time:focus-within .run-time-details{display:flex}.run-time .run-time-details.dismissed{display:none}.header-tools{align-items:center;gap:8px;margin-left:auto;display:flex}.theme-switch{border:1px solid var(--border-control);border-radius:6px;display:flex}.theme-switch .icon-button{border-radius:0}.theme-switch .icon-button:first-child{border-radius:5px 0 0 5px}.theme-switch .icon-button:last-child{border-radius:0 5px 5px 0}.theme-switch [aria-pressed=true]{background:var(--bg-muted);color:var(--fg)}.icon-button{width:30px;height:30px;color:var(--fg-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:hover{background:var(--bg-muted);color:var(--fg)}.text-button{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:2px 6px;font-size:12px}.text-button:hover{background:var(--bg-card);color:var(--fg)}.banner{border-bottom:1px solid var(--border);background:var(--status-flaky-bg);color:var(--status-flaky);align-items:flex-start;gap:8px;padding:8px 16px;display:flex}.banner .icon{margin-top:2px}.banner p{margin:0}.outcome-icon{align-items:center;gap:6px;display:inline-flex}.outcome-passed{color:var(--status-passed)}.outcome-failed{color:var(--status-failed)}.outcome-flaky{color:var(--status-flaky)}.outcome-skipped{color:var(--status-skipped)}.outcome-text{font-weight:600}.badge{text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:20px;padding:0 6px;font-size:12px;font-weight:600;line-height:16px;display:inline-block}.badge-failed{color:var(--status-failed);border:1px solid}.category-badge{border:1px solid var(--cat-border);background:var(--cat-bg);max-width:100%;color:var(--cat-text);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-items:center;padding:0 8px;font-size:12px;font-weight:600;line-height:20px;display:inline-flex;overflow:hidden}.sidebar{border-right:1px solid var(--border);background:var(--bg-muted);flex-direction:column;flex:none;width:340px;max-width:85vw;display:flex;overflow:auto}.nav-fixed{border-bottom:1px solid var(--border);margin:0;padding:8px;list-style:none}.nav-link{color:inherit;border-radius:6px;align-items:center;gap:8px;padding:4px 8px;text-decoration:none;display:flex}.nav-link:hover{background:var(--bg-card)}.nav-link[aria-current=page]{background:var(--bg-card);box-shadow:inset 3px 0 0 var(--fg);font-weight:600}.nav-link .icon{color:var(--fg-secondary)}.nav-marker{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.nav-marker .icon{color:var(--status-failed)}.sidebar-search{z-index:2;border-bottom:1px solid var(--border);background:var(--bg-muted);padding:8px 8px 0;position:sticky;top:0}.search-field{align-items:center;margin-bottom:8px;display:flex;position:relative}.search-field>.icon{color:var(--fg-secondary);pointer-events:none;position:absolute;left:8px}.search-field input{border:1px solid var(--border-control);background:var(--bg-card);width:100%;min-height:32px;color:var(--fg);font:inherit;border-radius:6px;padding:4px 30px}.search-field input::placeholder{color:var(--fg-secondary);opacity:1}.search-field input:focus-visible{outline-offset:0}.search-key{border:1px solid var(--border-control);color:var(--fg-secondary);pointer-events:none;border-radius:4px;padding:0 5px;font-size:11px;line-height:16px;position:absolute;right:8px}.search-field input:focus~.search-key,.search-field input:not(:placeholder-shown)~.search-key{display:none}.filter-indicator p{color:var(--fg-secondary);flex-wrap:wrap;align-items:center;gap:4px;margin:-2px 0 8px;padding:0 4px;font-size:13px;display:flex}.filter-indicator a{color:var(--fg);font-weight:600}.filter-indicator .text-button{text-decoration:underline;-webkit-text-decoration-color:var(--border-control);text-decoration-color:var(--border-control);text-underline-offset:2px;margin-left:auto}.tree-section{padding:8px 0}.tree-toolbar{align-items:center;gap:2px;padding:0 8px 4px 16px;display:flex}.tree-toolbar h2{color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.04em;flex:1;margin:0;font-size:12px;font-weight:600}.tree-empty{color:var(--fg-secondary);padding:0 16px}.tree-prefix{color:var(--fg-secondary);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;margin:0 16px 4px;font-size:12px;overflow:hidden}.tree{margin:0;padding:0 8px;list-style:none}.tree-row{outline-offset:-2px;border-radius:6px}.row-content{min-height:28px;padding:2px 8px 2px calc((var(--level) - 1) * 16px + 8px);color:inherit;cursor:pointer;align-items:center;gap:6px;text-decoration:none;display:flex}.tree-row:hover{background:var(--bg-card)}.tree-test[aria-selected=true],.tree-row.revealed{background:var(--bg-card);box-shadow:inset 3px 0 0 var(--fg)}.tree-test[aria-selected=true]{font-weight:600}.chevron{color:var(--fg-secondary);transition:transform .1s}.tree-group[aria-expanded=true]>.row-content .chevron{transform:rotate(90deg)}.tree-project>.row-content{font-weight:600}.row-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-group .row-label{display:flex}.tree-group .label-part{text-overflow:ellipsis;white-space:pre;flex:0 auto;min-width:0;overflow:hidden}.label-part+.label-part:before{content:" › ";color:var(--fg-secondary)}.tree-group .file-name{display:flex}.tree-group .label-part+.label-part{flex-shrink:8}.name-head{text-overflow:ellipsis;min-width:0;overflow:hidden}.name-tail{flex:none}.row-note{color:var(--fg-secondary);font-size:12px;font-weight:400}.row-counts{flex:none;align-items:center;gap:6px;display:flex}.row-total{min-width:20px;color:var(--fg-secondary);text-align:right;font-variant-numeric:tabular-nums;font-size:12px}.page{padding:24px}.page h1{margin:0 0 12px;font-size:22px;line-height:1.3}.breadcrumb{color:var(--fg-secondary);overflow-wrap:anywhere;margin:0 0 4px;font-size:13px}.test-title{overflow-wrap:anywhere}pre.message{background:var(--bg-muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;margin:0;padding:8px 12px;overflow:auto}.run-errors{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.run-error{border:1px solid var(--border);border-left:3px solid var(--status-failed);background:var(--bg-card);border-radius:6px;padding:12px 16px}.run-error-meta{color:var(--fg-secondary);flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:13px;display:flex}.run-error pre{background:var(--bg-muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;margin:8px 0 0;padding:8px 12px;overflow:auto}.run-error details{margin-top:8px}.run-error summary{color:var(--fg-secondary);cursor:pointer}.load-error{max-width:640px;margin:48px auto;padding:0 16px}.load-error h1{color:var(--status-failed);font-size:20px}.page{container-type:inline-size}.view{flex-direction:column;gap:16px;display:flex}.view>*,.view h1{max-width:1280px}.view>h1{margin-bottom:0}.widget{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;min-width:0;padding:16px}.widget>h2{margin:0 0 12px;font-size:15px;line-height:1.3}.widget-note{color:var(--fg-secondary);margin:-8px 0 12px;font-size:13px}.widget-hint{color:var(--fg-secondary);margin:12px 0 0;font-size:13px}.widget-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.widget-list>li{border-top:1px solid var(--border)}.widget-list>li:first-child{border-top:0}.widget-more{margin:8px 0 0}.widget-grid{grid-template-columns:repeat(auto-fit,minmax(max(380px,50% - 8px),1fr));align-items:start;gap:16px;display:grid}.widget-grid>:last-child:nth-child(odd){grid-column:1/-1}@container (width<=900px){.widget-grid{grid-template-columns:minmax(0,1fr)}}.verdict{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 32px;display:flex}.verdict-outcome{align-items:center;gap:10px;margin:0;font-size:22px;font-weight:600;display:flex}.verdict-outcome .icon{width:28px;height:28px}.verdict-outcome.outcome-flaky{background:var(--status-flaky-bg);border-radius:8px;padding:2px 12px 2px 8px}.verdict-meta{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0}.verdict-meta strong{color:var(--fg)}.outcome-bar{border-radius:5px;gap:2px;height:10px;margin:12px 0 8px;display:flex;overflow:hidden}.outcome-bar-part{flex-basis:0;min-width:4px}.bar-passed{background:var(--status-passed)}.bar-failed{background:var(--status-failed)}.bar-flaky{background:var(--status-flaky)}.bar-skipped{background:var(--status-skipped)}.outcome-legend{color:var(--fg-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:4px 16px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.outcome-legend li{align-items:center;gap:4px;display:flex}.widget-run-errors{border-left:3px solid var(--status-failed)}.widget-run-errors h2{align-items:center;gap:8px;display:flex}.widget-run-errors h2 .icon{color:var(--status-failed)}.widget-run-errors .widget-list code{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.widget-run-errors .widget-list li{padding:6px 0}.group-row{color:inherit;flex-direction:column;gap:2px;padding:8px 4px;text-decoration:none;display:flex}.group-row:hover{background:var(--bg-muted)}.group-row-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;display:flex}.group-test{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-row:hover .group-test{text-decoration:underline}.group-message{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-count{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.group-split{font-variant-numeric:tabular-nums;white-space:nowrap;flex-wrap:wrap;gap:4px 12px;font-weight:600;display:inline-flex}.group-split-part{align-items:center;gap:4px;display:inline-flex}.group-row-counts{flex-wrap:wrap;align-items:center;gap:4px 10px;margin-left:auto;display:inline-flex}.group-attempts{color:var(--fg-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.category-bars{grid-template-columns:minmax(0,max-content) minmax(40px,1fr) auto;display:grid}.category-bars>li{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.category-bar-row{grid-column:1/-1;grid-template-columns:subgrid;color:inherit;align-items:center;gap:8px;padding:6px 4px;text-decoration:none;display:grid}.category-bar-row:hover{background:var(--bg-muted)}.category-bar-row .category-badge{justify-self:start}.category-bar-track{height:8px;display:block}.category-bar{background:var(--cat-border);border-radius:4px;min-width:4px;height:100%;display:block}.category-list>li>details>summary{cursor:pointer;align-items:center;gap:8px;padding:8px 4px;list-style:none;display:flex}.category-list>li>details>summary::-webkit-details-marker{display:none}.category-list>li>details>summary:hover{background:var(--bg-muted)}.category-list summary .chevron{transition:transform .1s}.category-list details[open]>summary .chevron{transform:rotate(90deg)}.category-list summary .group-count{margin-left:auto}.category-list .widget-list{margin:0 0 8px 28px}.project-cards{flex-wrap:wrap;gap:12px;margin:0;padding:0;list-style:none;display:flex}.project-cards>li{flex:240px;min-width:0}.project-card{border:1px solid var(--border-control);background:var(--bg-card);width:100%;height:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;gap:6px;padding:12px;display:flex}.project-card:hover{background:var(--bg-muted)}.project-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.project-card .counts{flex-wrap:wrap;font-size:13px}.project-meta{color:var(--fg-secondary);font-size:13px}.data-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.data-table th,.data-table td{border-top:1px solid var(--border);text-align:right;vertical-align:top;padding:6px 8px}.data-table thead th{color:var(--fg-secondary);border-top:0;font-size:12px;font-weight:600}.data-table thead th .outcome-icon{justify-content:flex-end}.data-table th:first-child,.data-table td:first-child{text-align:left}.data-table .zero{color:var(--fg-secondary)}.data-table tbody th{overflow-wrap:anywhere;font-weight:400}.dimension-bars{grid-template-columns:minmax(0,max-content) minmax(60px,1fr) auto auto;align-items:center;gap:0 12px;margin:0;padding:0;list-style:none;display:grid}.dimension-bar-row{grid-column:1/-1;grid-template-columns:subgrid;border-top:1px solid var(--border);align-items:center;padding:6px 0;display:grid}.dimension-bar-row:first-child{border-top:0}.dimension-value-cell{overflow-wrap:anywhere;min-width:0}a.dimension-value{font-weight:600}.dimension-bar{height:10px;margin:0}.dimension-bar:empty{background:var(--bg-muted)}.dimension-bar-counts{justify-content:flex-end;gap:10px;font-size:13px;display:flex}.dimension-bar-counts .count{font-weight:600}.dimension-total{min-width:28px;color:var(--fg-secondary);text-align:right;font-variant-numeric:tabular-nums;font-size:13px}.tile-summary{margin:0 0 10px;font-size:13px}.dimension-tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.dimension-tiles>li{min-width:0;display:flex}.dimension-tile{color:inherit;border:1px solid var(--border);border-left:4px solid var(--tile-color);background:var(--bg-card);cursor:pointer;border-radius:6px;flex:1;align-items:center;gap:6px;min-width:0;padding:6px 8px;font-size:13px;text-decoration:none;display:flex;position:relative}span.dimension-tile{cursor:default}.dimension-tile:hover,.dimension-tile:focus-visible{background:var(--bg-muted)}.tile-failed{--tile-color:var(--status-failed)}.tile-flaky{--tile-color:var(--status-flaky);background:var(--status-flaky-bg)}.tile-passed{--tile-color:var(--status-passed)}.tile-skipped,.tile-none{--tile-color:var(--status-skipped)}.tile-failed .tile-value,.tile-flaky .tile-value{font-weight:600}.tile-value{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tile-icon-none{border:1.4px dashed var(--status-skipped);border-radius:50%;flex:none;width:16px;height:16px}.tile-flag{color:var(--status-flaky)}.tile-details{z-index:5;border:1px solid var(--border-control);background:var(--bg-card);min-width:180px;max-width:280px;box-shadow:var(--shadow);color:var(--fg);overflow-wrap:anywhere;border-radius:6px;flex-direction:column;gap:2px;padding:8px 10px;font-weight:400;display:none;position:absolute;bottom:calc(100% + 6px);left:0}.tooltip-open .tile-details{display:flex}.tile-details:after{content:"";height:8px;position:absolute;top:100%;left:0;right:0}.tile-note{color:var(--status-flaky)}.dimension-table{margin-top:12px}.dimension-table>summary{color:var(--fg-secondary);cursor:pointer;align-items:center;gap:4px;font-size:13px;list-style:none;display:inline-flex}.dimension-table>summary::-webkit-details-marker{display:none}.dimension-table>summary:hover{color:var(--fg)}.dimension-table[open]>summary .chevron{transform:rotate(90deg)}.dimension-table>.data-table{margin-top:8px}.pass-rate{cursor:help}.pass-rate strong{color:var(--fg)}.hygiene-flag{color:var(--status-flaky);align-items:center;gap:4px;margin-top:2px;font-size:12px;display:flex}.test-line{align-items:center;gap:8px;padding:6px 0;display:flex}.test-line .test-text{flex:1;min-width:0}.test-line .test-text a{overflow-wrap:anywhere}.test-line .test-where{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}.test-line .duration{font-variant-numeric:tabular-nums;flex:none}.skip-kind{border:1px solid var(--border-control);text-transform:uppercase;border-radius:4px;padding:0 6px;font-size:11px;font-weight:600}.flaky-error{align-items:center;gap:8px;min-width:0;margin-top:2px;display:flex}.flaky-error code{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-meta{flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 16px;display:flex}.group-meta div{align-items:center;gap:6px;display:flex}.group-meta dt{color:var(--fg-secondary)}.group-meta dd{margin:0}.group-page h2{margin:24px 0 8px;font-size:16px}.affected-tests{border-collapse:collapse;width:100%}.affected-tests th,.affected-tests td{border-top:1px solid var(--border);text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:6px 8px}.affected-tests thead th{color:var(--fg-secondary);border-top:0;font-size:12px;font-weight:600}.affected-tests .test-cell{align-items:flex-start;gap:6px;display:flex}.filter-bar{flex-direction:column;gap:10px;display:flex}.facets{flex-wrap:wrap;gap:8px;display:flex}.facet{position:relative}.facet-button{border:1px solid var(--border-control);background:var(--bg-card);cursor:pointer;border-radius:6px;align-items:center;gap:6px;min-height:32px;padding:4px 8px 4px 12px;list-style:none;display:inline-flex}.facet-button::-webkit-details-marker{display:none}.facet-button:hover{background:var(--bg-muted)}.facet-button .chevron{transition:transform .1s;transform:rotate(90deg)}.facet[open]>.facet-button .chevron{transform:rotate(-90deg)}.facet-selected{background:var(--fg);min-width:20px;color:var(--bg-card);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 6px;font-size:12px;font-weight:600;line-height:18px}.facet-menu{z-index:15;border:1px solid var(--border-control);background:var(--bg-card);min-width:220px;max-width:min(360px,90vw);max-height:360px;box-shadow:var(--shadow);border-radius:6px;flex-direction:column;margin:0;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0;overflow:auto}.facet-option{cursor:pointer;border-radius:4px;align-items:center;gap:8px;min-height:30px;padding:2px 8px;display:flex}.facet-option:hover{background:var(--bg-muted)}.facet-option input{width:16px;height:16px;accent-color:var(--fg);flex:none;margin:0}.facet-option .facet-value,.facet-option .category-badge{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.facet-count{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin-left:auto;padding-left:12px;font-size:12px}.facet-option-empty>:not(input):not(.facet-count){opacity:.7}.filter-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.filter-chips ul{display:contents}.filter-chips li{list-style:none;display:flex}.chip{border:1px solid var(--border-control);background:var(--bg-muted);max-width:320px;color:var(--fg);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 6px 2px 10px;font-size:13px;display:inline-flex}.chip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip .icon{color:var(--fg-secondary)}.chip:hover .icon{color:var(--fg)}.result-count{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0}.empty-state{border:1px dashed var(--border-control);border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:24px;display:flex}.empty-state p{margin:0}.button{border:1px solid var(--border-control);background:var(--bg-card);min-height:32px;color:var(--fg);font:inherit;cursor:pointer;border-radius:6px;padding:4px 12px}.button:hover{background:var(--bg-muted)}.view-tests>.table-scroll{max-width:none}.table-scroll{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;overflow-x:auto}.tests-table{border-collapse:collapse;width:100%;font-size:13px}.tests-table th,.tests-table td{border-top:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}.tests-table thead th{background:var(--bg-card);white-space:nowrap;border-top:0;position:sticky;top:0}.tests-table .numeric{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.tests-table tbody tr:hover{background:var(--bg-muted)}.tests-table .outcome-icon{white-space:nowrap}.cell-title{overflow-wrap:anywhere;min-width:240px}.cell-project{white-space:nowrap}.category-badges{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.category-more{color:var(--fg-secondary);cursor:help;font-size:12px;font-weight:600}.table-more{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.table-more p{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0 8px 0 0}.sort-button{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:2px;margin:-2px -4px;padding:2px 4px;font-size:12px;font-weight:600;display:inline-flex}.numeric .sort-button{flex-direction:row-reverse}.sort-button:hover{background:var(--bg-muted);color:var(--fg)}[aria-sort]>.sort-button{color:var(--fg)}.sort-idle{opacity:.5}.copy-button{align-items:center;gap:6px;display:inline-flex}.copy-button .icon,.copy-done{color:var(--fg-secondary)}.rerun-failed{flex-wrap:wrap;align-items:center;gap:4px 12px;display:flex}.rerun-note{color:var(--fg-secondary);margin:0;font-size:13px}.widget-verdict .rerun-failed{margin-top:12px}.pager{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.pager-button{align-items:center;gap:4px;display:inline-flex}.pager-button:disabled{color:var(--fg-secondary);cursor:default}.pager-button:disabled:hover{background:var(--bg-card)}.pager-position{color:var(--fg-secondary);font-variant-numeric:tabular-nums}.chevron-back{transform:rotate(180deg)}.test-page{flex-direction:column;max-width:1280px;display:flex}.test-header{flex-direction:column;gap:10px;display:flex}.test-header h1{margin:0}.title-suite{color:var(--fg-secondary);font-weight:400}.test-summary{flex-wrap:wrap;align-items:center;gap:4px 16px;display:flex}.test-summary code{overflow-wrap:anywhere}.test-meta{flex-wrap:wrap;gap:6px 24px;margin:0;font-size:13px;display:flex}.test-meta div{align-items:baseline;gap:6px;display:flex}.test-meta dt{color:var(--fg-secondary)}.test-meta dd{margin:0}.chips{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.tag{border:1px solid var(--border-control);background:var(--bg-card);overflow-wrap:anywhere;border-radius:999px;padding:0 8px;font-size:12px;line-height:20px}.test-actions{flex-wrap:wrap;gap:8px;display:flex}.attempt-tabs{border-bottom:1px solid var(--border-control);flex-wrap:wrap;gap:4px;margin-top:20px;display:flex}.attempt-tab{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px 6px 0 0;align-items:center;gap:6px;margin-bottom:-1px;padding:6px 12px;display:inline-flex}.attempt-tab:hover{background:var(--bg-muted);color:var(--fg)}.attempt-tab[aria-selected=true]{border-color:var(--border-control) var(--border-control) var(--bg);background:var(--bg);color:var(--fg);font-weight:600}.attempt-duration{color:var(--fg-secondary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400}.attempt-panel{flex-direction:column;gap:16px;margin-top:16px;display:flex}.detail-section{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;flex-direction:column;gap:10px;min-width:0;padding:16px;display:flex}.detail-section h2{margin:0;font-size:15px}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.toggle-button[aria-pressed=true]{background:var(--bg-muted);box-shadow:inset 0 0 0 1px var(--fg)}.error-card{border:1px solid var(--border);border-left:3px solid var(--status-failed);border-radius:6px;flex-direction:column;gap:8px;padding:12px;display:flex}.error-head{flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:13px;display:flex}.error-location{color:var(--fg-secondary);overflow-wrap:anywhere}.error-group-link{margin-left:auto}pre.code-snippet,pre.stack,.output-block pre,.attachment-body pre{background:var(--bg-muted);border-radius:6px;margin:0;padding:8px 12px;overflow:auto}pre.stack,.output-block pre,.attachment-body pre{white-space:pre-wrap;overflow-wrap:anywhere}.tone-expected{color:var(--diff-expected)}.tone-received{color:var(--diff-received)}.tone-marker{color:var(--status-failed);font-weight:600}.tone-strong{font-weight:600}.stack-details>summary,.attachment-body>summary,.output-block>summary{color:var(--fg-secondary);cursor:pointer;flex-wrap:wrap;align-items:center;gap:6px;list-style:none;display:inline-flex}.stack-details>summary::-webkit-details-marker{display:none}.attachment-body>summary::-webkit-details-marker{display:none}.output-block>summary::-webkit-details-marker{display:none}.stack-details>summary:hover,.attachment-body>summary:hover,.output-block>summary:hover{color:var(--fg)}.stack-details[open]>summary .chevron,.attachment-body[open]>summary .chevron,.output-block[open]>summary .chevron{transform:rotate(90deg)}.stack-details>pre,.attachment-body>pre,.output-block>pre{margin-top:6px}.step-list{margin:0;padding:0;list-style:none}.step-list .step-list{border-left:1px solid var(--border);margin-left:22px;padding-left:0}.step-row{border-radius:4px;align-items:center;gap:6px;min-height:28px;padding:2px 6px 2px 2px;display:flex}.step-row:hover{background:var(--bg-muted)}.step-failing-path>.step-row{box-shadow:inset 3px 0 0 var(--status-failed)}.step-failing>.step-row{background:var(--bg-muted);font-weight:600}.step-toggle{width:22px;height:22px;color:var(--fg-secondary);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.step-toggle:hover{background:var(--bg-card);color:var(--fg)}.step-toggle[aria-expanded=true] .chevron{transform:rotate(90deg)}.step-toggle-space{flex:none;width:22px}.step-icon-space{flex:none;width:16px}.step-text{overflow-wrap:anywhere;flex:1;min-width:0}.step-subtitle{color:var(--fg-secondary);font-family:var(--font-mono);font-size:12.5px;font-weight:400}.step-category{border:1px solid var(--border-control);color:var(--fg-secondary);white-space:nowrap;border-radius:4px;margin-left:8px;padding:0 6px;font-size:11px;font-weight:400}.step-location{max-width:40%;color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;flex:none;font-weight:400;overflow:hidden}.step-duration{min-width:56px;color:var(--fg-secondary);text-align:right;font-variant-numeric:tabular-nums;flex:none;font-size:12px;font-weight:400}pre.step-error{margin:2px 0 6px 50px;font-weight:400}.attachment-groups{flex-direction:column;gap:12px;display:flex}.attachment-group h3{margin:0 0 4px;font-size:13px}.attachment-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.attachment-file{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.attachment-name{overflow-wrap:anywhere}.attachment-body .attachment-name{color:var(--fg)}.attachment-meta{color:var(--fg-secondary);font-size:12px}.output-block>summary .output-name{color:var(--fg);font-family:var(--font-mono)}.output-truncated{color:var(--status-flaky);border:1px solid;border-radius:4px;padding:0 6px;font-size:11px;font-weight:600}.output-notice{color:var(--status-flaky);margin:6px 0 0;font-size:13px}.dialog{border:1px solid var(--border-control);background:var(--bg-card);width:min(640px,100vw - 32px);max-height:calc(100vh - 64px);box-shadow:var(--shadow);color:var(--fg);border-radius:8px;padding:16px 20px 20px}.dialog::backdrop{background:#0006}.dialog-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.dialog-head h2{margin:0;font-size:16px}.dialog-note{color:var(--fg-secondary);margin:12px 0 0;font-size:13px}.copy-dialog .dialog-note{margin:0 0 8px}.copy-text{border:1px solid var(--border-control);background:var(--bg-muted);width:100%;color:var(--fg);font-family:var(--font-mono);resize:vertical;border-radius:6px;padding:8px;font-size:12.5px}.shortcuts-table{border-collapse:collapse;width:100%;font-size:13px}.shortcuts-table th,.shortcuts-table td{border-top:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 8px}.shortcuts-table thead th{color:var(--fg-secondary);border-top:0;font-size:12px;font-weight:600}.shortcuts-table td:first-child{white-space:nowrap}.shortcuts-table kbd{border:1px solid var(--border-control);background:var(--bg-muted);border-radius:4px;padding:0 5px;font-size:12px}.footer{border-top:1px solid var(--border);color:var(--fg-secondary);padding:16px 24px;font-size:12px}@media (width<=760px){.header{padding:8px 12px}.run-meta{order:10;width:100%}.sidebar{z-index:10;box-shadow:var(--shadow);position:absolute;inset:0 auto 0 0}.page{padding:16px}.footer{padding:12px 16px}.affected-tests thead{display:none}.affected-tests tr{border-top:1px solid var(--border);padding:6px 0;display:block}.affected-tests td{border:0;padding:2px 0;display:block}.run-time-details{white-space:normal}.step-location{display:none}pre.step-error,.error-group-link{margin-left:0}}
|
|
11
16
|
/*$vite$:1*/</style>
|
|
12
17
|
</head>
|
|
13
18
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qartisan/playwright-loupe",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "HTML reporter for Playwright: dashboard, error groups by normalized signature, tests by project and suite, dimensions from tags and annotations.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"playwright",
|