@qartisan/playwright-loupe 0.0.4 → 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 CHANGED
@@ -4,6 +4,44 @@ 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
+
34
+ ## [0.0.5] 2026-10-17
35
+
36
+ ### Added
37
+
38
+ - **Attempts on error group rows.** When an affected test ran more than once, a group row says how many of the attempts failed with that error: `failed on 2 of 2 attempts` (same failure on the retry), `failed on 1 of 2 attempts` (the retry passed or failed differently; the test then also appears in the other group). For several tests the counts add up (`failed on 5 of 7 attempts`). Nothing is added when every test ran once.
39
+
40
+ ### Changed
41
+
42
+ - **Error signatures: UUIDs glued to a prefix are now recognized.** A UUID used to be replaced only between word boundaries, and `_` is a word character, so in `evt_3f2b8c1e-…` it was not replaced and a test and its retry could get two signatures for the same failure. A UUID is now replaced when it does not touch a hex digit, directly or through a hyphen: `evt_<uuid>`, `req-<uuid>`, `id=<uuid>` and a bare UUID are replaced; a UUID-like part of a longer hex run (`abc-<uuid>`, and `id<uuid>`, since `d` is a hex digit) is not. Messages with such UUIDs get a new signature, so their groups differ from 0.0.4; other signatures are unchanged (none of the fixture suite's). The JSON shape is unchanged: `schemaVersion` stays `1`. See [Error signature](docs/schema/v1.md#error-signature).
43
+ - **No repeated category badge inside a category.** In the Errors view, the error groups listed under a category (also on `#/errors/category/<name>`) no longer repeat its badge; lists that mix categories keep it.
44
+
7
45
  ## [0.0.4] - 2026-10-17
8
46
 
9
47
  ### 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
- - Test detail: error, steps, and attachments per attempt (screenshots, video, trace), copyable rerun command and AI prompt.
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. No Playwright run needed for UI work. |
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`.
@@ -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;
@@ -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
  }
@@ -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
  }
@@ -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);
@@ -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
  /**
@@ -6,6 +6,7 @@ export const DEFAULT_RENDERER_SETTINGS = {
6
6
  title: 'Loupe report',
7
7
  theme: 'system',
8
8
  screenshots: { defaultView: 'side-by-side' },
9
+ aiPrompt: { includeStack: true },
9
10
  };
10
11
  const UNSAFE_CHARS = {
11
12
  '<': '\\u003c',
@@ -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 });
@@ -51,7 +51,11 @@ export function stripMergeTagPrefix(text) {
51
51
  * docs/schema/v1.md.
52
52
  */
53
53
  const REPLACEMENTS = [
54
- [/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi, '<uuid>'],
54
+ // Not delimited by \b: `_` is a word character, so `evt_<uuid>` would not
55
+ // match. A UUID must not touch a hex digit, directly or through a hyphen:
56
+ // `evt_<uuid>`, `req-<uuid>` and `<uuid>-x` match; a UUID-like part of a
57
+ // longer hex run (`a<uuid>`, `abc-<uuid>`, `<uuid>-abc`) does not.
58
+ [/(?<![0-9a-f])(?<![0-9a-f]-)[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(?![0-9a-f])(?!-[0-9a-f])/gi, '<uuid>'],
55
59
  [/\b[a-z][a-z0-9+.-]*:\/\/[^\s'"`<>()[\]{}]*[^\s'"`<>()[\]{}.,;:!?]/gi, '<url>'],
56
60
  // Local part, then a domain with at least one dot and an alphabetic TLD.
57
61
  [/(?<![\w.%+-])[\w.%+-]+@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\.[a-z]{2,}(?![\w-])/gi, '<email>'],
@@ -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 ut(e,n){t[e]=n.bind(null,t[e]||function(){})}function dt(e){if(st){var t=st;st=void 0,t()}st=e&&e.S()}function ft(e){var t=this,n=e.data,i=mt(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=_t,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}ft.displayName=`ReactiveTextNode`,Object.defineProperties(I.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:ft},props:{configurable:!0,get:function(){var e=this;return{data:{get value(){return e.value}}}}},__b:{configurable:!0,value:1}}),ut(`__b`,function(e,t){if(dt(),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)}),ut(`__r`,function(e,t){if(e(t),t.type!==S){dt();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:``))),dt(n)}}),ut(`__e`,function(e,t,n,r){dt(),e(t,n,r)}),ut(`diffed`,function(e,t){dt();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=pt(n,c,u,i),a[c]=l):l.o(u,i)}}e(t)});function pt(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=_t;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))})}}ut(`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)}),ut(`__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 mt(e,t){return N(function(){return L(e,t)},[])}var ht=function(e){queueMicrotask(function(){queueMicrotask(e)})};function gt(){Ve(function(){for(var e;e=lt.shift();)ot.call(e)})}function _t(){lt.push(this)===1&&(t.requestAnimationFrame||ht)(gt)}function vt(e){try{return window.localStorage.getItem(e)}catch{return null}}function yt(e,t){try{window.localStorage.setItem(e,t)}catch{}}var bt=`loupe.sidebar`,xt=`(max-width: 760px)`;function St(){return window.matchMedia(xt).matches}var z=L(!St()&&vt(bt)!==`closed`);function Ct(){z.value=!z.value,St()||yt(bt,z.value?`open`:`closed`)}var wt=L(null);function Tt(e){z.value=!0,wt.value={key:e,seq:(wt.value?.seq??0)+1}}var Et=/^(0|[1-9]\d*)$/,Dt={"run-errors":{page:`errors`}};function Ot(e){try{return decodeURIComponent(e)}catch{return null}}function kt(e){return Ot(e)??e}function At(e){let t=e.split(`/`).filter(e=>e!==``).map(Ot);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(Dt,n))return Dt[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&&Et.test(a))return{page:`test`,id:r,repeatEachIndex:Number(a)}}return{page:`not-found`,path:e}}function jt(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:At(r),search:i}}function Mt(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 B(e){return`#${Mt(e.route)}${e.search?`?${e.search}`:``}`}function Nt(e){let t=((e.startsWith(`#`)?e.slice(1):e).split(`?`)[0]??``).split(`/`).filter(e=>e!==``);return t.length!==1||!Object.hasOwn(Dt,kt(t[0]))?null:B(jt(e))}var Pt=e=>e;function Ft(){let e=window.location.hash,t=jt(e),n={route:t.route,search:Pt(t.search)};return(Nt(e)!==null||n.search!==t.search)&&window.history.replaceState(window.history.state,``,B(n)),n}var V=L(Ft());function It(){let e=Ft();B(e)!==B(V.value)&&(V.value=e)}window.addEventListener(`hashchange`,It),window.addEventListener(`popstate`,It);function Lt(e){Pt=e,It()}function H(e){return B({route:e,search:V.value.search})}function Rt(e){window.location.hash=H(e)}function zt(e,t){let n=B(e);n!==B(V.value)&&(t===`push`?window.history.pushState(null,``,n):window.history.replaceState(window.history.state,``,n),V.value=e)}var Bt=[`passed`,`failed`,`flaky`,`skipped`];function Vt(e,t){return t.status!==e.expectedStatus&&t.status!==`skipped`}function Ht(e){let t=new Map;for(let n of e.tests)for(let e of n.attempts)if(Vt(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 Ut(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 Wt(e){return e.split(`
8
- `).find(e=>e.trim()!==``)?.trim()??``}var Gt=/^(?:Error: )?(?:expect(?:\.soft|\.poll)?\(\w+\)\.(?:not\.)?\w+\([^)]*\)(?: failed)?|Timed out \d+ms waiting for expect\(.*)$/,Kt=/^\s*Locator:\s+(.+?)\s*$/m,qt=/^\s*(?:- )?\u2190 (\d{3}\b.*?)\s*$/m;function Jt(e){let t=Wt(e);if(!Gt.test(t))return t;let n=Kt.exec(e);if(n)return`Locator: ${n[1]}`;let r=qt.exec(e);return r?`\u2190 ${r[1]}`:t}function Yt(e){return{headline:Jt(e.message),firstTest:e.tests[0]?.test??null,others:Math.max(0,e.tests.length-1)}}function Xt(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 Zt(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 Qt(e){return Bt.filter(t=>e[t]>0).map(t=>({outcome:t,count:e[t],share:e.total>0?e[t]/e.total:0}))}function $t(e){let t=e.total-e.skipped;return t>0?e.passed/t:null}var en=`Pass rate: passed / (total − skipped). Skipped tests are excluded; flaky tests do not count as passed.`;function tn(e){let t=e*100;return t>99&&t<100?`99%`:t>0&&t<1?`<1%`:`${Math.round(t)}%`}function nn(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:$t(t.stats),durationMs:n}})}function rn(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=un(s.map(e=>e.value));for(let e of s)e.caseVariants=c.get(e.value)??[];return{definition:t,values:s,without:i}})}function an(e){return e.values.length<=8?`bars`:`tiles`}function on(e){return e.failed>0?`failed`:e.flaky>0?`flaky`:e.passed>0?`passed`:e.skipped>0?`skipped`:`none`}var sn={failed:0,flaky:1,passed:2,skipped:3,none:4};function cn(e){return e.map((e,t)=>({row:e,index:t,status:on(e)})).sort((e,t)=>sn[e.status]-sn[t.status]||t.row.failed-e.row.failed||t.row.flaky-e.row.flaky||e.index-t.index).map(({row:e})=>e)}function ln(e){let t=t=>e.filter(e=>on(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 un(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 dn(e){return e.tests.filter(e=>e.outcome===`flaky`).map(e=>({test:e,error:e.attempts.find(t=>Vt(e,t))?.errors[0]??null}))}function fn(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 pn=[`skip`,`fixme`];function mn(e){return e.tests.filter(e=>e.outcome===`skipped`).map(e=>{let t=[...e.annotations,...e.attempts[e.attempts.length-1]?.annotations??[]].find(e=>pn.includes(e.type));return{test:e,kind:t?t.type:null,reason:t?.description?.trim()||null}})}var hn=/^@([^:\s]+):(.+)$/;function gn(e){let t=hn.exec(e);return t?{prefix:t[1]??``,value:t[2]??``}:null}var _n=[`status`,`title`,`project`,`file`,`duration`,`category`,`attempts`],vn={column:`status`,direction:`asc`};function U(e){return Tn(Object.keys(e)).map(t=>[t,e[t]??[]]).filter(([,e])=>e.length>0)}var yn={q:``,facets:{},sort:vn},bn=[`status`,`project`,`tag`],xn=`dim.`;function Sn(e){return`${xn}${e}`}function Cn(e){return e.startsWith(xn)?e.slice(4):null}function wn(e,t){return e<t?-1:+(e>t)}function Tn(e){let t=e=>e===`category`?4:Cn(e)===null?bn.indexOf(e):3;return[...e].sort((e,n)=>t(e)-t(n)||wn(e,n))}function En(e){try{return decodeURIComponent(e.replace(/\+/g,` `))}catch{return null}}function Dn(e){let[t,n,...r]=e.split(`:`);return r.length>0||!_n.includes(t??``)||n!==`asc`&&n!==`desc`?null:{column:t,direction:n}}function On(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=vn;for(let e of n.split(`&`)){if(e===``)continue;let n=e.indexOf(`=`),o=En(n===-1?e:e.slice(0,n)),s=n===-1?``:e.slice(n+1);if(o===null)continue;if(o===`q`){i=En(s)??``;continue}if(o===`sort`){a=Dn(En(s)??``)??a;continue}if(!(bn.includes(o)||o===`category`||o.startsWith(xn)&&o.length>4))continue;let c=o,l=t?.get(c);if(!t||l)for(let e of s.split(`,`)){let t=En(e);t===null||t===``||l&&!l.has(t)||(r[c]??=[]).push(t)}}return kn({q:i,facets:r,sort:a})}function kn(e){let t={};for(let[n,r]of U(e.facets))t[n]=[...new Set(r)].sort(wn);return{q:e.q,facets:t,sort:e.sort}}function An(e){return e.column===vn.column&&e.direction===vn.direction}function jn(e){let t=kn(e),n=[],r=t.q.trim();r!==``&&n.push(`q=${encodeURIComponent(r)}`);for(let[e,r]of U(t.facets))n.push(`${encodeURIComponent(e)}=${r.map(encodeURIComponent).join(`,`)}`);return An(t.sort)||n.push(`sort=${t.sort.column}:${t.sort.direction}`),n.join(`&`)}function Mn(e){return(e.q.trim()===``?0:1)+U(e.facets).reduce((e,[,t])=>e+t.length,0)}function Nn(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 Pn(e){return{...yn,sort:e.sort}}var Fn={dimensionTagPrefixes:new Set};function In(e){return{dimensionTagPrefixes:new Set(e.dimensions.filter(e=>e.source===`tag`).map(e=>e.key))}}function Ln(e,t){return t.dimensionTagPrefixes.size===0?[...e]:e.filter(e=>{let n=gn(e);return n===null||!t.dimensionTagPrefixes.has(n.prefix)})}function Rn(e){return e.normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase()}function zn(e){return Rn(e).split(/\s+/).filter(e=>e!==``)}function Bn(e){let t=new Set;for(let n of e.attempts)if(Vt(e,n))for(let e of n.errors)t.add(e.category??`Uncategorized`);return[...t]}var Vn=new WeakMap;function Hn(e){let t=Vn.get(e);return t||(t={haystack:Rn([[...e.suitePath,e.title].join(` › `),e.file,e.project].join(`
9
- `)),categories:Bn(e)},Vn.set(e,t)),t}function Un(e){return Hn(e).categories}function Wn(e){let t=Un(e),n=e.category!==null&&t.includes(e.category)?e.category:t[0]??null;return{primary:n,others:t.filter(e=>e!==n)}}function Gn(e,t,n=Fn){switch(t){case`status`:return[e.outcome];case`project`:return[e.project];case`tag`:return Ln(e.tags,n);case`category`:return Un(e);default:return e.dimensions[Cn(t)??``]??[]}}function Kn(e,t){if(t.length===0)return!0;let{haystack:n}=Hn(e);return t.every(e=>n.includes(e))}function qn(e,t,n,r){if(n.length===0)return!0;let i=Gn(e,t,r);return n.some(e=>i.includes(e))}function Jn(e,t,n=Fn){let r=zn(t.q),i=U(t.facets);return e.filter(e=>Kn(e,r)&&i.every(([t,r])=>qn(e,t,r,n)))}function Yn(e,t,n,r=Fn){let i=new Map;for(let[e,t]of n)i.set(e,new Map([...t].map(e=>[e,0])));let a=zn(t.q),o=U(t.facets),s=(e,t)=>{let n=i.get(t);if(n)for(let i of new Set(Gn(e,t,r))){let e=n.get(i);e!==void 0&&n.set(i,e+1)}};for(let t of e){if(!Kn(t,a))continue;let e=null,i=0;for(let[n,a]of o)if(!qn(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 Xn(e){let t=In(e),n=n=>new Set(e.tests.flatMap(e=>Gn(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`,...Bt.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=Sn(t.name);a(e,r(t.values??[],n(e)))}return i}var Zn=L(new Map),Qn=L(Fn);function $n(e){Zn.value=Xn(e),Qn.value=In(e),Lt(e=>jn(On(e,Zn.value)))}var er=et(()=>On(V.value.search,Zn.value));function tr(e,t=V.value.route){return B({route:t,search:jn(e)})}function W(e,t=`push`,n=V.value.route){zt({route:n,search:jn(e)},t)}function nr(e){return e.replace(/\\/g,`/`)}function rr(e){let t=null;for(let n of e){let e=nr(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 ir(e,t){let n=nr(e);return t!==``&&n.startsWith(t)?n.slice(t.length):n}var ar=4;function or(e){let t=/(?:\.[^./]{1,6}){1,2}$/.exec(e.slice(1))?.[0]??``,n=e.slice(0,e.length-t.length),r=n.length>12?ar:0;return[n.slice(0,n.length-r),`${n.slice(n.length-r)}${t}`]}var sr=[{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`}}],cr={name:`neutral`,reference:`#6b6b6b`,light:{text:`#636363`,bg:`#f0f0f0`,border:`#868686`},dark:{text:`#bebebe`,bg:`#242424`,border:`#808080`}};sr.map(e=>e.name);function lr(e){let t=e.toLowerCase();return[...sr,cr].find(e=>e.reference===t)??null}var ur={light:[`#f7f5f0`,`#ffffff`,`#eeeae2`],dark:[`#080808`,`#0d0d0d`,`#161616`]},dr=4.5,fr=/^#[0-9a-fA-F]{6}$/;function pr(e){return fr.test(e)}function mr(e){if(!pr(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 hr([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 _r(e){return(e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055)*255}function vr(e){let[t,n,r]=mr(e).map(gr);return .2126*t+.7152*n+.0722*r}function yr(e,t){let[n,r]=[vr(e),vr(t)].sort((e,t)=>t-e);return(n+.05)/(r+.05)}function br(e){let[t,n,r]=mr(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 Sr(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 hr(n.map(e=>_r(Math.min(1,Math.max(0,e)))));t=Math.max(0,t-.005)}}function Cr(e,t,n,r){let i=t<n?.01:-.01;for(let a=t;i>0?a<=n:a>=n;a+=i){let t=Sr({...e,l:a});if(r(t))return t}return Sr({...e,l:n})}function wr(e,t){let n=br(e),r=n.c<.02?0:n.c,i=ur[t];if(t===`light`){let e=Sr({...n,l:.955,c:Math.min(r,.03)});return{text:Cr({...n,c:Math.min(r,.16)},.5,0,t=>yr(t,e)>=dr),bg:e,border:Cr({...n,c:Math.min(r,.18)},.66,0,t=>[e,...i].every(e=>yr(t,e)>=3))}}let a=Sr({...n,l:.26,c:Math.min(r,.05)});return{text:Cr({...n,c:Math.min(r,.12)},.8,1,e=>yr(e,a)>=dr),bg:a,border:Cr({...n,c:Math.min(r,.14)},.6,1,e=>[a,...i].every(t=>yr(e,t)>=3))}}var Tr=new Map;function Er(e){let t=e&&pr(e)?e.toLowerCase():cr.reference,n=Tr.get(t);if(!n){let e=lr(t);n=e?{light:e.light,dark:e.dark}:{light:wr(t,`light`),dark:wr(t,`dark`)},Tr.set(t,n)}return n}function Dr(e){let{light:t,dark:n}=Er(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 Or(e){return new Map(e.map(e=>[e.name,e.color]))}function kr(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 Ar=`\0`,jr={project:`p`,folder:`d`,file:`f`,suite:`s`};function Mr(){return{total:0,passed:0,failed:0,flaky:0,skipped:0}}function Nr(e,t){return`t${Ar}${e}${Ar}${t}`}function Pr(e){return`p${Ar}${e}`}function Fr(e,t,n,r){let i={kind:e,key:t,labels:[n],children:[],counts:Mr(),line:1/0};return r!==void 0&&(i.path=r),i}function Ir(e,t){return e.kind===`folder`==(t.kind===`folder`)?Rr(e).localeCompare(Rr(t)):e.kind===`folder`?-1:1}function Lr(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?Rr(e).localeCompare(Rr(t)):e.kind===`test`?1:-1:e.line-t.line}function Rr(e){return e.kind===`test`?e.title:e.labels.join(` › `)}function zr(e){for(let t of e.children){if(t.kind===`test`)e.counts.total+=1,e.counts[t.outcome]+=1;else{zr(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(Ir):e.children.sort(Lr)}function Br(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:Br(e))}}function Vr(e,t={}){let n=t.prefix??rr(e.tests.map(e=>e.file)),r=new Map;for(let t of e.projects)r.set(t.name,Fr(`project`,Pr(t.name),t.name||`(unnamed project)`));let i=new Map;for(let t of e.tests){let e=r.get(t.project);e||(e=Fr(`project`,Pr(t.project),t.project||`(unnamed project)`),r.set(t.project,e));let a=ir(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,nr(t.file)],...t.suitePath.map(e=>[`suite`,e])];for(let[t,n,r]of s){let a=`${e.key}${Ar}${jr[t]}${Ar}${n}`,o=i.get(a);o||(o=Fr(t,a,n,r),i.set(a,o),e.children.push(o)),e=o}e.children.push(Hr(t))}let a=[...r.values()].filter(e=>e.children.length>0);for(let e of a)zr(e);return a.map(Br)}function Hr(e){return{kind:`test`,key:Nr(e.id,e.repeatEachIndex),testId:e.id,repeatEachIndex:e.repeatEachIndex,title:e.title,outcome:e.outcome,line:e.line,column:e.column}}function Ur(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 Wr(e,t){for(let n of e){if(n.key===t)return[];if(n.kind===`test`)continue;let e=Wr(n.children,t);if(e)return[n.key,...e]}return null}function Gr(e){return e.flatMap(e=>e.kind===`test`?[]:[e.key,...Gr(e.children)])}var Kr=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:--Kr,__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:Dr(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 qr={passed:`Passed`,failed:`Failed`,flaky:`Flaky`,skipped:`Skipped`};function Y(e){return qr[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:qr[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:qr[e]})]})}function Jr(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 Yr(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 Xr(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 Zr(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 Qr(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 $r(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 ei(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 ti(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 ni(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 ri(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 ii(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 ai(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 oi({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 si({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 ci=`https://github.com/qartisan/playwright-loupe/blob/main/docs/config.md#dimensions`;function li(e){return H({page:`test`,id:e.id,repeatEachIndex:e.repeatEachIndex})}function ui(e,t){return tr({...yn,facets:{[e]:[t]}},{page:`tests`})}function di(e){return e||`(unnamed project)`}function fi({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 pi({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(fi,{rate:i}),` ·`,` `]}),G(n.total,`test`),` in `,K(`strong`,{children:kr(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 mi({errors:e}){return K(Z,{id:`w-run-errors`,class:`widget-run-errors`,title:K(S,{children:[K(ei,{}),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:Jt(e.message)})},t))}),K(`p`,{class:`widget-more`,children:K(`a`,{href:H({page:`errors`}),children:`See the errors`})})]})}function hi({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 gi({group:e,colors:t}){let{headline:n,firstTest:r,others:i}=Yt(e);return K(`a`,{class:`group-row`,href:H({page:`group`,signature:e.signature}),children:[K(`span`,{class:`group-row-head`,children:[K(q,{name:e.category,color:t.get(e.category)}),K(si,{group:e})]}),r&&K(`span`,{class:`group-test`,children:[r.title,i>0&&K(`span`,{class:`muted`,children:[` +`,G(i,`other`)]})]}),K(`code`,{class:`group-message`,children:n})]})}function _i({groups:e,colors:t}){return K(`ol`,{class:`widget-list group-list`,children:e.map(e=>K(`li`,{children:K(gi,{group:e,colors:t})},e.signature))})}function vi({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:ui(`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:{...Dr(t.get(e.name)),width:`${e.tests/n*100}%`}})}),K(`span`,{class:`group-count`,children:G(e.tests,`test`)})]})},e.name))})}function yi({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(Jr,{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(_i,{groups:e.groups,colors:t})]})},e.name))})}function bi({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:()=>Tt(Pr(e.name)),children:[K(`span`,{class:`project-name`,children:di(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(fi,{rate:t})]}),` `,`· `,kr(n),` test time`]})]})},e.name))})}function xi({value:e}){return K(`td`,{class:e===0?`zero`:void 0,children:e})}var Si=[`passed`,`failed`,`flaky`,`skipped`];function Ci(e){let t=Si.filter(t=>e[t]>0).map(t=>`${e[t]} ${t}`);return t.length>0?t.join(`, `):`no tests`}function wi(e){return[...e.unknown?[`unknown value`]:[],...e.caseVariants.length>0?[`likely duplicate of ${e.caseVariants.join(`, `)}`]:[]]}function Ti({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(ei,{}),`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(ei,{}),`likely duplicate of `,e.caseVariants.join(`, `)]})]})}function Ei({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(Di,{name:e,row:t}),K(Ti,{row:t})]}),K(`span`,{class:`outcome-bar dimension-bar`,role:`img`,"aria-label":`${t.value}: ${Ci(t)}`,title:Ci(t),children:Si.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 Di({name:e,row:t}){return t.total===0?K(`span`,{class:`dimension-value`,children:t.value}):K(`a`,{class:`dimension-value`,href:ui(Sn(e),t.value),title:`Show the ${G(t.total,`test`)} with ${e} ${t.value}`,children:t.value})}var Oi={failed:`with failures`,flaky:`flaky`,passed:`all passed`,skipped:`skipped only`,none:`no tests`},Q=L(null);function ki(e,t){let n=Q.value;n?.key===e&&n.source===t&&(Q.value=null)}function Ai(e){e.key===`Escape`&&Q.value&&(Q.value=null)}function ji({name:e,values:t}){return je(()=>(document.addEventListener(`keydown`,Ai),()=>{document.removeEventListener(`keydown`,Ai),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=wi(t),i=[Ci(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:()=>ki(a,`hover`),onFocus:()=>Q.value={key:a,source:`focus`},onBlur:()=>ki(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(ei,{class:`tile-flag`}),K(`span`,{class:`visually-hidden`,children:[`: `,Oi[n],`, `,i]}),K(`span`,{class:`tile-details`,"aria-hidden":`true`,hidden:!o,children:[K(`strong`,{children:t.value}),K(`span`,{children:Oi[n]}),K(`span`,{children:Ci(t)}),r.map(e=>K(`span`,{class:`tile-note`,children:e},e))]})]});return K(`li`,{children:t.total>0?K(`a`,{...s,href:ui(Sn(e),t.value),children:c}):K(`span`,{...s,tabIndex:0,children:c})},t.value)})})]})}function Mi({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`?Ei:ji,{name:t.name,values:n}),K(`details`,{class:`dimension-table`,children:[K(`summary`,{children:[K(Jr,{class:`chevron`}),`Table`]}),K(`table`,{class:`data-table`,children:[K(`thead`,{children:K(`tr`,{children:[K(`th`,{scope:`col`,children:`Value`}),Si.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(Di,{name:t.name,row:e}),K(Ti,{row:e})]}),Si.map(t=>K(xi,{value:e[t]},t)),K(xi,{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:ci,target:`_blank`,rel:`noopener noreferrer`,children:`the dimension definition`}),`.`]})]})}function Ni({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:li(e),children:e.title}),K(`span`,{class:`test-where`,children:[di(e.project),` · `,e.file,e.repeatEachIndex>0&&` · repeat ${e.repeatEachIndex}`]}),t]}),n]})}function Pi(e){return`${e.id}/${e.repeatEachIndex}`}function Fi({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(Ni,{test:e,aside:K(`span`,{class:`duration`,children:kr(e.durationMs)}),children:e.attempts.length>1&&K(`span`,{class:`test-where`,children:G(e.attempts.length,`attempt`)})})},Pi(e)))})})}function Ii({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(Ni,{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`})]})})},Pi(e)))})})}function Li({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(Ni,{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:Jt(n.message)})]})})},Pi(e)))})})}function Ri({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(()=>Ut(t),[t]),a=N(()=>Xt(e,t),[e,t]),o=N(()=>Or(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(hi,{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(_i,{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(yi,{categories:a,colors:o,open:n},n)})]})}function zi({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:H({page:`dashboard`}),children:`Back to the dashboard`})})]})}function Bi(e){return e===0?`first run`:`retry ${e}`}function Vi({report:e,group:t}){if(!t)return K(zi,{message:`No error group with this signature in this report.`});let n=Or(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(si,{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:H({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(Bi).join(`, `),K(`span`,{class:`muted`,children:[` of `,G(e.attempts.length,`attempt`)]})]})]},`${e.id}/${e.repeatEachIndex}`))})]})]})}function Hi({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(()=>Or(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(Mi,{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(Fi,{tests:t.slowest}),t.flaky.length>0&&K(Li,{tests:t.flaky,colors:n}),t.skipped.length>0&&K(Ii,{tests:t.skipped})]})]})}function Ui({report:e,groups:t}){let n=N(()=>({categories:Xt(e,t),projects:nn(e)}),[e,t]),r=N(()=>Or(e.categories),[e]);return K(`div`,{class:`page view view-overview`,children:[K(`h1`,{children:`Overview`}),K(pi,{report:e}),e.run.errors.length>0&&K(mi,{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:H({page:`errors`}),children:[`All `,G(t.length,`error group`)]})]}),children:K(vi,{categories:n.categories,colors:r})}),n.projects.length>0&&K(Z,{id:`w-projects`,class:`widget-projects`,title:`Projects`,children:K(bi,{projects:n.projects})})]})}function Wi({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(zi,{message:`No test with this id in this report.`})}function Gi(e){let t=Cn(e);return t===null?{status:`Status`,project:`Project`,tag:`Tag`,category:`Error category`}[e]:t}function Ki(e,t){return e===`status`?Y(t):e===`project`?t||`(unnamed project)`:t}function qi({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:Ki(e,t)})}function Ji({state:e,facet:t,values:n,counts:r,colors:i}){let a=M(null),o=e.facets[t]??[],s=Gi(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(Jr,{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(Nn(e,t,n,r.currentTarget.checked))}),K(qi,{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 Yi({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(Ji,{state:e,facet:t,values:i,counts:n.get(t),colors:r},t))})}function Xi(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=U(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:`${Gi(e)}: ${Ki(e,r)}`,remove:t=>Nn(t,e,r,!1)});return n}function Zi({state:e,domain:t}){let n=Xi(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(ai,{})]})},t.key))}),K(`button`,{type:`button`,class:`text-button`,onClick:()=>{i.current=0,W(Pn(e))},children:`Clear all`})]})}var Qi=new Intl.NumberFormat(`en-US`);function $(e){return Qi.format(e)}function $i(e,t){return Math.min(e,Math.max(t,0))}function ea(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 ta={failed:0,flaky:1,passed:2,skipped:3},na=new Intl.Collator(void 0,{numeric:!0,sensitivity:`base`});function ra(e){return[...e.suitePath,e.title].join(` › `)}function ia(e){return e===`duration`||e===`attempts`?`desc`:`asc`}function aa(e,t){return e.column===t?{column:t,direction:e.direction===`asc`?`desc`:`asc`}:{column:t,direction:ia(t)}}var oa={title:ra,project:e=>e.project,file:e=>`${e.file}:${e.line}`,category:e=>Wn(e).primary};function sa(e,t){let n=[...new Set(e.map(t).filter(e=>e!==null))].sort(na.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 ca(e){let t={title:sa(e,oa.title),project:sa(e,oa.project),file:sa(e,oa.file),category:sa(e,oa.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 la(e,t,n){switch(t){case`status`:return ta[e.outcome];case`duration`:return e.durationMs;case`attempts`:return e.attempts.length;default:return n.text[t].get(e)??null}}function ua(e,t,n){return e===null||t===null?e===t?0:e===null?1:-1:n*(e-t)}function da(e,t,n=ca(e)){let r=t.direction===`asc`?1:-1;return e.map(e=>({test:e,key:la(e,t.column,n),order:n.order.get(e)??0})).sort((e,t)=>ua(e.key,t.key,r)||e.order-t.order).map(({test:e})=>e)}var fa=[{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 pa({report:e,state:t,matched:n}){let r=N(()=>Or(e.categories),[e]),i=N(()=>Yn(e.tests,t,Zn.value,Qn.value),[e,jn({...t,sort:vn})]),a=N(()=>ca(e.tests),[e]),o=N(()=>da(n,t.sort,a),[n,a,t.sort.column,t.sort.direction]),s=e.tests.length,c=jn(t),l=M({viewKey:c,limit:500});l.current.viewKey!==c&&(l.current={viewKey:c,limit:500});let[,u]=ke(0),d=$i(o.length,l.current.limit),f=N(()=>o.slice(0,d),[o,d]),p=ea(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(Yi,{state:t,domain:Zn.value,counts:i,colors:r}),K(Zi,{state:t,domain:Zn.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(Pn(t)),children:`Reset filters`})]}):K(`div`,{class:`table-scroll`,children:K(`table`,{class:`tests-table`,children:[K(`thead`,{children:K(`tr`,{children:fa.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:aa(t.sort,e)}),children:[n,K(oi,{direction:i?t.sort.direction:null,class:i?`sort-active`:`sort-idle`})]})},e)})})}),K(`tbody`,{ref:m,children:f.map(e=>K(ga,{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 ma({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 ha({test:e,colors:t}){let{primary:n,others:r}=Wn(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 ga({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:li(e),children:ra(e)}),e.repeatEachIndex>0&&K(`span`,{class:`row-note`,children:[` repeat `,e.repeatEachIndex]})]}),K(`td`,{class:`cell-project`,children:di(e.project)}),K(`td`,{children:K(`code`,{children:K(ma,{path:`${e.file}:${e.line}`})})}),K(`td`,{class:`numeric`,children:kr(e.durationMs)}),K(`td`,{children:K(ha,{test:e,colors:t})}),K(`td`,{class:`numeric`,children:e.attempts.length})]})}function _a({version:e}){return K(`footer`,{class:`footer`,children:[`Loupe — a reporter for Playwright `,K(`span`,{class:`muted`,children:[`· v`,e]})]})}function va(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 ya=[`system`,`light`,`dark`],ba=`loupe.theme`,xa=L(`system`);function Sa(e){return typeof e==`string`&&ya.includes(e)}function Ca(e){let t=vt(ba);xa.value=Sa(t)?t:Sa(e)?e:`system`,at(()=>{let e=document.documentElement;xa.value===`system`?delete e.dataset.theme:e.dataset.theme=xa.value})}function wa(e){xa.value=e,yt(ba,e)}var Ta={passed:`Passed`,failed:`Failed`,timedout:`Timed out`,interrupted:`Interrupted`},Ea={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 Da(e){return Ea[e]??e}var Oa={system:`System theme`,light:`Light theme`,dark:`Dark theme`},ka={system:Xr,light:Zr,dark:Qr};function Aa(){return K(`div`,{class:`theme-switch`,role:`group`,"aria-label":`Theme`,children:ya.map(e=>{let t=ka[e];return K(`button`,{type:`button`,class:`icon-button`,"aria-pressed":xa.value===e,title:Oa[e],onClick:()=>wa(e),children:[K(t,{}),K(`span`,{class:`visually-hidden`,children:Oa[e]})]},e)})})}function ja({startedAt:e,durationMs:t}){let n=N(()=>va(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}),` · `]}),kr(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 Ma({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:tr({...yn,facets:{status:[e]}},{page:`tests`}),title:`Show the ${t} ${n} ${t===1?`test`:`tests`}`,children:r})})}function Na({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":z.value,title:z.value?`Hide sidebar`:`Show sidebar`,onClick:Ct,children:[K(Yr,{}),K(`span`,{class:`visually-hidden`,children:z.value?`Hide sidebar`:`Show sidebar`})]}),K(`div`,{class:`brand`,children:[K(`span`,{class:`wordmark`,children:`Loupe`}),K(`a`,{class:`title`,href:H({page:`dashboard`}),children:t})]}),K(`span`,{class:`run-status run-${n.status}`,children:[K(X,{outcome:n.status===`passed`?`passed`:`failed`,decorative:!0}),Ta[n.status]??n.status]}),K(`ul`,{class:`counts`,"aria-label":`Test counts`,children:Bt.map(e=>K(Ma,{outcome:e,count:n.stats[e]},e))}),K(`dl`,{class:`run-meta`,children:[K(ja,{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(Aa,{})]}),n.scope===`partial`&&K(`div`,{class:`banner banner-partial`,role:`note`,children:[K(ei,{}),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(Da).join(`, `),`.`]})]})]})]})}function Pa({roots:e,route:t,prefix:n,expandAll:r,emptyMessage:i}){let a=t.page===`test`?Nr(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=wt.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=Wr(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=Gr(e);s(e=>t.every(t=>e.has(t))?e:new Set([...e,...t]))},[e,r]);let _=N(()=>Ur(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(Gr(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`?Rt({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(Fa,{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(La,{node:e.node,onToggle:()=>x(t,!o.has(t))})},t)})})]})}function Fa({node:e}){return K(`a`,{class:`row-content`,tabIndex:-1,href:H({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 Ia({name:e,path:t}){let[n,r]=or(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 La({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(Jr,{class:`chevron`}),K(`span`,{class:`row-label`,title:o,children:[e.kind===`file`?K(Ia,{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 Ra=200,za=300;function Ba({page:e,route:t,children:n,class:r}){return K(`li`,{children:K(`a`,{class:`nav-link ${r??``}`,href:H({page:e}),"aria-current":t.page===e?`page`:void 0,children:n})})}function Va(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 Ha(){let e=er.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||Va(e.target)||(e.preventDefault(),z.value?r.current?.focus():(z.value=!0,setTimeout(()=>r.current?.focus(),0)))};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e),clearTimeout(i.current)}},[]);let a=e=>W({...er.value,q:e},`replace`);return K(`div`,{class:`search-field`,children:[K(`label`,{for:`sidebar-search`,class:`visually-hidden`,children:`Search tests`}),K(ii,{}),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),Ra)},onKeyDown:e=>{e.key===`Escape`&&t!==``&&(e.preventDefault(),clearTimeout(i.current),n(``),a(``))}}),K(`kbd`,{class:`search-key`,"aria-hidden":`true`,children:`/`})]})}function Ua({matched:e,route:t}){let n=er.value,r=Mn(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:H({page:`tests`}),children:G(e,`test`)}),K(`button`,{type:`button`,class:`text-button`,onClick:()=>W(Pn(n)),children:`Clear`})]})})}function Wa({report:e,tree:t,prefix:n,matched:r,route:i,open:a}){let o=e.run.errors.length,s=Mn(er.value)>0;return K(`nav`,{id:`sidebar`,class:`sidebar`,"aria-label":`Report`,hidden:!a,children:[K(`div`,{class:`sidebar-search`,role:`search`,children:[K(Ha,{}),K(Ua,{matched:r,route:i})]}),K(`ul`,{class:`nav-fixed`,children:[K(Ba,{page:`dashboard`,route:i,children:[K($r,{}),K(`span`,{children:`Overview`})]}),K(Ba,{page:`errors`,route:i,class:o>0?`nav-has-run-errors`:void 0,children:[K(ti,{}),K(`span`,{children:`Errors`}),o>0&&K(`span`,{class:`nav-marker`,title:G(o,`run error`),children:[K(ei,{}),K(`span`,{class:`badge badge-failed`,children:o}),K(`span`,{class:`visually-hidden`,children:[`, `,G(o,`run error`)]})]})]}),K(Ba,{page:`health`,route:i,children:[K(ni,{}),K(`span`,{children:`Suite health`})]}),K(Ba,{page:`tests`,route:i,children:[K(ri,{}),K(`span`,{children:`Tests`})]})]}),K(Pa,{roots:t,route:i,prefix:n,expandAll:s&&r<=za,emptyMessage:e.tests.length===0?`No tests in this run.`:`No tests match the filters.`})]})}function Ga({report:e,settings:t}){let n=er.value,r=N(()=>Jn(e.tests,n,Qn.value),[e,jn({...n,sort:vn})]),i=N(()=>rr(e.tests.map(e=>e.file)),[e]),a=N(()=>Vr({projects:e.projects,tests:r},{prefix:i}),[e,r,i]),o=N(()=>new Map(e.tests.map(e=>[Nr(e.id,e.repeatEachIndex),e])),[e]),s=N(()=>Ht(e),[e]),{route:c}=V.value,l=M(null);je(()=>{(c.page!==`errors`||c.category===void 0)&&l.current?.scrollTo(0,0),St()&&(z.value=!1)},[JSON.stringify(c)]);let u;switch(c.page){case`dashboard`:u=K(Ui,{report:e,groups:s});break;case`errors`:u=K(Ri,{report:e,groups:s,category:c.category});break;case`health`:u=K(Hi,{report:e});break;case`tests`:u=K(pa,{report:e,state:n,matched:r});break;case`test`:u=K(Wi,{test:o.get(Nr(c.id,c.repeatEachIndex))});break;case`group`:u=K(Vi,{report:e,group:s.find(e=>e.signature===c.signature)});break;case`not-found`:u=K(zi,{})}return K(`div`,{class:`app ${z.value?`sidebar-open`:`sidebar-closed`}`,children:[K(Na,{report:e,title:t.title}),K(`div`,{class:`layout`,children:[K(Wa,{report:e,tree:a,prefix:i,matched:r.length,route:c,open:z.value}),K(`main`,{class:`main`,ref:l,tabIndex:-1,children:[u,K(_a,{version:e.generator.version})]})]})]})}var Ka={title:`Loupe report`,theme:`system`,screenshots:{defaultView:`side-by-side`}};function qa(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ja(e){let t;try{t=JSON.parse(e??``)}catch{return{ok:!1,message:`The report data is missing or is not valid JSON.`}}return qa(t)?t.schemaVersion===1?!qa(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 Ya(e){try{let t=JSON.parse(e??``);return qa(t)?{...Ka,...t,screenshots:{...Ka.screenshots,...qa(t.screenshots)?t.screenshots:{}}}:Ka}catch{return Ka}}var Xa=Ya(document.getElementById(`loupe-settings`)?.textContent);document.title=Xa.title,Ca(Xa.theme);var Za=Ja(document.getElementById(`loupe-data`)?.textContent),Qa=document.getElementById(`app`)??document.body;Za.ok&&$n(Za.report),ge(Za.ok?K(Ga,{report:Za.report,settings:Xa}):K(`div`,{class:`load-error`,role:`alert`,children:[K(`h1`,{children:`Loupe could not open this report`}),K(`p`,{children:Za.message})]}),Qa);</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}.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,d09GMgABAAAAADdAABAAAAAAggwAADbfAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoFeG88kHIxKBmA/U1RBVFoAhQQRCAqBgHjmEguEHgABNgIkA4g4BCAFhVoHiTgMBxtucSXKbZcCnAcgvNPbw48i2DigZ+DdyohkmrTS7P+/JsgYY9us+xcwAxGh8G5VC5VRCJUqYJSV142NLk1f6xHY73UcuwP/N3THSeTCyuON7/Ot674+0eZvCOyovW2rdXqkIQKpLzQChwQBkSEgwLmyn5P45j4DO7vnxm8SxGU1bJ4PnHgGto38SU5env9+rX/XPrcf9fyZDwFAC4CggGRcKo4kyygCBUDTP8+f+ue+pGkAF1AqpFSyNqs4CR1VcWL99we6/X/F8Pw2/8/cGmc1IHkJkUtUKCqCRZWChYW4St/qu3KRLuq7yH7R217k9ip8zT/AsXyXCz5ekkeBV1BpcxCNp83wB91UtKLfPs4pBPGrop6AN8Vm9zXkZMZr0ZYO0562c4cFAGbg63CFK9zixQUXXFBABQUU0IP/Ez04oKcAmKhNWzEk5kSxQLvFNHHEwrSvO1/LbmcrFn0hemJ/iEGFrYjA7+5+9VdU1PnIQbvRCODaN3re3YuxfWxJS8zP781ZVUn2QH0rea9vM7OIJ0CUVG6rJw7QMjtX+7qIOHBOuvCVzifdAReZj6hVZjU1/d+barb7+PlPS/EC9iLkDNucIZ1RdJdr3OXpXbpMf//bxYbPFQJlHRYrHCFSaQUHgLwAXl7AEALFS4GkU7zLlSQnSJl0ghxDLmMXclGG3HTuypQ6t5Xr1uZ5bEqGX4r4wsBJOjSAoWwy3vYzshY71opPrvpKq+IHyBG4BS08nZkszbsipo9pA5pU7SkM5ygK9z6+279vox1fY9+Odd8WETmEkIYQRPr/mGk+ODK8ZJemxhoOkQNEQcFxs9vXwXmTHwGWCr2OBMYemABvI8IIMSGYmWZB8FBcl488axgRhASh4EB4eBABCURGAVGxhthxg3jwgHgJhoQKh2jFQOKkQTLpIVkKIaXKIBUmQiabDJlqBlTfxfTM0UiffshNBfnt4wwYPCl/DQ1EEDCfNfJ7FS9ffgT0LMXCdt/TXAvo55/S3Qbo8IBhwP31hc47I87/NckD8QWlsgRwEz4TtDXQGhWcERHgTCQDqU+E8M+iwnpA8CbU16N4fYEnixjOdbnogGoLqsIM5Y8mhhb3Wz600ld5knu5SX7ld+dqzoOT257GBtXu0exnPEFV+ZNsybqsyCIgtZuTaZmQshTEAIPczCQ3PzYRCSJPpZpwA4cCAS8uPtwGqExBsohXUFueiggI4B+/gOR/8c4LWI+C7BZ3+Fge/7ogXfvDvmYwEov6Hn6IDSSsfhArMPKQz0m8J+GwhTiIYArx60na3DXZXPzgdYRgi7Ddl9iK8DViLW4lIiESIW0r695OPeOH+EMi8QdJJObCksiwWLqFLO0q7LWsy1e2kBOSWEDCal9iJeyIyKHCQ+X5IfTbQe9h+AoiQEiETThESCTEjNgTB+INvmeOFyRRmhAdkUgSo6SpJBkkS2QTySV5pQWMgI2Vrgur86ZEG2px4plMgE0VVGVjNiGNTDL+m5onAh4sfDNfTU3uLqf5dRehl1e1bAtA1SPE0iO/Jo1Ea3UYk4/17dSkf0j/uDfSmQSQkIJHG9VHovQIraenUVUA5ABx9VrzAs3WV7RLB850aTlONR4XoFp7ta1J/c14Rppc933c7T4C4E+8m09yADGve4UqqcKcuHRdeN5SFRSraVg+HYHCBvxYmWwSZ+E0rzM5E9BKK05aKE+1htQkvVbfmlAq/KzRd8lOP87h8jhcRLG+bu9+/xs7MwBNaSiTy1JfUaDVhYEASlu9BASzVwPehMldfP940hRp3KOqovW+Q7VBnI1Y8rhe94qXpYNtzn6ejDLs/a7fXZ4R1ua+oHQzr0VyWGNF823uGzCjoaYFnbAfXj4oVRtVYmgY/GcVGbGGj3VPQOudO6rdamcjjzxGd2suV+v2T/5znT4BajepAOeAVSk+bX0djueEiyTmhsGIT8QjGf/ay1jgsGJFzp4HBS/hrGjF8BQnnq9MOv7GyBOoQDGtUmViVKgQZ7LJ4k01Q4J55klRpUqqvfZKc8Ip6Vq10mnXQe+MM7Kcc162Lt3G6tMv12235cO4QoiISEh4yMgQCiocGhqEgQvh4cHhDzWgdk1YbKKtWMOxYWvZzQqOvYI4KFSO0UxO3BhxVyQ85qLx4o1MIxheSIkmCRUDE6ewxSskCYpMoiDAANLc2QgM8mAKFMKUQMGUKgRlCl2F4AQ9YgwMfzqKGVC4ZgopKsInfJelA4rAaSEkV+AshBAYEQNiEFRyWZ6hIIJxxCaMUAHRo8Mg+SIysrEgp0AiwBgEBubgYsIm+EOqLJ85mkMjCEGwQBlwfhi6cCQYoyOD4AFzjWVCkdMJBipiDDgGBadwPFKkGC4TPmEKQTo4SwghESmRCq6oQOm1U2Yhy0KWHQUeq38WxPTp40KRwwP3rvwZKfuFw+1cQr5ggaBeUM4fKszjlOJ/0HMKeTd553lZvFqK4v7LPcg5x3Ec1c6R34bIHmQ/YRanNmwDu4atZv3L+tWQ9hhLsr6ARfg2/ytWJ6uKJWW5MncwFzBRjLH8KlkulbFl8myyYJI8vjnWj36M5o34o4zRNPJQ/6fv7kt6fR9r80X0zgtvLmTO753jz4pny6nNzK6ut9N34i6jjLaf2q1HqxfQWi6u4ZWHsQ2VnNluTUJDeZNHMAp7IL3FpU8jpVhZJhRsVQmRYHwJR2F9Syuui/RZ8ZE5l8YYFXxNMkOcuSU61XzLpFmtZFurGKxXxtocnaPKQbmOPCdljqlRrk69SZp0mMIlmX3Hc1xy2TyxYDzavYVuuWuR+x5YBhPt3kGa6qIVx4sfFcEeakfcB1Bpuftp1RMogQiGQGFwxJAR5vxw8lzr4sY88bJsMlu2WyEdhBBCCGlFRFBZPGrem4tEAwErNtRECkYJfdQ0tHT0DIzIOgER8xVljVn/VmM91+t/ycpUDbkqkIAnzbO8Xpc3gsO9PtBfkIIhUBgccS4TqgobcneiXEqitMqn02YyRBY9h2gPSrIKRhXZs9Q0V31rgIb6LZ7iAav6kq9xP2SzqDi5Z/NEsbFPV8CKGN5XgQ2ViuV69M5dLfGSw8PUlZO7owRV25D2nYEApGAIFAZHHPa+CheKB/CqjCq2Z6sqxRgl9VHT0NLRMzAiSwAICgmLiIqJS6DQGCwOTyA+6wikIDAECoMjikKg1EdNQ0tHz8CILH5oxqw58xYsWhIQFBIWERUTl0ChMVgcnkC8/DR1lklhuTIKRKmXsqfJy1rIVAqJsuijpqGlo2dgRDaFDgtiBRs7x9TpERfHwzu+aalUbqRFObyRBwoaXFXJU5bratBVJcmRJla4YkujE0n/Sqc+JeEM6iewTVCEhEVExcQlUGgMFocnEKW2AtZ0SvayrKZ7WasNyYkP5Ia6Ob0V2cOme1Qec5546ll57ZE3+ZDZMy1mTfEWJUtb1jp06tKtR2/6Iv0GDJah/A0bGSpkVIxlHCYyCVNDTWiUlo7eNANjjsBRZI7ZzeZ6czaWK3mehvKy+EUzZs2Zt2DRUgmYFxQSFhEVE5eYJpETen70k59DEY3B4sKDQMwpfP40kaKykj3w8qMgKW2V36i4rOo11VKPcrX36YZLrvvqhro5veXop9IjzWkL+Ddr/+W950O8PxboEYhgCBQGR1wuc4mK55fMFLPmzFuwaKkEiKCQsIiomLgECo3B4vAE4nWnJTl35ZHcUuL796m6wl77rS7EDY05XDzavTxQSimllFag0BgsDk8gbmtyQD4WesosNUwqD1P36LJDyUAgBypgCBQGR0TWusqtVlXxVLf2rqu7o6F2S+E64yHySMuLAF/rP0A3GwkmuLKD7A44M9yyfxs459aDwRRRij5qGlo6egZG5GpW7Xyn5hL99NNniTVo3camaEtsd8mtKyMPVpKSnhZihaLyDOgFx13gq/1/sL8CjPrVsdcAb+YG/ePU5afvGg60CFIwBAqDI94vg8y0u4+7rHKL/jfSTIayh4Z0YCqnezjydQI+TVSB2iCAIVAYHHEuk6rYQAgeoPVHaSqTcq5frUDvckWerPNM04z33zVQgQCGQGFwRFHIlPqafUVt0ZCWjr5PcyVXIDdnvbY0/NQMzJozb8GipRLwW1BIWERUTFzi8pUWS4pOyH4sfvJzofxGY7A4PKGf1Ed+U4b7sXQdZXCalSN3kw656OXYJVTYbZFYvXJfuU7dUDcbvDzs5xHLc+hled1Ybw7t6ibyP/Ze9oH6aD61iLYfDcQgAUOgMDjiXIZ4vatnf8yiJwW0ZnnMedZpWKq6qtGl5kLShdcc5vcTgf6DFAyBwuCILtMWo4uKCf8DSwbmI2HdtSm7VkcN0kQlVS2vmTetgUVhDkQiTa2S1ApsoGVUt7O1qmAIFAZHfEP85Pn1X6fb6jo8dCk29QQiJEyr6qOmoaWjZ2BEVix7QN6feSRez2CMMcYY6ybWUBZaMVgcnkAsay22cZ4yDf+LibBPYTbxlI/Mp/1gIAIpGAKFwRGnMsyxe7bgWTQQXUYyporGKt6rsj4jJPM40UT3vlZ15MaGdCQWL/yFvKtbGy1eMMYYY+zvt/DWURRKrdFSlzX3uvwaZtSsOfMWLFoqAR1BIWERUTFxiTdWmpWsr1OBweLGqj28RQBxjuHPtFgm+aLobkOvQ4GfHoDKNFZVnh0oYCIoJCwiKiYugUJjsDg8gdj8bGxiW7CtmKuIovurjmaOhI5QUwXFbq4Q7f05MVirDpyOl4bKJh/BCjvJg2I+Z35rYGv2QB1PjPlVUFeB2IjN2Irt2Ind2Iv9OIjDOIrjOImzOI+rGLVm6iohIXDfNGutxaQAy25QcyjCgFpTMPJOGzAWd1mrqQWsNQOVaWO1I6CcjFVs4AQCH9/DRw05BXUB3QMlLE2KTV7MmutlBkZoyxFDe2YdoAICy5laqUpp2lIkViOJ5kRlpEQQTllVbQcXcICVb3i3uMgymu5oed5n8lFWb4opStVHTUNLR8/AiPyRwRhjjDHGuGIk48BCA4PF4QnE6Wl954jzLrjokjXrHAEheyk4C4lPKTBMo7AJiaYZZll/AMGw4a36OdM5D0bYAQAFAoKWEuyKgxjkBHwgUAEA+ElfqkArRhkMasjbV8V6K9lQ1mWHQRw4r1T31Os+0tRcSyiY8yBnnEgGUymsUpwUgBJsWKlgfMaBrL3pDY5LaHwDK7uig1yt3oGi4El1WLbWPC3GxPcHSDmp92adeS/7rkAIUjAECoMjDmd4EHF8Ra/YXAdv2NsDvQMRDIHC4IjDkWtz3PHepHLqo/zEjFlz5i1YtFQC2oJCwiKiYuISI2kZZaGBweLwBOLM+ewZF01UOFWFPTkaXbgGCuHVIIloSOEromRjZr2nB1iqW1qKcAF7dbcTs5GnydKWbIuSNkhS8q2sZXevHzP/PGkkJNXqqhAoDI6YIc/69b/SrDnzFixa8pFq9WFMNXmxc1pIGI21eTGiQpAYbz0lm3RiKNSml/pEyMopN7mTLtzD2vfwz8W1wg3cwl1NRwEklD8+g4QJE4ABARQwwIFgcCTK0h3YBuGc+Pt6WmnDa+JYqDHnDeWnbc7WgGa1k96amvOaj4ghyVHb5boSYhfaM/8+74DKIr1v+0Pzu6oQ4SmMT4p9hovCp7AM3V570cXX66R/gab8YQv/no94X+3i4Bl5a2KZEoBA64FEeJAuyNZJp50S6wYVp/lbO0DB23OuP72tvRWknhn3+kH8+c1hL4g8v90fAyFX2/O7cHJrHHgC0SfwQHCETEhA5FgpWPzlWxMU1O5J198d77Z0yZ1rl9P+bl9afVtB/JeEP7HNAJOFDGOL4AK2SgYVtKoZFNHKUq2UQaUs4bR0LuJwuKF0DmUVN69pbj2p3VVW3jUFPUpj1qQoYTFNCjxzVpV5iiTSsPYcUamgP1m1yt6V3yKXNq6jFavC60yEk8fN8hIFGD4dCeLEq/ABTeJ5+af5iEmvbHjzG6YoQ36FeNVr0M6uwiu0n5bmkO8gq1WpOLyoDgbA+8pOCHZxhu/YuHJXZviK7bbKHDN+xnFj5c2sfuG5tTLfg/GN0ImVueFLDU6tCPCjBidXhMP4VIt8+FnDIFQC/MtdRaOkmzhETCwMPsEsWAwzbygBgsROyR62wH9OELxNcI5ZCENHsKGQm28jhcu/83kWQODKXCT0yRPQYJB5FoLMYZPxeAqYQ9onl7MW6A/SIRTIMOYcBYycjosATwA1z5SJvGnWKGQqSEJAIhWKmc7xYuneGhOEhjMhI54RJloET2oYsCRx8qS9D/9GzB0gFiaQoCDpDtLPy/3S4cu1fCNQ98p+YL8NQU7kHDrA5s2AjZx98U8Hex1k0YHzaOuugPto2gnab3FfG+AxQP6q08DahBCECAcsDwdsDrvo4q7kOCLAVWdFuseRAJ1zuTc2TgyjxkeAg8EiAXRiNIux9BxAWR5dyOJSBSIKvsa9p21LCU+MxoGXOU4azRA5xVpX60E9agiHxxGVyyvFSrlSrTRXeitDlIdUWNV61Wp1lpo3OgrGlBx526tajNYogGu3W04pVEoP3etVtQY4CMCQVGC6279gxGF4YHhw+PPnGwD4/PZnSf0urHiGf3rkadXTmifXn18CBGwNHO6RX4A86vruyJ1Z4SP3cfucc1SfZy47r0atI27Z5YQqx+y2xwP33HfAJQgZBQ0DFw+fgJSMnJKKCRt27Dlw5MSdB09efDQ4rtET1TEGjRChwmnFLgTRCdJl0hnDD6JeidIF5X/QlSaZbIqpZqjTpd4jO+zX4x+9bup2NQS4ZrYOj10PFTo9tMXWEOGpKw6FBpvNcdpGG2xyEAEGj8iIMRIqDiYWNgkhETE6NQumzFgxd4clN85cuPJmq1wAX36C+AsULEyMSFGipUmSLEWEbHnGylEg1135JhpnvAmmKTadtUJt2jVp0aoZgoZRBiATAGp1kG3A0uMBVvoWoL0L6nqAdTE6YBXDg+iIy6tY5In+Zoinh/AJBoLIEAhqlFctcetAapTjSXWtztJjhXga5NIlqoQGH+NgcCFCpBsTlAKHhlV7MjKDoD6e6tqvPC+Hz+nOdZnz6cSQt55PS+UngxEgRooOCdB2p0MA0YxxnDNy1rTCsaihjkqwqWRMiyW+dmKIj9AOrFKal3cVWpyibZ9YG85UdKBnMjUP7Dq1UlteTjbJQu36bXVE/I42jce8n94zzKVlxqrVh+8f8071PqXjuU9ZB07XbN7vIXwU7pHTUqVMZ/yzO6v9OhwrG5djMGqV5JSqioyHGLdlKEGyGqS8H9f2XeiiEU56ZG8X10xPEk1lRsQ9e220sBVVrB1U6N+/0MhdNnZ5gRo7ZcAbUV3AlY4KAgk5ygzgpaqjbXTNbWrqW4cL3v/aTiK6Dq1asnCRKqkMj9r2Tqa7i1wmRZ7pmm0iSU1SnZImlGcZ+Xnr8Vg9XH1iR1Mqy3ITtBcjX08jf840YWck8mv5rX6OrEe/YkegHWrk0YRth7H7GmRhGkPOZBaYzqTy27FS+TonZGK57PSwcWds1xeZs0Y00YmJofrRuRU3Bba6H2OMLxTILZuh4Nc4z+uok8VY56qdBkr3Jr42V1dYH+sOSrNwtZj3nj5k5RHN9Qa6fw0exuu8c+Runu6e5Ee8TvILm5PQuG033G5s2DRGuE+S1UNrov0H77p1S7fcFdjJNZYYEHyxN3xrl0gVAivKdYnswavQuqS1BF4UIXCSIwtuB6uondzGUvKzneH9+rXoIaf1cmq3P1cjYWk3R6Exmyrf1+6cFUYAbvF4p/KZgvIUWFjU+h2Nb8XzpZd2F8+25cKLvso/50ft76yYveQwb/ah4X3yEynE6fCMX2XOSRCfl2XZ/eVwgy/t4foOnhRWu9uL/xxE+Z2q1RVPiDPemiS7LxaVqqHZAzMb7Mf6A21gUk0bEPR6nX7zf6Mu+ejgHAf22TqF/fD2L5/wWYM/DFWbrrjd9rXS1pXvmNnA21YKTZIWQTzZ8JvDsMSulM9vYGEG7QmtzpTuCM2hmPTsa22UIwuzxju3BD+d4CpFybPi3MaLZxFkz/Q9I9IR1DZJ2FptfHZl2Dtoo0dngWlg6+LB0Dl0ovVJkSUTd3eakCPwoxvknM4eSygfNsPEh7/LHdnX3osNQWfcJCtWZPMKmhVS2d1fd6F9nK6FZGQvysNuGO7kBFpZV92b2853PFV+ZGdvQn2c2/f+psez4lQ8XlC6s6RPkZpG/Y6OmgFHZxtOSjuto8Qkb9KaazujnjULQ0EgoWZLAYVFgA0k48uwV1OqBdUuibQfTvWUVOshjfPAQh+WhSQ8DUu4AVhhcDhvkJwRK6YOpYTOPvMkIhMY2YsfilO7fcOCdpPbHJpC19u8a7ZnBVzKalvS07l3ugzmKS4uoVoQg5uNy46m0eypPB72SA2Dtz3iYNcEY/5iUgi6XZuSaD7HBS9gQEJjWK4t7YV2Ux+49c8gJCdHhX811dWoicCSnH6ibOKN+AaARzN/li713Dql8yPXHlxpS2fZyqv8e1RnV3MR7xc11O+YR+owrOsq2+lNkgp2/el0NUMPxQFpGDRYKaO9Y2/IlVgma7Nyk1hfPaOVVZcbQnm2yt+6sXm0B6XWS2XyEI/QUYvtSulH78DgH0zp+WNbqWNhL3vcCOYw9BtOUXitUPoyDy9RvwsyxU47nuADskGvk9x+ToL09UXEC/UvDNLW198aDOfJK+Hpuq0XVpXXqBMoS2vTi7y690FOLhRfupP6qHP/EOE1+NIYXI2NQiOR+3TDxHAnbhvJHVDn0BUG/9Gx4jLQX353iksoCP/riyOXMv42Fvuf1bR8IHyz7vyhJyel/aqND/8AjbjvCjeEvpe1wl5ojlOSW9Y58+TC+QdRcbK4jny3zY3e+2/Q8MSUzSDZBBqF1mblDuYAgARFpPaizkl5ehIriOItrTKtRYBGLZm19niB2ht1XbtwnGnxlv5P1DpAIHmimRfTh4+JK3kSEBstufNnIftxky+mWz7GR3Y8xoEcMVEc+haJf1qsMlVK+Zg7Jc6T3jiZzPqktPp29u7ue0a9+zld+zjMmH8R+qO7kFcnm68M7WYGRePPO2ri+omOpJ5VF/zq3cEB/q3a9lYjG0ancZskl2yhHrnh1pQNpdfp3smaxmYHd9p1kQ/iaAuW21l4ur6VHqRrlN5xP6zx7yMumscO05sdUmezqicqeLpgKVorP9dVniunjQjsJadyyGvHnhIuYVuo2ZEYsevWUzbBCHuJlEYFn5XZoO1/NrNN2YxNycKUGgkMGkylPKpqNWnYJvpL9YIQLwvLuZW6fUoOp+olo83YFE9qfWVHY51CeSZTzK/eG9AqOhqSsALOHXad743T0OgGdqN7cDyCTqLp0W5BLcyYoSrOFdo1Lwbmo8bMnF8k2UNePGim/KTyEcmbqkvKTNrdcQW5PQgPNuYWI5TuLDlmyU64mGn4sviEKy5Dvo/+HCG3Kz7hSixHB8upFLDeGLoFZn6eST7VuCi4f0kmNnF/rDOaxkk9s8gu7rGbJ53lyBZhKrdq3lHv0tVumht7Iz/nRRj2r50byS/rUzFLo+f7sW5b7QWvGqyPE6RC0WizXFDpY/wzHMHhsij+EmXcM5RgTywIPsLx4iCJK8sJ4bH951frTrJCOBXotquHXuoZngSexZzgWAzyL4tg2Tcpga346ovjDRhJF30W+AuU4/lB9EJhVr8EPdVzOC2KP0UpnnwM1UjJD5E9GpXD6/icNVCs50xWuTQnaG/Nz55Yj/scGHYVMbXshxvKjdiR4YN7lrrvDpuvXwxMgaKKHUYYzfHQZaMD61B5dcWBrrUmw7pu4+HK3sVZn4GnI48enZvTtvbFJZz6jg63IT83HmS0h20PHUP2WvzG7dr0R2hK5w4kmlvOcOicQHc6y+ijMao4HJrOSDj+8iMjnWqm89j2IGwc8Q6JFDwmUyUUrWpaKjxBLz8hWgJmUiLrGqt2RmNVO9c1RWZuSea0L3jfpjIoXWJm3GJhdrjESoNN+s6C7OatCaA7/Ulyq828OdZi3rzVlmwOBpoiwrK2isqytoi4KQAmkgsHwlRygm7r3kaboXnzQHf6htd8t9xd/rrZe/Yucdmre4hwI+jQR/GvaajeHotad212xJLbu/PDiz+tE2h1ATE7brGwO71Cpc/fOqXuZFP57LapbuCtrSoA4y4kLjC1NJPli/qA7vHZBmMIlY/J8WgSGMYBLLa/HP1r4ndoXGzLPJjJpZtTeMTdQ/cNauN/JdfFd70Ur3hxHTy7tPLpjN+BmytdtwbBt3S/6g/wZ4Ltx8AfYCEif2Nj3c5YVNtsbAqGNzXZdkZjpd2mxmBU5RdzOi2WwsxSOXCB2waUOM53N53/BRG6CexgT4bCYtmhyv0bQ1G1ryKzpFpF4AHvVQ3mIbQzWE0e5vzqKuaCJvcA26BN8vyeUS/3boG74HWud9T1Pz3dnk+MygNi0Q6mTHy5LCgWCiPjiwN0p/+uLedz3FIhy9MqtC9IHz9T95zDe6ab2aU1SxfWxngXJEkn7pjAvnDw1WzNMw73Q81swIiMnT8m/14ocLSUa/tP81/WMj7bJeaz3K0C+5y8X4fY8zawZ7YNqKRyDvu5egAwEOYejsIP1HNxkw5T8Np7SMxLpyYvVlNstRskgroIrNFGGOL66XOmVqWa9H+2B1myYOxXvWMtzKiQcnmOKB+81D3yZnsfNQELxZwU6QdcxxLHBQSDGk+H1Xi8QXA8ccxlGJgpAlng/Nw7cnA/YPa48+DNtvNz5jHBeubCIRaYz5p76fyKlZlgdSbAvef9oGFw659g6M8l77meOQa3/wOG/gF//P3u3JID/qID/sVfX/4bwA7Dn/r8NxymPyvzwUuKNIEMacgwrHETtbNJte/hyWuCvTaR2UcR6fwwu1HODyGqwOqPE7QJLuSNSWjrlHbcE1lursQNfkLIUsgUDQWma10EzQKS6j08cYG1r1Zk9pAF0gZoZHwmxDVGFaI2zbQCaTdVvBVD63/ad0VmcdHEymZeuqTGUIhy4X1U5dRO3BVZTp5UXvzu35BawkS3WIGPQvr1ywCkaqJPEtjualiii6mlvRUmSV9M5Q5TFCS8FqbjdQqIQpVDeB0dxmvlJMBAGLuV8l6zRd7brTK5ZvsybbPWvqISbmJ1LEik/7UE+cnE5lmZ1tkBgEVoW1XiPrNZ0tum1gpqKYtQiScxhB78+vZAZpiqIOF0dDpOp4CoZMXOuSKGN54AUdGnVnYbTYruboWRrMt77wpO/kz/ddxsCpfH8mKsRu38fp0hCCkIRC2DQdQoCBBJToA0LkPa57XwihHrNoJyhKlTLuupqJL2xVVmY6uFPpg3VuDyNFI24SlOyULSsaprRIr/YfK5zOikAIeDkKg1oFniEAVzD1N+eSjIDIK8L3UtWKGWg375SYrhB7eoKGUuHse8WoBa84bKkjY/8SA/0lpf0hP/ep1pSt2IcoKVMJtWBlf4GRWzZI0wvYbJolc3MmSyBoYlWcx1eQMsdVAlVKp4kRxvMufMg3l1j01A1Z8ggiU2mCu1Mct8RnxfoYKr4uOHMHI6AugHE4MiHWYfCr0Hg9mDRu0DqqlDUPJBiIw9h2EmWEJIq0ezJq3GY4fj8DosZl3r4W3PAVjyPPv2pyvHcpx5sg+eJJ4A1etrZrCFpAY9sRQW8fqX34KzDXSOrI5J8+mJfUVyloqFUyDl9NS8l43h1V9JRCuIprBEEhuz3GsgJoplPBUPP7dUXj4d0BD6uFLeW2FR9JqtR3KPRerZpS6EH8HpOBysdgSPO47TVjYVjYDSo797l8weRPhFS3EDUR7bTqXCWS1/vx5L5StH4oGfpQYYMlNMIW7TTJssnV5sHsXTNlztOyK3uGkSWQBGvIonFet+NZQ+AUSNlIVJWoHy4ZvRVD349VZAPkUX00h6zWZpb0zls4X1uBU8SnC2hscCuyVzKIGpyQHqcDyoJX3l9x8Sumpgsa61Or0jY1vQZ79MAQht7M3JvClxdDBO+6deNRglO0GGS19YNpuCcnnqqT8CBCLYR+GbFQn10HU0qqo4o2BDGt9dmWP5GF9WrqknSesjVVP0cdNzIrSsIH3JD1DShizkpDO1TSTwmNTY6ZlqjwuxVNIaDDpcbSnWCmnINdGGVfnQM45CopX+3Dei8Pa386sMIRqnko7Z5Awvzkj99couQ5HcJGTCpnoyQLGMaLJB9tIetE9f0LJwaXDpS2Iq5BcC/yAkqTDNZ4ASxQqukh8ay+ijnZ7wnDZHskDPywNzFiyGxZz1ums48tjA1NCW+Ambl0ys4oeqpp7nZyUPiJgH7ot/h/z82c2AhvnfXl0w96MkB3X93MLNKbD6iLnCN0B9Ct45gfvGGruM/XSPeR3ogjqeEBrJT48TwmHex3AFY4mNV1f/o5pAAjs53pQf6GBzGbWay6NWGcvo8M9/TU9x2/rBqx85+pI727Hs9RTSMIu9Hnyr49fSymu4XHp1bRmfbysrr/YXssZG4xmK9m3DEbbtKyoaXknArRwGTop7caN+ZyymzHJu1yLEUO6KcqrFZZ0WizA0cvA/0WATawDtPGgyXQDcOiW7v9kb5vnLUdbvIaJiGN89ziQJNjOVOj+L45TTsY2SWnNltdYp8AMyQt0OKwPjzL0pX60iQ63HS6EaRSGF7WfzNEwGWcFgHaT2lgsdQYZa52UwrUzoBaUw/BCrpQu4nhYBWLSwyWN4e8kjd7N7YdW3HxsBECNMMbbE0djzmk7IJa8rVVKo6UNEupLyfbdgcF4zCX0oYkIxeFaCQFFih7m4RrmqkQAMlMoWgcyD7JP1KA4l3XV6H5fXUNux4hMmTcOD2lNsKeOxIX1YIVkU4EqDGpko2qqwhKCjZAJEfgwRrwgIRMFV0Iev9YQ/sKcEAR+h62QqHTIKUtdtnsiPZbA41gjLbA7jfYsF86smOIIoLUWmcnQwtQGlUs7ka8VSqV7MZ6rlCiX3DpVxg8u9wSi7DWCEzsflNaraV3zCLFdxSW3jrCmTcB+d2kKyMMSVmJHWW5oulYS65f/vsLqFeEWIJwqvQNBREhEiPwbTlp3vXf7wAGf2FHW6oKSc6wF4t7rLepJakrc4K6cfcjKMKk3Z6BMkJJDr6ccM4FCjwSDSuDPeDKflt+Tm/15AphML3s7PWZ+fvwZXj8yQI2FJhZCG5n4xfqxQRankg8tu6V7Z5ueBZyQFSbprVvUAAL147HYkegMWswGN3AAykvyfe7J+Bq6H01/MTX3K/Aiz/0J4Pwa7tGgpcKlDqZ2k/MrqbYJCL8Fi9qFR+8HQ++O3USH1FGE/hLtMxuEElzFxMc8ZZmtVYYbAodSKGlqomhQL+4UUVLF8Hnb81h2dTBX0kzBHBVg85XJpHMHXh9i6chtY4FTo+kep6pRK9kchFHpfaBiNSvZiOztDlg5jMcOlyA3gwh38NSqBSD1GINgrnUigXgNPCzNWdNhplvmc+UxKRbc9a2Vj9souO9k8n7OATa2I2zJXgPPrHnesfbx9kTrnfvdY9E50LYjeiIL8aPrxrh7NgsXRm7E9wPQrIAxE8H0XW+PUOPhhVahuiHU4EGDbutXBfsSl+jX03Q0NhdmaSwjYsGqz6FHdGpiRMf8I0d+TsJhJiflmHQKWoyZHdRV2/X5cAelct6fnLKkQv3c9tspRbZIGSIQaqGhkkMhmmTal7GQZuYTBkSKohkAKgP6j2yRlfv5GArebeS1lZZxnEzfOJygHpTvc+l58IemuzVN7j1SA2381F9Aefv1LX9/0Pj9A7/nK/7o931cgo5P7y+ycXwBJt7gl0eCdi74xq/uY4FxuY+CNDv9YTWEp8hpFw3nj1MbRORR3joZ4TaOhuGvUAyN9YMbXSyOjmwuBRdU8sLsPm3EpB29IEW81T3vr52a23JUAVknqW1FpN5Nimsfz+3nzTCZlYN7KVOyA+70AdRRbKIv3dwwWwUj59mdF2iFJF3YufTSPgJnX6veid9zBnGQRHaloOgr//wVOP20dsTVujrYazi4ePFvR2bm3zrExJEa2CeqtbJ5KXLkiQzoYUcuM1sZKHsYvqbTR2CKlKFyZm/CVp4foWOT+ElWaBbJqe+fJmhqGZNG4cLi+Tj0wR95Aq8uUZ1W8Gc5Kx5mdIWrLSlkrMKVIGQ1DuwXsM2c8I5oocLmxniqT2Wg0U3o38W0M8TSm6LePq0dvIUxtbLFHwSTZahRvPOIaL30m0cHYSS/IvDp4IdTGnTmA1w2xao/wNfNlAOmfm1ET4TFcfAHDGeHXEEpDN4w3APVLTTND2FAyZ+oqhLJ/lIIc+u0zHaOWwagUQcXqg9efISXCS5zS86OUkvm//TJIjDeCmFisuf/6oxKEMCMCU8KHLmah9v0lF8SIH946eCkrP+WPJt/7ud+CpRMKtzTat0ea7dusTTiyqbF+W3OkfntpF54t8XGFQb1OGCqvHElFe3WmqWUkRMDAKDmDjlLAGEi3oyVT12411zgXVepfc7g0vKjC6cgYBt1k3kkl+BeSONlsl1jCdjg5ErGDI6yydUcOdmGI75FIPQEhrCVDBhiG9MzADJ2D3jTgjS58O4TtKkV1YWlVSQLivVTEPQQBirr0k/X2gqaCz/M9ve6fQj/aDNYfgl9lvh9/gqOHiD+5bMrafiISP2kro5YXhVCR6y5FW3LzLOhSGdDmshNsoF2qT+j7Xt19/gF/hg+0j7ThdrXv4t0+X9lVdi/PSqVbuDzYUkvhcgtjhsdleMfUd/C4hvqDH3vsdbCt9k1ZXmATFrcpkIdvY1/DYQe6Q8fqbLimpgucXxr1ODDZ3qZqKzCeu5bmfms8Yjy89mll9srI2h+6wNr+W5PZ7fPft++lcDNpUMAHjCViA1tKRU1uSMcHClwBptLsFbA8lPZMgZyP4n9KKpnS9De6DF1jDXomUZOWWIFgs3WKlbzzufXdlpqJNZetMtnfX51bfPB89oX/KuBa+Bp2NPBRAFT8CuwOgC1NGu3MWckBrSaZnDVLq9X8QFKn9S0Cw9fA3sDrlzH7UahDEztdZSnGvqcqNWY272oeef9hDXA7ffrJvHz4k0/AYcn7Tl/N4c1HBiA5XjqgTZFQBJobeBkA8Tfozwat+UUplQ2vUU0KPKn0l6WB3OIUmW6gzKzEg/vdg285K74EuLvf/hj/9GP/yQj4fwQoHz5IpCk5WgFxfqkSBolvUWMrSKaxhbn1X38KRvfo7WIIejSFVsnl0SrsVUNnGCllFTxuWaWJAltzc/goNG9CLjeHh0bxJ+xFw2ZymYUbrKkg02GTQ6VpIefKk1Aocs3n4AUoFOcAXF3Mr12KTaZpkzgTcsYXAgZ8LZXJ5EAzyBjX0gfI2Nbsid8bTf5KLcpM5gnfgoHyvlrUMi4DmmdekwTQLskY4k7IPleUKebXgumtdaXmzMfqzOvZLShYbjRN/D4bTGdMkwXN5RwtU2OWf/GjemEv7B0WMl/9rBeGDgH5hdT0164jf+2WmiufayzPZeY/dx3GNZGZLC80C73ko+avtu5jtl/bK2ynjrNPHtd0tFVePD/73Dz09PDoAdNk1WTj/tHRbI124/ETnGWjtV3xP6v+7xp32DiG+X7fJ533NDQ6ut84WTXZdIDTNGtVmKv02K8dFZqTx9mnjtva2369r0/TqxviV260dXV81Yz52uMnOMORRanRMkW7dz1sbPttafNw6QHO4P6Lja2/FfPi6xQ4e+i8zz+fx/7sA0s/aK3/yfyAo+yDS1/lbV8BkaAos7Awq6gAe8pihgsBn83MbkhYiGF3CHOBd9Xvdkx3gLdmgWlYctWLevaWIdattKyy1K3S/olQuU15oBfbJdC73CHAm+Ua4PUF/7NI/EjAGxKLhuHVNtICfg4r31yxus02+YGowEy5qhMkHtFpA4Q9z0ce5WXVyYSzokS4g354E/sjJgD3Wpk0x70v3u2gjXH7BiB/0ceLKiWfjlobvy7+q3ipYev39GBTfJBtRoC615FRoFYyaWaBwXhQ+RMZ6M1yNS7JdtEKsOBHaMdvs1Cu7mxYDgxtYQq/7e4kYsMtw6hrNecSZ66vNvyJz/90q8/wdb09dx0PTzaXz75a6u5HdtqVS1s/OWxDCJgLwDcKsRhcjkHQfWIjbjSPisTi4NN+eGgRFIgYIekwQhgO0DWIQbD9xEZsdka5QPAwswFmvg/6EWPkRzHKFnLByKEg4DgqY8hFYnJlQCsUYhAMnNiIn82jXPvh4YVwgliAz2IQXDixEWedUSBe+wG8RjRXHnQMYv+zMva3pc0DcND/TozM+ntxLkIzb9g9Vzta2aSdakkV1ZLtVEvaIXH1rMExjvHfj/v8/i7Gn93CA2OAQZ3b9ZAhWfv9tc0xmELOUAPZQw1kJzUYXCiBLKKVpIVWku20snEz0AFnqghpcqaCtElCYhVdSphFNoPpc3QL3Uq22QSW2sgWslVskwCbJ2xkvXnATjmvKlP225ZOurX7UW+Zi6rCwCqQa1lYQisQ7FoEMNQPerJHmsVk4e3/B485/yUCO9397btDgAZ6oVGQkr69be5LuHlLAHC7UE69CqhnWzOmG+imVtNZtHdzJeynA1h1XRdeYKQB3USn92/GBH4vGnYDWQ7yMJCzkk5DkdvmzzrNvltmfvjVp9AJ3dRqOk0pEWDmiY7oJjoddcp1XIqL5BD2HdGeFnWwF45f3sB5OoCZ1ASoME0jHdGHiaNoDQ34GdgVc0k0YFCQ5e4yGHi16nsEZx+sfpSutWWr4tjIpDZgE6SpGdCASCP0YeIoeiB3MC0hSEdfKFAb1BMi4JUYqEC2TQRv+MuvcMhn1+hxN/For/NULJLrjpwmBo4Z5TodBm1NRDACnnU22tsMf3OxjEA2LPYAvPgW61grRfudD8kgHDZlWTMGqPW8qu8Q0IUQ+U7wq5uh+Z2Iw70DfH6NsgOe+xecdaON6QBe2B4BszCAgJVkqe6gQFp7VcjjZ3EmmFx4tRK9yG1vqroz3iP2YF10vxuhgqwiksxTDR9LV4ZiBBKzZ/SH/TUvqUyy6s8MmqFUKyb0Qu/0NLCH7FSQgtxZUuXIED0DxD7dKezKRFq7BOCn1YLVXhHXIFW1YF7do3gcS8ol1fZi/CLBlcwZYBEkD6Oqg7TgloF1OQWHCJ5GTIVE6xkGi7VYFNLoS4NIly0wyDkpt917lf7ox3DOWilBbk/RFA25zlluEylgWWeE5FA8vYMG3YaC03B3XQTcqlSSj6mr1iHyqvyJS55zrnPs46AoBfeq41Sz2FSLwJrOpQpIq5Nv8TRehfimquLAi42ouJl8PdhCiBpaph/A483+ArCbdTTwHRsvsXxlk8kgq2WWxQmDRcWnsq3Z82aAV34X0rRMs4MQ+hVHdNWm2nKRLi7PSvaIqHJPakSTkPCBnj5iZe++h8j39GNRvmcdcQ6NbX/X1LPQfrP6G/cl7qZBdI2CVfVTlYddy2Gfvzk0JkmCzENZBYZFlsQ/9HarZeBXjHXNIMo2whKxI8RCOkRCFDWApWQ+5zDQzUwrKLjlsW4Rv80iti01VYOmdLDkRWIu3RppPNbm1fxyQbs+Q/bB8grAd0e2RTOAmnKUrEQzCgRkAikItPAQEK2YXeLq+9k6EoDnU5b3IZZR92Hoce/D8TbUiGdbRj16sY/A1O4+OndFfUx8ibdnYQo6FSKCkDXqIwGVvJGB+riI+CCm5Ne8BPksetg9nBvhwTFPNHcJZ8jUjbBXUgPkcInAo//QCLluEfd8WO6IGMkrBIQswoUhZM1XKMoyJx9IZy5ISZZjW8e+TvWq7UxP9KT1py5ruha+KIN1llKOBMDOrOpaiLn8YAX6G5dJFmzAr/V6p6mr+mDo6pHP5uB3tjUh4JZwG/713cnoMcDRDNZ4A6iipNK+j60qTtxeIXKl+lNCVusXt3q6uXGjYxOnwVU76AJLZxZpbkKnu5QU5AWNdiXH6rB69YanOE+at94EwPpuBINrcpySq9o6ZszlsfCepXzXdepixZoNW9169OpbJTyU8enzXsBZv38U+td6NWq5+MyV2wrizd9yW5E7vHjzqe5HvpMoxlbJ6JXb+z/robLwQYRxrsiNp12fO99dk0wxNXiYLCZG646HQkgL0ySavn7+HTXDPrPVSfJFshSplkuTbo555psrQyYdvU/ajXHeBbvsxlkDra0g/vdeQprJiIhIiIwoiIpoiA6n/fLbnzAQM5nJggsnOVgYZOROwDtAbb9LlqIhYPPHVK9BEAqqLAZ+Alx2RaMmzVocc9xZ5xghh5c8JkiWWWKlFVZZKNs7i5xhHIHFtkSI7qtvWimpKGw01kG/VOE5RH3FSiChoJXCwMLBIyCCkJBRUJWhKUcHY2BiYePg4uETEBIRk5BmjSrX38WWrVifLRx99IXu2hCHMZN08MkZD1uP0dkEDCvexSAOn/AZkfCM3afwG5tAxO/pQ27HLvBDgk34QS8cYqBBtAhR4bA5UJR9ynSxKxggculxBXCjGuYuJszCo/Mk/wcEAZDyHG/qQ2rfPUYLO+7P0LxZtKTXf4/3HV3kKC2L8TR20L1eKcav+tNJt8zn0WG3wO8Q1MK+6ALPSZzYSY6NiYbMBIEKIiXSUwUUleOTBiAV4tNrSWMNCHGvCda/qBj7YXIz+u5wIXY4RSHXyx0G3UghFpoONN1cjhGTI/E/EyfSQkviWAbUmzUx5hACKYj0PIEe6BCO/Vehwjs=)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.4",
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",