@qartisan/playwright-loupe 0.0.6 → 0.1.1

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,7 +4,43 @@ 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]
7
+ ## [0.1.1] - 2026-10-18
8
+
9
+ ### Added
10
+
11
+ - **Tags and dimension values in the Tests view.** Each row shows, under the test title, what the test covers as small neutral chips: its dimension values first (dimensions in config order, annotation-based ones included, then values in the test's order; the chip shows the value, `api`, and its tooltip and accessible name the dimension, "Layer: api"), then its free tags with their `@`, sorted. As in the filters, a tag a dimension takes appears only as that dimension's value. Each chip is a link that adds its value to the filters, keeping the others and the sort; a chip whose value is already filtered is shown active (inverted, with a ×) and removes it ("Remove filter Layer: api"). Both add a history entry, so Back undoes them. A row shows up to four chips, then a "+N" button (`aria-expanded`) that shows the rest in place; that state is not in the URL. Active chips are never hidden behind "+N": they are always shown, the other slots filled in the normal order, and "+N" counts only the chips actually hidden. The chips of each test are computed once per report. No chip line for a test without tags or dimensions. Other annotations stay in the test detail.
12
+ - `npm run perf:sample`: writes 5,000-test reports from the renderer sample (`loupe-perf/`, gitignored) and, with `-- --measure`, times the Tests view (opening, filtering, sorting, searching) in Chromium, optionally against another renderer build (`--renderer`), so performance measurements are reproducible.
13
+
14
+ ### Changed
15
+
16
+ - **Search covers tags and dimension values.** The search (`q`, in the sidebar) now also matches every raw tag of a test, those a dimension takes included (`smoke`, `@smoke` and `layer:api` all match), and its dimension values, annotation-based ones included (`BUG-42`). Same rules as before: case- and accent-insensitive, every word must match, as substrings.
17
+ - **Trace command: absolute path over `file://`.** When the report is opened from disk, "Copy trace command" copies the absolute path of the trace, computed from the report's own location (`npx playwright show-trace '/home/me/app/loupe-report/data/…/trace.zip'`), so the command works from any directory. Its help now says to run it from your project root, so it uses the project's own Playwright: the same rule as the rerun commands. The path is decoded (spaces, accented characters) before POSIX quoting; a Windows drive path loses the leading `/` of its URL form (commands stay POSIX-only). Over `http(s)` and for a `file://` URL with a host (a network share), the disk path is unknown: the command keeps the path relative to the report folder and the former help. The "Download trace" link is unchanged.
18
+
19
+ ## [0.1.0] - 2026-10-18
20
+
21
+ ### Added
22
+
23
+ - **Screenshot thumbnails and viewer.** In the test detail, each attempt's screenshots are a grid of thumbnails (lazy-loaded, the attachment name under each). A click, or Enter / Space, opens a viewer in a modal dialog: the image fitted to the window, or at actual size (scrollable) by clicking it or with "Actual size"; previous / next with buttons or `←` / `→`, with the position ("2 of 3") and no wrap-around; "Open original" in a new tab. Escape, the close button or a click outside closes it and puts focus back on the thumbnail. Page shortcuts are inactive while it is open, and any route change (Back, another test) closes it; its state is never in the URL. A missing file shows its name and path, never a broken image.
24
+ - **Screenshot comparison.** The `expected`, `actual` and `diff` images of a `toHaveScreenshot` / `toMatchSnapshot` (same `comparison.group`, same attempt) form one card, shown before the other screenshots, with four modes: Diff, Side by side (expected | actual, both at the same scale), Slider (actual over expected with a divider) and Overlay (actual over expected with an opacity control). Only the modes the available images allow are offered, and a group with a single image is a normal screenshot. The default is Diff when there is a diff image, otherwise Side by side; the chosen mode is shared by every comparison for the session, in memory only. Slider and overlay are `<input type="range">` controls, operable with the keyboard. Each image's natural size is shown, with "Expected and actual sizes differ" when they do: slider and overlay then align the images top-left in a box the size of the larger one. "Open in viewer" opens the comparison, with the same modes, in the screenshot viewer, where it comes before the screenshots.
25
+ - **Inline videos**: `<video controls preload="metadata">` with the attachment's content type, and "Open original". A missing or unplayable file shows its path instead of an empty player.
26
+ - **Trace command.** Each trace attachment has a card with "Copy trace command" (`npx playwright show-trace <path>`, the path quoted for a POSIX shell when needed; copied with the same fallback dialog and announcement as the rerun commands) and "Download trace". Its help says to run it from the report folder (the one containing `index.html`) and that it uses the project's own Playwright, which must be at least the run's version (`run.playwrightVersion`), since an older trace viewer shows an empty screen on a newer trace; that sentence is left out when the report has no version. The report does not serve the trace viewer itself: it needs an HTTP server.
27
+ - `←` / `→` in the keyboard shortcuts dialog and the README.
28
+ - **Run details** on the Overview, after the projects, in three groups shown side by side when there is room and stacked on narrow screens, each a description list under its heading: **Run** (scope, "Full run" or "Partial run" with its reasons; CI, the provider or Yes / No; workers; shard, "2 of 4"), **Code** (commit, short with the full hash in the tooltip and a copy button; branch; repository) and **Environment** (Playwright, Loupe, Node, OS). Empty values are left out, and a group without any value is not shown. Plain text, no links to commits or repositories.
29
+
30
+ ### Changed
31
+
32
+ - **Header layout.** Two columns: the run on the left, the controls (keyboard shortcuts, theme switch) always top-right on the first row, at every width. The left column has three groups that wrap as units, always in this order: identity and verdict, status counts, start date and duration with the environment. The suite name is truncated with an ellipsis, the full name in its tooltip; on very narrow screens the verdict goes under the name. No horizontal page scroll down to 320 px.
33
+ - **Branch and commit moved from the header to the Run details card.** The header keeps the start date, duration and environment. A commit is shown with 7 characters, the full hash in the tooltip and the copy button.
34
+
35
+ ### Fixed
36
+
37
+ - Dialogs: reopening one right after closing it with Escape could leave it closed, because the dialog's close event arrives after the reopening.
38
+
39
+ ### Security
40
+
41
+ - **Credentials in `git.remote`.** Versions up to 0.0.6 could store part of a password or a token in `run.git.remote`: a password containing `@` kept what followed the first `@` (`https://user:p@ss@host/…` became `https://ss@host/…`), a password containing a raw `/` was kept whole, and query strings (`?access_token=…`) and fragments were never removed. The remote is now parsed like browsers and git do (the last `@` ends the credentials), the user name, password, query and fragment are removed, and a remote with an `@` that cannot be parsed safely is stored as `null`. Without a scheme, only the `user@host:path` form with a user name without `:` (`git@github.com:org/repo.git`) and strings without `@` are kept. Reports written by earlier versions are not rewritten: check `git.remote` in reports you have shared if your CI remote can contain credentials.
42
+
43
+ ## [0.0.6] - 2026-10-18
8
44
 
9
45
  ### Added
10
46
 
package/README.md CHANGED
@@ -37,15 +37,22 @@ A run that broke outside its tests (a spec file that fails to import, a failing
37
37
 
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
- - **Overview:** verdict with pass rate, run errors first when the run broke outside its tests, error categories, project cards.
40
+ - **Header:** the run's verdict and status counts, its start, duration and environment; the shortcuts and theme controls stay top-right at every width.
41
+ - **Overview:** verdict with pass rate, run errors first when the run broke outside its tests, error categories, project cards, and the run details in three groups: Run (scope, CI, workers, shard), Code (commit, short with a copy button; branch; repository) and Environment (Playwright, Loupe, Node, OS). Empty values are left out.
41
42
  - **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
+ - **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, stdout and stderr. Previous / next walk the Tests view's current list.
44
+ - **Attachments**, per attempt, linked from `data/` next to the report (never inlined in the HTML), all working from `file://`:
45
+ - **Screenshot comparisons**: a failed `toHaveScreenshot` / `toMatchSnapshot` gives one card per image name, before the other screenshots, with four modes: Diff, Side by side (expected | actual, at one scale), Slider (actual over expected, a divider to drag or move with the arrow keys) and Overlay (actual over expected, its opacity to set). Only the modes the images allow are offered; Diff is the default when there is a diff image. The chosen mode applies to every comparison until the report is closed. Each image's size is shown, with a warning when expected and actual differ: slider and overlay align them top-left. "Open in viewer" shows the same modes in the viewer below.
46
+ - **Screenshots** as thumbnails. A click (or Enter / Space) opens them in a viewer, after the comparisons: fitted to the window, or at actual size by clicking the image; previous / next with the buttons or `←` / `→`; "Open original" in a new tab. Escape, the close button or a click outside closes it, back on the same thumbnail. A missing file shows its name and path.
47
+ - **Videos** play inline. A missing or unplayable file shows its path instead of an empty player.
48
+ - **Traces**: "Copy trace command" copies `npx playwright show-trace <path>`, to run from your project root in a POSIX shell, like the rerun commands. When the report is opened from disk (`file://`), the path is the absolute path of the trace, so the command works from any directory; when the report is served over HTTP, the disk path is unknown and the path is relative to the report folder (the one containing `index.html`): run it from there. The trace viewer needs an HTTP server, so it cannot open from `file://`; the command uses the project's own Playwright, which must be at least the version that ran the tests (an older trace viewer shows an empty screen on a newer trace). The card says which version, and has a "Download trace" link.
49
+ - Other files are listed as links; small text bodies inline, collapsed.
43
50
  - **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
51
  - 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
52
  - 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.
46
53
  - **Suite health:** dimensions from tags and annotations (with hints for unknown or inconsistent values), slowest, skipped and flaky tests.
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".
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.
54
+ - **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". Under each title, chips show what the test covers: its dimension values first (dimensions in config order, the value alone, `api`, with the dimension in the tooltip), then its other tags (`@smoke`), sorted. A tag a dimension takes appears only as that dimension's value. A chip adds its value to the filters, keeping the others and the sort; an active chip (with a ×) removes it, and Back undoes either. Up to four chips per row, active chips always among them; "+N" shows the rest.
55
+ - **Sidebar:** search (`/` to focus; every word must match, ignoring case and accents, the title path, file, project, tags or dimension values: `smoke`, `api`, `layer:api`), projects, folders, files, `describe` blocks and tests, with status icons, failure counts and keyboard navigation. The folder shared by every file is not repeated.
49
56
  - **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.
50
57
 
51
58
  ### Keyboard shortcuts
@@ -55,16 +62,15 @@ The report is a single self-contained HTML file. It works offline, straight from
55
62
  | `j` / `k` | Next / previous test | Test detail |
56
63
  | `[` / `]` | Previous / next attempt | Test detail |
57
64
  | `n` / `p` | Next / previous error group | Error group page |
65
+ | `←` / `→` | Previous / next screenshot | Screenshot viewer |
58
66
  | `/` | Focus the search | Everywhere |
59
67
  | `Escape` | Clear the search, close a dialog | Everywhere |
60
68
  | `?` | Show keyboard shortcuts | Everywhere |
61
69
 
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.
70
+ Single keys do nothing while typing in a field or with Ctrl, Alt or Meta held, nor while a dialog or the screenshot viewer is open. The keyboard icon in the header opens the same list.
63
71
 
64
72
  ### Coming next
65
73
 
66
- - Media viewers in the test detail: screenshot comparison (side-by-side, slider, overlay, diff), video player, trace viewer.
67
-
68
74
  History and flakiness tracking are planned for a later phase; the JSON model is already prepared for them.
69
75
 
70
76
  ## Configuration
@@ -117,6 +123,7 @@ Node.js 22.12 is the minimum because ES module config files are loaded with `req
117
123
  | `npm test` | Builds, then runs the Vitest unit tests and the integration tests (fixture suite, and a sharded run merged with `merge-reports`). |
118
124
  | `npm run fixtures` | Builds, then runs the fixture suite into `loupe-report/`. Its failures are intentional, see [`fixtures/README.md`](fixtures/README.md). |
119
125
  | `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). |
126
+ | `npm run perf:sample` | Builds, then writes two 5,000-test reports to `loupe-perf/` (gitignored), from the renderer sample: `sample` (its own tags) and `heavy` (7 to 8 chips per row). Add `-- --measure` to time opening, filtering, sorting and searching the Tests view in Chromium (median of 7 runs), and `--renderer <index.html>` to time another renderer build, for a before / after comparison. |
120
127
  | `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. |
121
128
 
122
129
  Tests that drive a browser need Chromium: `npx playwright install chromium`.
@@ -4,8 +4,15 @@ export declare function detectCi(env: Env): {
4
4
  ci: boolean;
5
5
  ciProvider: string | null;
6
6
  };
7
- /** Removes credentials from a URL-like remote (`https://user:token@host/...`). */
8
- export declare function stripCredentials(remote: string): string;
7
+ /**
8
+ * A remote safe to store: credentials (`https://user:token@host/...`), query
9
+ * (`?access_token=...`) and fragment removed. A URL is parsed like browsers
10
+ * and git do (the last `@` ends the credentials); one without anything to
11
+ * remove is kept as written. Without a scheme, only the scp-like form and
12
+ * strings without `@` (a file path) are kept. Anything else with an `@`
13
+ * cannot be cleaned safely: null.
14
+ */
15
+ export declare function sanitizeRemote(remote: string): string | null;
9
16
  /**
10
17
  * Git info from Playwright's own metadata first (`metadata.gitCommit`, captured
11
18
  * when `captureGitInfo.commit` is on, by default in CI; `metadata.ci`), then
@@ -29,9 +29,37 @@ function first(...values) {
29
29
  }
30
30
  return null;
31
31
  }
32
- /** Removes credentials from a URL-like remote (`https://user:token@host/...`). */
33
- export function stripCredentials(remote) {
34
- return remote.replace(/^([a-z][a-z0-9+.-]*:\/\/)[^/@]*@/i, '$1');
32
+ const SCHEME = /^[a-z][a-z0-9+.-]*:\/\//i;
33
+ /** `git@github.com:org/repo.git`: a user name without `:` cannot carry a password. */
34
+ const SCP_LIKE = /^[^@:/]+@[^@:/]+:[^@]*$/;
35
+ /**
36
+ * A remote safe to store: credentials (`https://user:token@host/...`), query
37
+ * (`?access_token=...`) and fragment removed. A URL is parsed like browsers
38
+ * and git do (the last `@` ends the credentials); one without anything to
39
+ * remove is kept as written. Without a scheme, only the scp-like form and
40
+ * strings without `@` (a file path) are kept. Anything else with an `@`
41
+ * cannot be cleaned safely: null.
42
+ */
43
+ export function sanitizeRemote(remote) {
44
+ if (SCHEME.test(remote)) {
45
+ let url;
46
+ try {
47
+ url = new URL(remote);
48
+ }
49
+ catch {
50
+ return remote.includes('@') ? null : remote.replace(/[?#].*$/, '');
51
+ }
52
+ if (!/[@?#]/.test(remote))
53
+ return remote;
54
+ url.username = '';
55
+ url.password = '';
56
+ url.search = '';
57
+ url.hash = '';
58
+ return url.href;
59
+ }
60
+ if (!remote.includes('@'))
61
+ return remote;
62
+ return SCP_LIKE.test(remote) ? remote : null;
35
63
  }
36
64
  function githubBranch(env) {
37
65
  // GITHUB_HEAD_REF is set on pull requests; GITHUB_REF_NAME is a tag name on tag pushes.
@@ -55,7 +83,7 @@ export function detectGit(metadata, env) {
55
83
  const commit = first(gitCommit['hash'], ciInfo['commitHash'], env['GITHUB_SHA'], env['CI_COMMIT_SHA'], env['BUILD_SOURCEVERSION'], env['CIRCLE_SHA1'], env['GIT_COMMIT'], env['BITBUCKET_COMMIT'], env['BUILDKITE_COMMIT']);
56
84
  const branch = first(playwrightBranch, env['GITHUB_ACTIONS'] ? githubBranch(env) : undefined, env['CI_COMMIT_BRANCH'], env['CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'], env['BUILD_SOURCEBRANCHNAME'], env['CIRCLE_BRANCH'], env['GIT_BRANCH'], env['BITBUCKET_BRANCH'], env['BUILDKITE_BRANCH']);
57
85
  const remote = first(env['GITHUB_ACTIONS'] ? githubRemote(env) : undefined, env['CI_PROJECT_URL'], env['BUILD_REPOSITORY_URI'], env['CIRCLE_REPOSITORY_URL'], env['GIT_URL'], env['BITBUCKET_GIT_HTTP_ORIGIN'], env['BUILDKITE_REPO']);
58
- return { commit, branch, remote: remote === null ? null : stripCredentials(remote) };
86
+ return { commit, branch, remote: remote === null ? null : sanitizeRemote(remote) };
59
87
  }
60
88
  /** `name` comes from the config (`environment` option, overridden by `LOUPE_ENV`). */
61
89
  export function detectEnvironment(env, name, platform, arch, nodeVersion) {
@@ -4,15 +4,16 @@
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),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,d09GMgABAAAAADd4ABAAAAAAgiAAADcVAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoFeG88wHIxKBmA/U1RBVF4AhQQRCAqBgSzmQQuEHgABNgIkA4g4BCAFhSwHiTgMBxt/cSVjW0Yz6A4cKkpvNYgi2DhCwJh3sxEWbBxAP9Cr7P+/JTcGDOhBs3pYmSxSVQ27UIXYlJgDp7CLi4zxVHNVqXNzaOgdea46iUqi8qIyst57NgxffybwauB42fyjCjcbjegmD1+ZWXsyYpPVwLDJsDr4IzTUF6VOo1fH2HSrZJbfl7RozFZZ30PXHyh5BrjDihjj5ATxOfVn98lKItdqPwHAFYCPRGQNkZv9z2xjaQJKCyJiQ0VBtEPQTmlqTBdjaIIFIaeQUjXWq12N7b6nSUxppntPr3TT77rXe9qP/MP/yd7/o4HvnJ1NSjHAKtFCTVJLLv9PDX479y0hEkjESig0mNGAdrvB1qzm7szf4flt9hbJKkAbpD75qf5RfJD6oICC4iZGb6drXcaVc1F54a5y64t0V5sXUf/nVJc985gpc/L21qZWJpdSpHSBuyC4wRlF+P6pnN4dIBnx8Tk8LFc9dwCAAML7z5nOSKvAjBU3iPzBq59EBiqzdZWLECKyl/h0aU99paLdftRMRJbIFcB/AioIDJ4D4ZudcOtX5ZWpZTqDuf1bvJ+34EdEvfjGUy62DnIuUxC6wTQWa5r7WAAyXC4N6Oq4hzO0OpByXBC4J3COfMujeDLWLsk3JN9RxvpYVdYG6WXKfJIoyJSFn8lHihOliSoXD/8t+2b3QpZfIguybCGxrrd6NrytMwRZpzfKx5CKPOTgszCo7BlCUhvUHpzTwL/u+9TnsvtmVc04qSclCCHk9v1Z/5Op9n2BZLvghamcyjIRQoilS0lH1qZjmbOsRp7gzXe5L/UkYxpjTFMIIYwQ3vi9Y7j2kSkVcsTW+mkSEEpAC3gRCSHEBiF22AnCwJhaFqaCgENUly7qynl4XCCax4jlceRcIZfny+dq5VzHwE1svMpaXquO1/PxFn4e0M7DwnyL7bJ/F/Hu1hx63wLoMof+8VH/uSl+x93TQxAwauBzyYF/giGgkaISsurq1lUgYt+dQgEQAQPoOgUQEOg+u7UFwIsmBSD60bJ5gIsgZ3A5oJQpZSERo1Pt0wCRfxGSL2NAZoi1ZXY64FX7bxiCXP7Twm6BZzQG3xyNII5c5CV4V6eOJ9oCXFUkKNmnov+1UWn9otM6SY6+dL+dem2xjgWxYhiXmKdDk05Sr1VVM4FTqkojDeUIE80huzagqqQXBF9VmKJc6ThIQAD+/gbg/9r3fclqn4w7dna9heAUeYXIYMzX4zw+fg4ECncBhYWIMO8WIp8cth9ZGsrtKKdIRsymectxV6CsAYAp0pYfwwnjPFgcaolJ8K0cmRbGRFaIbnw5AH6rmIEZcBlQikj8YQdil511RWoPswNlsMLsMGHcSZjoyhIxLWd89LXHMpmN2jwE/8LEAKOySBbFhCyaJTEly2AaWvj41ZVV09oqLlLMzGx8bUG2ntXjRjA38wz1hgNdXTnpJoPC6bHGZ3PWQjvLXMAs5CqDvP9i0SCXBBiw/i8VT2I9C8rn103BveYZwQGQFFs5rWHoIkmxu2GfCrDkPo/DXciijoC33ntPEHpwp67G7wyABmDlTbWHrgstNhyu8t/uyLqptUq/yvwWyqlpFAUQrKTnGt0aBIRz1wH4xYGKybW+ENmX9Co7KGX0OhZnI/2GYoYB5XMBKGjAN1tODh3PWwzTL0XQbXGKVmx/UsSeFiChfFBUZXKFeFq7VgR4+tI0XIx5LBpx+PLO/fwXL7XpSDwpCW1PSZC8pI6VvCt+OT5VrV9xK6e8WUhMnt7eX7F69fBYg+WKXtCfQW3UXEiY5OHyBV7xkkhSdrb98wPWqw+XJsBaN9XdRVH6CSbhd3sjKjjI1FnJ6xREQ54VgqqVemxZ7BjPAsBlBN1l3+eI1nZ5vaJql9V4/b4S5AkZr7pctelvf72wbYBf1jA42+pVvBjWfwXn35N4MEWDSEBfBBJPNIYYyaKkSiWhlC+WmkEqE5sCVaoVqmVXbAOPUl5NTFr42QQEVAkLq7bFdit06LDagAFrDBu21n4HrTNjht0ZZ9U577x6F83a6G3vcHrfArdrrmmAyAGRSFRUPDQ0EB0DiokJYuGCeHhQ/AGHxrsJkofmqeRQadJNxcZRSg5lcAZVc7ZMuXB5PFr+akxqGjRa5TAV1pxKxwZRxSNVc6oVPEYNEjAodfWNCA4eCC8fRDMc0cIJfozAg1FOj1Eoy9+Gbrs41w4Uo2J8xnc5zsIFzqGQXIELoBAYE1F47PsYLscicgikKo+Eo6KkFwGBZC6TGfMqSsSiBooIEAFziyIWybBbjjOXb82jaJUhlCPcUtTXi2AgwxojBZynmlPUcgk7slAxCkUFHOUbDjVqggI7DJ+xURBukYNCSEzMxMgVFZV6Z0i3GLPFmK0di8dc2JAMFncIeaNggLNf7gU+KuwLSwktgr2CcoGaf9dES1OW/+P1SYW8y7xZXj2Po2bc/7gHo56MqrjHWJSnURJ5M/KuiDSFRDoiw5E45z/OLxXokD8czneIFfxe+x7nLc4Ax8XJYb/AXsEuYN3cflwmibGeaRfbve2qweVBXf/Pfkef32f3ac1/zb/NO01zU9dUxlrGJmvs6ljt6PAIv9bWSgrpjVfvVXWVqGJbb/mzXI3me9CZUlE+N2Uf8kSuylxhEvFffBufQMT2B9aYXPlMYrGdmSCMVBUuE8z4aCp6Yia52dZtfLna1bQ2CCgUsl2VPdZ8Ddyrs/7W9jDf2KPc0ePc2dPNXQ00nruJd8bfZIdq7UhHC3Wis23mku068+7mmq8D945HB+3Kurrajbr7sI/qD3EYmPOO673mAMMw84Q5rkJ0aE73uSiwGCIoDI5AQSa1faofO5xXl99TkFH3oVHZQtlqWy2EpToDhcERKMipqimvJb+oF2jmH7qSfZNcUG88UvS6GOBJkCiJTLJUcop/VvXkteUX1Is0FqEqbIuttl1fl2u9mvqhMWBCxRTPjHNnKBeVzB5aFEkG+wcxKAyOQEHuUzOoWvJil58qWInpWdMwZQu01bb9DjcCVXtb60L0Txv6NA2QBjUMR4zJRE5yTHmb5mnUXUTM4sP4aN0W2dwX13TZ0z303iScyWG7hKHMral1qi/ZJ71Z7QbMsw9yNCKVccsvA/vTEGO6poaRDWZBHAqDI1CQU2qrVKX8ou7QGMhBwnB0Mfo1GMKTIFESmWSp5BRFx6FnYGRiZmFl4+Dk4ubh5dP8wFwwDoHC4AgUZKG3ioEnQaIkMslSySmKNlWoSLESpcqU09EzMDIxs7CycXBycfPw8mk+7IcClD2YLjvcQ+pD9RPm+kPzQDx6HgZ4EiRKIpMslZyiKjQzgyxky5E7zTsov0ZNk+si7cllB1sX0f1ja4+8erOPp7/81hhiwogpt5sIdNFNk5OY8gfmoacw8CRIlEQmWSo5xTnVC5U8bNVPnZReDIxMzCysbBycXNw8vHyan72Hr4fQ9GN9mH413ZHaWE65b3/EgeLgdLpUJ8pwcv+U72ZoTuNMXjRplriWGV3RqNE/gqHCpMbCxhEpCjd4K3wCwukyWiJpolMcxBSSiIU04hCfCaVEl0QmWYpU8khDOsW/KampcOWRyIdWfJRGRdtWqEixEqXKlBcdl56BkYmZhZVtWqWhxrEN6m0Mhzi5uHnCC5/maOGVftIeaK9kj3Td0x6+Plz/bsBbg1ZzJW+NK5pwadJr+204UBycTrvnhGknD88ZMc/xdmrvWF5luVZGJdgkBCgMjkBBHqb2ibhOO1VoihQrUapMedGJ6BkYmZhZWNk4OLm4eXj5NP+Wn6/LgG4Nuf23PtKIS+OmTOoxbcQc2zxKYnChFk3RQXoGRiZmFlY2Dk4ubh5ePs1rSNMhn+vBDEzzypkpwomSnSzZoiMCMA0iKAyOQEH+M7VB4kRBNGDS4BjDcWXjvppUMG3KYbtOACdVzgX6nvkZwGuouvKKnk/MapDdRKmSUXfW51F5yVGIHmKAJ0GiJDLJUskpumruBw8V5Lep/6JhP0AKIcKRW9i2Ytv+lD2LymiLDvawdoi6aPSifwNoNBzh+CguF3o00OIBrz0Y6O0u6PFuedgfIAI7gDgUBkegIJ9NjVDlq3txfqagbX/ZQemUvZuOdKQMnB7mhK2TnGwQg10ggsLgCBTkOWp+FXUAkCMifE8H1Bn9uTZRAcd4nZpZlzPQ3FgbbBbiUBgcgYIs9JoYeLV/RUJEoiSRSc6UoVRCDsWah9uXUpsrRJFiJUqVKS86Jj0DIxMzCyvb4cpQVcpqNG0w9TYWB5OTi5uHl6834jA1bY6pjjCdfexVdM1bt0lsuGj9vosxs+5T9cR93JrGWftxB9zB6TTLCYaT5Szi/O5iErNua+w1z/XuNa9qupaN6+HG+JGqGHAaiENhcAQK8hw1l9eb+cMH3eJ0FUvj0a0lLDrtzLDvJgiTco5QoEleYzE/SsE8iENhcAQKMqlxqtSmIg6UlFpXUG/x8xth3aymwsthJsmRmBE74+UiZbY2sNKpvIaqmKxqFYt7bEJtvlPdeA0AAACAD4P4VR8sP9rRVsPhoYr+9Fy/gBgV6HUwHE+CRElkkqWSU5xTbQMZm9Q9GkJX6BkYmZjDAitbFWs4Ipzi4ubh5dNcQqE2n9uj4/63SoStA7OKp1yn3PisQhxKqhhAQQGdOj010NpgzwEAY0wZqgZUV+8NS9xVNM6MuVjnddvoy2hfUeiKFCtRqkx50YnpGRiZmFlY2Tg4ubh5ePk0NxyFvtpoGdc0N8potxRKkWIlSpUpp6NnYGRiZmFl21XGVVVfa4aLmycbtHkjfGie+jUFQnWe64LobnSub5xrDjEvgehMYrAcAjoZPQyMTMwsrGwcnFzcPLx8mqud5RYlW7Gt9ao7DXShy1s0sxH61h1d+arVRK6li9AgSR4/4CQUe6Ej2CuHcCDWETH/W1DotiFWAD7m/+AcOsDqgDUAawLWAqwNWAewLmA9wI6AnQA7A3YB7ArYHbAHYG9AwWchHRMiUwBqXVyhUFOBdtqoMCqKiqMSqBQqg8qhK/pmVcAZrX4JYydN9uVzqgghJypbBoGlucUM2zXWtWUzTkA/mZHcpNOU/I46yimRaLOIYGWLZR5ow1UEWtKf54lGUlBXty8gviwlWbVDT7IxIq5fXASZMoM2DBGlZpQwvSuapnmWnPPVfMurCq5r1KDnYjieBImSyCRLJaco2rFCRYqVKFWmvOgIegZGJmYWVrasCnQTZ7jg5uHl0zz1U4Iim9ynTfu3hUhhAzi3B30ppDkvUlRPe9QHQIttJK6Pje9AIiX13Q1sIQqjNgcHgH9k2NdGfdDWwEfKcVjp4RGXTbGbGWVO80q43rj61PULDCoYsjZqvMfyt0e8dtCcSfOMgud0iDH+MxASX9RgSiNHaP1Hm7n2qOqUNL41xqXa+cacfWyj5dljcY0bZn+dCuvZm+ZvHmY+24Dp4vuD2jvjqj+QA0YgUBgcgdJIz+oXAmj0mTLAMlytYcwBm4EAhcERKMhXUntE/LsCfy+bmS6PtCOFihQrUapMedHx6RkYmZhZWNmySpUjwgkXNw8vX2sewVjVMn4pM0AzaNFwOS757Xc/tHPNY0gCSwRf4uizAUPIKuvZQeiart3iAbb16nFr9VfjDZgNWprcRpKtmSXQR/J7at7nFOc9efocgIYVCinMQGFwBAry56L2mrjlq9+7DX+zqoAVb/1CWrzxcTfcpl0BgDNPUBV0XeEqDboLVJP37FVHCREZGQx0Lx6eXu9pEaQhf/UlSJlMJpPJZLJt1ctC+HDkOPX3KJXVOegIscdCWzLnJbpfbLPrA5otu440XmNS4JJGckdY5nS1teq6+KN6xw+MScrO0LpIGpIgigCNIdw7N2DhBppFEkf7A76GjnDAb3GJBpoLs/DRPtaTPeKjMHirT54qBK2VFOrCgMeNsTx1l538IRD4cLduAt4fL7/uMxBsBWv+99SrAdVfTT4nMH8F3X5Qsbmiop/h1jZQAIh6iBFDGY1RKSm3PCHpb/Am5K+t+qBaqKaqZ6pVVU7FLXfLr+VoeYDoQ4W/sWVHiHo0iHSEV0QKcggwmebQyKTetBYOQfUMTOz+JyrD1bE36i/7+MnmbiGH0p+aJOO9OB6PRGPoIzEQiy4Y0KFRDS25L5BaFvph04Kzud+hnbxhO5NKAd88oGF6/npfoZPAX6FKdTLhR0woOCl/np+wL5dvvPbbJPqDH1BtuqemhQV8HY410d7y97S+Xsty+uXUpBP9oTyE4BoX8IfIbXAt9m8ZQWzl6Sn+Igpj+ccF/Y2HtXzeAfxOCLF8Nv21Cqhlif5ZBeSydGt+rqY8/asKFsoRfIiXazVvIPNEk4ngE3ZC1nTHy1sBgio1GZVO+e8MhHkKalIXRATCE7OOTk9ekOXP3mEvCMzlooZvn8CEgDp0AQ925DQSEwvxUvVdS1Ib6060I4o0CFlGESFhz1KAnO0P9E6ZpKZuCpIcWhEoqAhxBxxeyY6VMZ3RVQs2cW0IK6MC8RDAhIMdX1K/u/5BRhtMJlLoCg6ts2F9efqurIPltPEYHMizcx1gne3Lj+1lleHzzZ4IzAFY21+RNd6qDGAWc+bJ0MXhy0D5LfJmBOASgPgrzwFmJARBJBQwKRQwL+SAA9u3QxI44ltjCFLBvQ51+qEIQoaPgEIgMQ2AABQQEoO4EMhHAQEQk4oAkEBhhIFjeeA329KkMCJMGdR2O2ApZiwUK/O1/Cg/KbBUZXTGSaUiqUQaL5VJNdIK6ck4YdzjcQ/HT4nnLS1hQEpFY9j0MqWGA7ScPIlUKBXfavXH63zABgB04QCGqzxU/2X8+9//f/3//Ue9AB/9/miBH4T+xZLPJz4Mfh7+7AW+BgKWBGzqE38DxMU+PxRxejzg/2avMuKil71v0bxZhxw24apB+w2YNGSfj3zgQ2PmQDR0TCxcPHwCYjEkpOIkSKOglEElU558BdSWO2bKcZ+ZjkKrgo6BSaUq1VZYp5bdBvUcGjVr4RcQFBK22RbbHfG2oz7xglHvuuQ9l73jtQiv2+WsT70Rw1s+9oxnI33uVS/F9LTdznnSE54yjoDAkHAUVAxR2DgiRRNaRiRCvGSJkqSSuS5FrizZcmika1WiUJEyxUqV07Mxs7Baa6VVVjPayMPJxcvthgbtNrlPm62abCPnc9oZJ5wy4yQIdowHiBYgpwViKWCidwCmfAWgvALksQAS0m3ASWXgpAVZruxcgnAt1/1zCsGGohQGSfcI9qgqU3E3YTBELwKvqFe7CEgqQFoEnbQWk6JIcJ2G7gQEpAUTbIViENhUGz3RJfQnhdb7XNQNiCtKSDPHOjD6umRwgRDeS/lEtwSYLmBEAqbwCiMxNsalUiV0OrZ3M2hJ2GVQFINgM9gSGiJhM6ks6rEeJkbNJvkkO4JGi2flRZA8thRDlMDygoyJKd1aMQGWFZgMJsUvnyqYZFPY5Q6XzYocVQFPwOILGFwme12gSLPoMBJlq4TB4D5GEaXTPZNzg3GUFJ3sSGyzA5eblUWSj0h05bcsi5VO1L3Cj+MUCdgSaSPoVJLJZuA4UnaWZCqWjRJb8jRMcNKSpVDEZhFBCjEtbNpGnFwYl7YlbINBrThOrDw+xuubkbHspl7XRceZmMvFGfQWbqJ6rNPaXa36XcCwd3uwsXgNgN6jP+i10Ny8aN8TF6dRi8elGBwSwW7MGR62ZmmbmyNPnSZcOUTJMmckM409TSeHyfhF25EJPF9n0HET9Httir+l0VI9ZCK0NXhg5o936FhElq9FvXPYaooCd+Tt2N274sjqMGQi4mNPhmqF9TNgla5HO2M0HK4zRBGzmtYODUK8pnSFmom2GumyD+hj/gAtUXIIw5nL0cEXgWcJJwPVSZYNbtIwDcZHAr4kb3pcmVQdFGa6lWuzIWthAI0nhadvyq1z+FzTgVNL16eHQC+1zC7Ri3QLoQvklHabLUpsuwnLEu5rvBt9zvOeM+ytXbHlsfHgzcYqZ26MbY3SlVqMr0fQhbwL0oIr4MApU/gNoiM6SL+G/aHdfKqKVU+uBJpz01ljKsJ+9OQLTugVe0UOadY6lA/CoKrejLP1sJw/lN27lXIBch4mSt78tRNQkMPWBR/q0XfI/pJ7L3FxfTANp5NRPZNtrjB4tzcOxuTo1fC4cQHXeLKezsMUEGrWPBrdH+UQ7CJ7l2UncKuYgcIIkj5Fcxr3ycLNLy/m8hbjhP4OHep5a/n25KilGPrrsWvPVre0PJJa34sdo4mZTzIU3FoxUKeFF8KQt4N+KMQ2W3vC+xikrCeGQvbsCFSoZrGnt17S5z8EP5a4nubYyEyEohWcrIVS9HzzvelU0G3SFbCm0KK67PmQ5jgtNdTFm34ldepfZNHmT9QsHZb497kEwvmmWKb3HMnObKHdhH32VF2TV66mP2qu8DBSTsidbf5+9HTX/oER/Kdeir+d9AIGSnnO9XLt+UglR+kG5NLsZ14Dg0VB8aE7Mk57rtigKGveqSXBlGBnHJB6tZs3T/ZT+qKb4UsJWTMw0Gx7zgyyFEgPoBy2uS/PhLKVvRQhoY/XiiVqFrJKn5CGhj15xlwxQNIWC5+G6fx6wbXIJuv1VJpm3JPvr6W5e78Vl++gv4SnnvE27vhBFhIyOxyYXUqUl5YAXWWUY8sBT2DGbcRCtMzLZV2K9xWe6QoR8k5mWPHVz6qeVXNek4sRzLHFQJB0bQyaechXVz1hEhkXIuIMnSZHEui62sNrvlejKBTg79f4VKmqWblf09zyb+1cd62BYpK7Jt8DOu2ggwD/uBJSn5XtDqPXOW9sl5VaBvWZJxgovFvqRwe4Op8bfi0SDCaM0qh8TESYACUvAqeL+tHfZdVQkI2CYznvM0gYZcNAMaIMPSmJ/m1qUrPQHsfEe9FwJflXpKWlmxNWVUBkwOc+hH09iwSTk5Ol1lfHOXUJSWeTSbc1pnXxnpHpWw0MTJN+RC5qOixfTtD3szhfUrBeGi1WaLVSKhZ6upDLlHR93hXJ4gqj8NZ4+Tl/kqDP2LCIkd2WRhV9OxnqIRy1HSRhE6yFHcgNXMuuBQzwkWywcX8O3igvIIsO+0D28DMowEMV3FXwzK0dHIQ8KR1rlyQda/E5KxYO13pj9Xuz4Wp2tjdKdmagTkxm50wCLLuUqaGE/ljANvdcSmFgpJ/TlK9RdqfrN8PPooKo7yWKbXZByqSGy7YYCDUABtqPnFnmMfM6SYbZloxh0UQk5H0QqpMy/XTGTg8hkN0jh8rPSv3j4OGjyji291KaOWNYb016C4c/Htv5kQcyvfVw3hXN3k99dxAFprEXqBdn4pI2bRy7fBb19aw80zZ1Jk9cbB7XXE7YadTHnchpNuGIBunjP6MYGOXWOWXUPBP/2t/umvW8PLiccX/ug0Nfs/n9QCtt8/HbfX7Z24J54aXS7GO3CrOyLZXIhjVVmYjqiXxb1zDOq1iivRnIuSDV9CScsFV8ZCCL7EqbKw3v37EYeZYJax9j0NZxcX8EquoVCYhFjC6Sy87cydhsxbJ4Ahn27EmsUVUvpVmJWKIXS7VUrqw75Tm5HYmyt1TRlGYpfi+rVq2puZnM9iD2R6YNz7QK610uiyWnRf5Ld0HhW+RClsNSZqBNIxnSjd0ebbMlwTLIpXZotVPq7UJuU4SB4mi6d5dkVpwUas2sSHGZIaVoTVBrKry9LqEw60cH2qoaRgyxu7pyIO+tXqYwglHQhhvdFy6dKvqNp3AYA/w656MHmhGWASy0k/cki1rZ5DizLVtBTlrvyEUwOv5jqW0wmt2ZgfRRmJ+xuWJcN3Sz5p3hYCC3PU0fZwUXuk3QXOv9bvVMLC4bfTtrkTMxCpGMedZok7afWK9M2PEVKU4sS1qp5XH6R6Vl8e+xYlsuVSQWa8TDQgPbSyLAIoZqkexyxevvGSIxxOmEnuVSm6CflVa9F816ibC7bwaBZC12kQzylyoXI367hK6hGeFnvchi7Blb8X0hNmtUmyTpLQLgGKJXCJQr5yXLNahlfng6RrX6minx/Zb8IUqj9EfsBjmoJSgzaSQvuXPXkpxMEhoJU8vt+t08UvLjxKe4qA7kg5eDLli4GAo35nsK2oOBgNzKZY2rvRzIhZxnFhcfO1H61JJv0b8liozY2TbeRv5KG+/+eHfDPGeDA0PwjgCI2EOad0BLePCVvisX2//EwJDv7pxaOfzfgtr/HdiHH0P2o4n7R6xYuhI23v3H65gyNThjjpraMPrnjocbJ0/yT5utj6VnbDi1+tDaLSsWLQyuWXtg5d5Va5bONZJL1/4Jn3H2F2/r4Tfe2Hr4Fy/7ya/v9srtji5LbBEb31y1sOB5CwtvrtooEpv+r+Smf30XNt6t/Xy/2LR3n/CWJt+O3ZGF84l5tV2oflGsXL+4C6udBygm3wO+PJPDopYr54jKX9y4+69K3aevj+NE7DcRLnKCLl7m4URoX1Nj+EBfsq5zV9v0WdV3s0zE34E7u+NxZ08LRre1Lx/V9jpa1Okf2QH6PZayPDD2CndlqvdMRIgtbYmPdxgM8twJjTbuiorqihTQRFI0jBuWqq0tWcMpcjQMmzHqYO1AjT88uZCbT47b4MxvX/j9i10+T5SAwRfc958DJeYtc7UA5j6EgGW82X0Jbn9Tow/qS87Obk2G09hE2NZELePrwF09iYTFOjAfq6m3ZhzEN/TH6/tH1vo4d/GYhfqKKnh5KAivqEgvNDDBVcjTD2wnyF9kuOwvUrd97rsBayrPwDAdOHYj2BaMoeZg9IHOwYHlyr1Ig0mXtFt1FfVmbktRdjNHMU6EIrnNZ2rzQw+F6w1l64aT9cbIQw+/tyVCUU4PRUS2AEfqq9bq/dLMCYcsewz5NJw1wUmbRVdp/wRH1hUXbLOkdlt6MmuCXr/TRdOR1UDO87ebnTVouVyM0zKTBi0QC+XCZ0r5p8K5/ghmNUQzWhzLwOaYtTz/nRfVweNDSoSvNTEzbxSVapWsXWcoz5rB9123id+IS11Az6PnWonOyie5flwZDUgNRr9UEcX7uScric4HrCB/ZH/ywwz4LBMf2Q8+eKY/0VsGpspSh+PguXjihf6qwyiYQoHsraq3EukTM8CBGam3Kt+uTJ8UgP0C8MfYz86l+xcInlyQ+vTcWKBAK7TlzJNopTbDgB94zhAkJSG9gawqQVdqbrTKtYRmSSzqoCslerJCp0q4LOzwcvDUve2BaaRoQ4dfOGwJfLkvJ3f1CPATzxWCZJ4hKaFnjfaZtEyFGS37hyMh0SFxzYK/00obPRsxNbjGzhi/LEfpJyUSC2b4N3zY7ksobFi9axB+lM2XkApUKWOgid2aQ725OasHJ/+gHYaHWacEK7oJ/DwFzrfyABH23eIUnXEzyjTjjk6fz9HVjIVpmNVAnM0KRVkNrGM18qjVJudYDZDxqDbE3VkadD/QhlKJroqJ/thuv96oYCBF1K0R0M8cLSrpXdwSm8jOS4EEHtOM27t8PntnC8a4KuANCu6Wb2QY3MwhckR0o42czSqPztTBHXxedDx2Lo50sn5k7hyUVscKfnp2VuT7K05uc7AObp7RaubwJZ0kTWoCKk3MYddwpUptK6gjdkd/w1aqmvy1taDGCoQ8qglxdgaCjgdaENpbi5gaPGNnjN+JsENxzu9R0BKF15LnUkZoOWTE1Z9HrtipchnIkNp/vpnfSivF4yX43rNUEQUYn+N1QitlnCn65MCDxB/84iQ2XaF4J7dA5KKHHQiM10k/nFmVpgU18eePOAWvTMWHh8UBpULtq4b9K93lGlVQp1MHyrRutzuqgITGlWlcuOkdk3H/nHnMRtPvq6/zyRtuQN7iVGBDQm+yRdWqNKOMiHxun1OBy6V+Kw9U/sHdlGcEQCCYIOAX3N1JgByWAqIPaKnkPzHNeQfdMRJzW8mEeqDknQCLvp/6/mfZv4bwJob33eJuAXL3CfrDh1Fgc1Cpld7762O7EjqDLaZWpxhVpMTnZC3Sd0V+6zhOHWOVvCqrL4aWgd3lBqs9qtakCPc+oawTQmQSn3U8kPHIVo+7MxDydLZ5SLrFEwPBINLZWlakFAykiro9So6GlJAXQmQcZVTfBpBd/D1w7PezPKoWUhBICIiSKh0FF5aigTTNlPKqLE9hWdvL9+vtBFOHGM/rpdbKVX5SLLNQhm8vGiVJhROrs99702uwYdyBQvHBFX9rHopH/W4ZXqREgO6DN30jQ+C/HCJH5W0iLhyk883kdVbAGzTH+BcR8T0dJyMQvy/gjq5l3/1A3ZkwId5m3N55cfk5wRkFPtP2N6CEfW/+x/9WkefE3yx4GsCAV6AtLyza8hLfox0OUN4KFXKTNxxj/m5IEb1ZM73wZkfniJ/ZN0UKBRoWm0M1/tFMhGjQakYUTjtN1PJD+ZBJoyaiEnBhTLQxNSoSQa/rtaVyybVl/hzMrC54eceO53PVhMHFkEHi/wjFpU/PNrFkSqFlVCVP7z7yxNSJslFP03yX16pR0iEpGKdCcoWoVVBOlY+dzyx4iHpIoAlqTTS4y7PFVOo0rebELMI6IEwm8VkmcH/4sDIQiBvAO0//Xv7sYdB3OHZ8gsCBh3/n2o5OXHQ0veTID+0vRx/6PdbVP3l5P5h2/O/jf1f0XQdrryfEJzJx/w2w+gZY9MGCqfkvPZM80ANO9JQhb4ASYkbTFLKDmNmUTwLXOT/lL70YvJM6WiweL/Gp/+COvH9ueBl/kkBQwBd8w3zLdCS0rAoKG01Q0KvU6DHo+5G4I+UYiYMFTD6t2PWFzImisAZFHU4UA18ljUGVMmQyq0JBpdEUVKpCZpM6FFKRhcov5NAXqsIC1auQ/NU8EONVrEgQ+5uaiP0rEhUVyxRZVsI4KnFjTyLhQysxhyOFGRD85ymFg+dSXfmOh93WK8BjJ8097TVtlkadePdqrebdAlQWAhWWTI3e406rTUkSllVjFeFojE1FSZDIw5q07uohdHRUCUpIYRgRF0jhb0rzNAbKQPjdFvV1l53A8KjMXJbWInhSow5oS3a756/2qMRe2GqoytrAmt4aJHIv82Gdt663/KOx3QDM4dF1eke8K/xYlMB0pEoSgPVSPwFprAHYFLIu7mBgydsbwiVmQ0RkR4rKDPqicicelwCC58tanKm8Ltdc9+l5mSia0pmjXOlWn8NuiHi0K4bVDhmew55AIWzPmj2zcLulsRELMGpaJiNVGhlBS9RqRg6RShVEMlKwbtKcHvpt9/hFIIOHN+rcCYeimHl5wRxHBDYYIxmYIDOwIWKAHZE5614uYhQOV6JJhzEBH+3AOYKiOAJ3+Gk/52YQg522e9y03W6gEaDkoZU6UyxSupV12Iwht27Z0FnDRpYfHi0thO11g6LWNb1s1uJK5Xa55rjOzMsEgqKRUqghokStpmVyQq3RDREtAfze/ujWfpBKF6CTobhcWQXi09rW5CvVwvx/Z+bctWMqxO2SNN0skI/7NGi/ZAJ7E07chGEl/NcmFygFuU35arkqn80V5OXnjSbcinHb5CbGqiyUvjP01bpiGWUBz6bRk7oDn3vvqU1q9EhX404AUsMFgM8HAsEPfP4PAF1g/bAs9iGIvzzmF/spnnCVD/hOzsf3ZT4GcRM15md7+rMa5hgPJrDv1WE7CiHf2NMKLWT/H4L+l8mCDnO8BkaQWbAl6fa6ks1yemh1yfUueloNw7Z7NJ6BtHJHTPG9XJpoiWfO2yKnhlSJb/AnHT6JX3DnCcA3f6JA8L/gHnb0zaLW34qFv7VKhaEKi9cPFrK8voUx5TrHWvvYxbHxffiEvkWxP9c6v7SOXRS9lIDzDz8XeOi5jncjeFv93IvsTrbjW+9uL4hOTbyQjHgbaErNh0eAYRg1jmL03RU6AsMD4OaWSHKT6Vx9vUKTm8Ox0VcTD+uOVlbay08+3D8a7NhSEDHq6uhYJrHZ8Uub2AQ8W/GIlxUePi4R5N0+gh+5lS+QHj0s9EUY3ERL5ZfV+Qe3ywx638mhJ/U+o3T7wQL1ZbmUBk1by0IKHjkuNRp8O4fufCsaZMcfycfHzYRHGJ/w8FGpQHVrK771tlIgOX5YyEa8wNz7/AVilnkWCX7tvUAeV0JcAMPmWT5NJT6VzmzzJTT+KXjircR9h+X+X3F7AfN9cLFfe1T+W3T4hf6Cq6vq9HZ0pOZ0ZkTqgRVdZER6DArJ5oCNXaUbV4aAxyW8q8ExV58f+y5u6wI6ybirEd5VsJjHLjPX1JiXsayLEK0eq79Dpu/0wv2iQnfjnOoGvu764jv64vNRtKP9pTOwESx+pfbp2xN8+MbG2zr+qbq7GBx8uX5PuLyvroG8uHT1Bba5ZT8X3zrLltNsLPMb9A4DU188flMj7WEjyYC5uMZVGlOZnJQn5ZixlIIL6meJi8YXMROj8jizaA2WSvYizZ32nckKuns1WqngJnnefb568nSgIFSqIEGmZ8ik57dNpyQmIwLsi5YPSFm1SkEGpVZzUKagJkRUm6Rqj6TIOe3AsVM8qsFgSyM6GRfyHPjrcgXORwNmuQQhxGp7Qvclo8DXDcaVgX2G0BkLvsABcmrWjw3VGeCk1aZL1BmDPxR574bvguLP0RrYVDbqIVCsh7YbaWN0UuDbsIlzsf7nP8yzGh8qBV0AgPPgr9+5ljfKGPtYeALfDc6QT37axz+dDf7x3eczi5JLYj/n1obAQ8OyOxKxPdk6D9kRz2a3x8v21GUtbHuidoE9Y7JlGcZEfKzs3tbSKYz/Q0Ktkv4mYa0Wie9XqQZVf+2fQrQGmWh6TdC7qTLNoDWBdGptACddybrWBsFdnT2h1yVtdl0iYbDb4gbERfTriusnp50ZPZpJ22ESknq1sJRRDIZpyIG1CL42vn4nLcwUFmSEWm6BcjyvbZvBvCBnlfFXY1yBKW5DVdG2SQ9MCla5RraP0LaOGm2qv+SsXQaxZ0tK9tohmf2sk3/gXniYL3i4nnY58NYYOMOQZX7OHxk8NQMwuyW0JWi+1OQf3N9ZiTpP74eUpSaTqrQU0sFuqhpV/zb8Tn42HF75PVcaKAsEXjPNvPysVPbs5Zn8y3tl0r2XUy+FgtlQ6EVIHgxnwb1YgGgReO8L/9Cb8aP7rPvMNtdZ1/Stj+f8QbDOvB4tVQjzNkzGIZcxmda5qQozXCH1y0kfKrrmg0WTPd2FxbCQizaT3xvtrXZgO+a855yw7S3H1ZB9x1OOXOwe8vp/pi6yF8dcpl6jgHUYtYECD9ZPXrmqu6d4F1+T99ae7mK9XmD5j3qEeunQzcpMfvHBOGCupTfTm26+rQhc0C/3fxvc5+dBP9/3PHSQ++Iz+eVzJvZ84JmyqJqtnrKB+oACDb/nXWzgZuSO8HlaXUtE+S/Guel5w52etKsbfHx30yBmuw3Et7/60r83xp5cBfrfAeKDa5zA7/G7FahcErAO4X64Wxq+K2G0FramfwCP9/ZzhM3iqSgZxOoNkDcWUalJmdxr0MvZ9l54+J0bhaLFnfyZqzaKhBs76xAnQgs0CEwlZPHplnTOnNm7afAqII00Z1X778ZoiRAJY2IRqKW7du86zI74j8LuBZAqgImmEtm4MpuIFU8CtZnt2/eyo/7D2cO7dwFplhOLsDBSIow2Z1VgfMar9WOVJ2vEfkDc32CcEE3FANPBSjzKYHzpNP6p3Vh6iDaQWDpl5jGdZymAfvh85me/2fZ5zQ+qWSCzKrl6JxnFF9J8mRq6aMHApQuwjIGjssrnL2c/mOfefvLxSwiIB56L/U8kP6l356WLuksXBroXj8ZGdy+6ubgXy2sy33bu29/0P3HRA+IBcmlh+HxKzJJeDhyHrnb6+6kDAbh3uxf904LCwKULutPtilflJ2bQrjPSZNufe0zavVenKdJTxfVyeKZmuTnTC+/v7mhP/Caj45jESkCmdfq16dOua+vAtOkfbgC53n0NwLYxTauAq8Krc3gUeKMbkML192QpyNA1wU3cQyOg0ap4W6t9W6F8ufxJ6OUn+SA3bwJ/ZkFe7iRw3ZprHpw+abYErhaKcyW/T59cK4aDehB2J91gmLFCNIo/Y6QInmchg4/wigq/yYrAMNGo4Tzq6uAAyBJncIMkNv4V8uAv6jt/lUzQifvs+6xPrJ9QMvYOqPtjULf+50rCmfmlbQjepWnX9lLpIzEDsOK7aIvyLhiQPuuJAXdFTEpia789ZHYQMBLAJ7TE9EpCmL9/97xTu+STWHx9bGUW6Yj3YtZuibFOBR4CEsKL9++eMXvJiQqerg40dVR8l+Deb7hkR4ln/KVQpB0XDHuXJcwFp9QSwu37dy+Q2iWnYyv/YiYSgfcSwoX7d89r9hKY+ljgAaade9MoEm/pTvzHQ7X/4cTbxntqdw5XqEvi/+/je2Ob2mYnFRN7TjHR4TRT/qM1m2o3eyzBrS+P+ufHBP8uH/uvB0CLfdwbHACwPrXv9Gc7QmEXFQcbURxsUnHoTtACe1IJsoNKkD2qBO1nAdBgb/Fh++0tIE8TrJLbWyUi/jQwvFF5RnmWPWcRtmRlz7Bn8bkWUu3wx79rfaZ9tVzx2OfqpM+SOdpdJthPOKCdfgCIKySby6JIGHwGyM9AtE2kBs6v/dcyOfIfFLDCn9//WMCjlX6pjaVu9/uL9vwrHRMAYMEFMn1/Hl3GmNKj9NZrsSmvr2SnetzNoXyDBYj/TIPSq7ScdgwN8GG0Q2OI2mWqP9MmcGn7PM+xXO7ZZuH+vRtFI6W3Xgu4XYVhLRopvZkW8rlALoCRTb+v83Mop+sM4YhClo7IfNxNelYInDFXGikPZa6nARzwDtGuZfxdTtcpwC83UwS4eftMoAdizVyAk/GrwZfGAWlt0rigKZkhhaqbGlNOZ4ZoO+8mTgAyNAGIH3KBuO9Vc4gDYubwEt07UpC2oxeKOjWHulmBQM3X1OwCgZpDzXMxIJ8C0Lt9EVCmJVx+7zQ4zLLb4yRS/6KNqZUxLF4LC/EdqTnvAjmLa/scBFRRn/n+gTfTLO3vJFq+Avjol7QN7/rfhamlcPhfFVdeB9QQAAFMPstWWy/IbfuD1t/H0eYcLHuOJFPPY9nZM967VDAPN/9VZC4WZYkKzH/XZDLvRxBa9KKVqSHxO/GMamFR9phEj9Fj8xNUaCPFQ32qza4iwyoErOaNVyyTZI+qYIsN4p83RM9OJuTCjMkuSCob6nniJtZGP61M2k5bbk1BSKvwpiRbMb7fFfm/TIrg0dsiCoqDcX91oa/IxU2bQM2rnh1HrOier5DZtloKU88VGYokGYZZ/NT7V9qeZKhf/AoVUiOLcHdurt9xl443pLckLrvRbPcz2f3HJ3MHqCogXYmSVcneRklzKV1I/vii51DC+GLvEGcWV16oqFI8CulQd5Q/EO9/PPOTTmRrowFYJbcEPE/uJMxbEf/KsuW13VaBhjEkWAr7mjXStqjoJFLWT4zTLIZxg9nTVMhT3YWpiMvab1U8Jw3L6bXOwWLbYw4gOdzlhualx7PiUpw2uwQy+07aXdwVzi+s+4x8Fkkzl+gRXdFNOQcT3VrJBqScmkUWyVO6Cl0JSrD1lKsVWx/xZJTOppaVhZtHknSi+SC6fxcgm5H+REo966UsLOUwpE2T5izJ/E6eRVqL1dK+9nlCLEzoGkAHRyyC7XesWB+7Xdi+BgQQrdUIJhiIsMzbWtO/n6gaA9zZmtgE8StpQkTEwk2oArebMDJXm3AaLzQR4m29UYQ8ZWeLUULypjEMEntQWlLTpEh8c+q1QvvET4MG2FhQK6cAkxAnvyZumXJsErJWgyY+jUKqTmQCMlyp9uZt13CZhvx2Ghmb386tDZkpGipz3lk/paA2Phmq6FlVsFlZ02unzvMVajQs/TA/J+aaDtsWfrKDAqRyKKmo5FjOxyskKMivnZ2KkppSNpUNZTPSaEvjrZAGS7kGVduBGixvKTirpI5bLhhd27SBK0plUSF1pVYNtKHsMrM6OzKoWQN3dEuFAxuhyVT9FMyeT9OjG+aq6OZRXpBQTJ+8Bl5wkgU3g2cxXXFipxrli9ZdK0sHX7oWMKs3Q7zO5SC3aY9JIuOR7AcpGrzhLW9LJZcm3Tve9Z73r0wTzoeK5b2yLLjE54rHpx+PzfaLHLlTiN/Zq65pdJ2axnJaPylUoYnMZuG1Gv7B9TRY/JHRprHouI9pgu5aN4RstiVMmC184nE+QhS3qrFtEv1Xa7sRuxyx0q9WWW2N+621zm4dOu2xXi27Oj87Y4NZrxg0JGoSdGoK8T/30cRRYjTGool+jItBtM752z/+DVZMCE5EQmOS4OJgiSGxH2ZMvFFz+jARIhVjO+qYMnQM9RyKlJj3quNOOOmUSVMuuAhHi8mCLwFVv14PesBDumz0vW7nUWIKPZ5JKMJvfjdDKk6sJzmN+1CEIJJIrjz5ChQqUkxIpISYhJSMHERBSUVNQwumo2dgZGJmYWVj5+Dk6hFYG72rjimsgteIq61hcwNm9QRD1CalP+j2r6qxUMKBJlWW3jzc7wmGyGCgQekJBFvJ0JbgHmm/uA+ERf2NfhBBFfnTXiRgnwKkAFhAsx0qVC2VrEh2X5bKbNBHICqkvIbzmwrbPC7/3+i/rb1dVTBFwK/ug9ga/tdpQc2OLNjYkJCOs+0Ub0t407w302oeq0MNbXWYZYz83X9atMEq+9GwwSR/qWDqpCm8yRNgQMf2uLbhYNrEDgIlzJKZ0FVgoVjTnQagmNLda4fpEABwVjPZcrZ5zL+cXNvw/w8XqU53OCQ0s62jV4BQQ01+T7LB0KEzj2tJ/hPFmYhZ6hDa0qFVq9Elt2RiCEb0E/CAJWD4DD1W9QEAAA==)format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(data:font/woff2;base64,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)format("woff2")}:root{--bg:#f7f5f0;--bg-card:#fff;--bg-muted:#eeeae2;--fg:#111;--fg-secondary:#666;--border:#e8e4dc;--border-control:#8a857c;--status-passed:#3e6e51;--status-failed:#b3261e;--status-flaky:#6b4a05;--status-flaky-bg:#fbf0d9;--status-skipped:#666;--diff-expected:#1f6b3a;--diff-received:#b3261e;--shadow:0 8px 24px #1111111f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#080808;--bg-card:#0d0d0d;--bg-muted:#161616;--fg:#f0ede8;--fg-secondary:#8a8a8a;--border:#262626;--border-control:#6b6b6b;--status-passed:#7da88a;--status-failed:#f28b82;--status-flaky:#f0cf8a;--status-flaky-bg:#1f1705;--status-skipped:#8a8a8a;--diff-expected:#7fc79a;--diff-received:#f28b82;--shadow:0 8px 24px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root:not([data-theme=light]) .category-badge,:root:not([data-theme=light]) .category-bar{--cat-text:var(--cat-text-dark);--cat-bg:var(--cat-bg-dark);--cat-border:var(--cat-border-dark)}}:root[data-theme=dark]{--bg:#080808;--bg-card:#0d0d0d;--bg-muted:#161616;--fg:#f0ede8;--fg-secondary:#8a8a8a;--border:#262626;--border-control:#6b6b6b;--status-passed:#7da88a;--status-failed:#f28b82;--status-flaky:#f0cf8a;--status-flaky-bg:#1f1705;--status-skipped:#8a8a8a;--diff-expected:#7fc79a;--diff-received:#f28b82;--shadow:0 8px 24px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--font-sans:"DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}.category-badge,.category-bar{--cat-text:var(--cat-text-light);--cat-bg:var(--cat-bg-light);--cat-border:var(--cat-border-light)}:root[data-theme=dark] .category-badge,:root[data-theme=dark] .category-bar{--cat-text:var(--cat-text-dark);--cat-bg:var(--cat-bg-dark);--cat-border:var(--cat-border-dark)}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--fg);font:14px/1.5 var(--font-sans);margin:0}#app{height:100%}a{color:var(--fg);text-decoration:underline;-webkit-text-decoration-color:var(--border-control);text-decoration-color:var(--border-control);text-underline-offset:2px}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--fg);outline-offset:2px}code,pre,kbd{font-family:var(--font-mono);font-size:12.5px}h1,h2,h3,strong,b{font-weight:600}[hidden]{display:none!important}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--fg-secondary)}.icon{flex:none;display:block}.app{flex-direction:column;height:100%;display:flex}.layout{flex:1;min-height:0;display:flex;position:relative}.main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:auto}.main:focus{outline:none}.main>.page{flex:1}.header{border-bottom:1px solid var(--border);background:var(--bg-card);flex-wrap:wrap;align-items:center;gap:8px 16px;padding:8px 16px;display:flex}.brand{align-items:baseline;gap:10px;min-width:0;display:flex}.wordmark{color:var(--status-passed);letter-spacing:-.01em;font-size:18px;font-weight:600}.header .title{min-width:0;color:inherit;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;text-decoration:none;overflow:hidden}.header .title:hover{text-decoration:underline}.run-status{border:1px solid;border-radius:999px;align-items:center;gap:4px;padding:1px 8px 1px 4px;font-size:12px;font-weight:600;display:inline-flex}.run-passed{color:var(--status-passed)}.run-failed,.run-timedout,.run-interrupted{color:var(--status-failed)}.counts{gap:12px;margin:0;padding:0;list-style:none;display:flex}.count{font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-weight:600;display:flex}.count.zero{font-weight:400}.count.zero .outcome-icon{color:var(--fg-secondary)}.count-link{color:inherit;border-radius:4px;align-items:center;gap:4px;margin:-2px -4px;padding:2px 4px;text-decoration:none;display:flex}.count-link:hover{background:var(--bg-muted)}.count-link:hover .count-value{text-decoration:underline}.run-meta{color:var(--fg-secondary);flex-wrap:wrap;gap:4px 16px;margin:0;font-size:13px;display:flex}.run-meta div{gap:4px;min-width:0;display:flex}.run-meta dt:after{content:":"}.run-meta dd{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.run-time{position:relative}.run-time dd{overflow:visible}.run-time time{-webkit-text-decoration:underline dotted var(--border-control);text-decoration:underline dotted var(--border-control);text-underline-offset:3px;cursor:help;border-radius:2px}.run-time-details{z-index:20;border:1px solid var(--border-control);background:var(--bg-card);box-shadow:var(--shadow);color:var(--fg);white-space:nowrap;border-radius:6px;flex-direction:column;gap:2px;margin-top:4px;padding:8px 10px;font-size:13px;display:none;position:absolute;top:100%;left:0}.run-time-details:before{content:"";height:6px;position:absolute;bottom:100%;left:0;right:0}.run-time:hover .run-time-details,.run-time:focus-within .run-time-details{display:flex}.run-time .run-time-details.dismissed{display:none}.header-tools{align-items:center;gap:8px;margin-left:auto;display:flex}.theme-switch{border:1px solid var(--border-control);border-radius:6px;display:flex}.theme-switch .icon-button{border-radius:0}.theme-switch .icon-button:first-child{border-radius:5px 0 0 5px}.theme-switch .icon-button:last-child{border-radius:0 5px 5px 0}.theme-switch [aria-pressed=true]{background:var(--bg-muted);color:var(--fg)}.icon-button{width:30px;height:30px;color:var(--fg-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:hover{background:var(--bg-muted);color:var(--fg)}.text-button{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:2px 6px;font-size:12px}.text-button:hover{background:var(--bg-card);color:var(--fg)}.banner{border-bottom:1px solid var(--border);background:var(--status-flaky-bg);color:var(--status-flaky);align-items:flex-start;gap:8px;padding:8px 16px;display:flex}.banner .icon{margin-top:2px}.banner p{margin:0}.outcome-icon{align-items:center;gap:6px;display:inline-flex}.outcome-passed{color:var(--status-passed)}.outcome-failed{color:var(--status-failed)}.outcome-flaky{color:var(--status-flaky)}.outcome-skipped{color:var(--status-skipped)}.outcome-text{font-weight:600}.badge{text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:20px;padding:0 6px;font-size:12px;font-weight:600;line-height:16px;display:inline-block}.badge-failed{color:var(--status-failed);border:1px solid}.category-badge{border:1px solid var(--cat-border);background:var(--cat-bg);max-width:100%;color:var(--cat-text);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-items:center;padding:0 8px;font-size:12px;font-weight:600;line-height:20px;display:inline-flex;overflow:hidden}.sidebar{border-right:1px solid var(--border);background:var(--bg-muted);flex-direction:column;flex:none;width:340px;max-width:85vw;display:flex;overflow:auto}.nav-fixed{border-bottom:1px solid var(--border);margin:0;padding:8px;list-style:none}.nav-link{color:inherit;border-radius:6px;align-items:center;gap:8px;padding:4px 8px;text-decoration:none;display:flex}.nav-link:hover{background:var(--bg-card)}.nav-link[aria-current=page]{background:var(--bg-card);box-shadow:inset 3px 0 0 var(--fg);font-weight:600}.nav-link .icon{color:var(--fg-secondary)}.nav-marker{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.nav-marker .icon{color:var(--status-failed)}.sidebar-search{z-index:2;border-bottom:1px solid var(--border);background:var(--bg-muted);padding:8px 8px 0;position:sticky;top:0}.search-field{align-items:center;margin-bottom:8px;display:flex;position:relative}.search-field>.icon{color:var(--fg-secondary);pointer-events:none;position:absolute;left:8px}.search-field input{border:1px solid var(--border-control);background:var(--bg-card);width:100%;min-height:32px;color:var(--fg);font:inherit;border-radius:6px;padding:4px 30px}.search-field input::placeholder{color:var(--fg-secondary);opacity:1}.search-field input:focus-visible{outline-offset:0}.search-key{border:1px solid var(--border-control);color:var(--fg-secondary);pointer-events:none;border-radius:4px;padding:0 5px;font-size:11px;line-height:16px;position:absolute;right:8px}.search-field input:focus~.search-key,.search-field input:not(:placeholder-shown)~.search-key{display:none}.filter-indicator p{color:var(--fg-secondary);flex-wrap:wrap;align-items:center;gap:4px;margin:-2px 0 8px;padding:0 4px;font-size:13px;display:flex}.filter-indicator a{color:var(--fg);font-weight:600}.filter-indicator .text-button{text-decoration:underline;-webkit-text-decoration-color:var(--border-control);text-decoration-color:var(--border-control);text-underline-offset:2px;margin-left:auto}.tree-section{padding:8px 0}.tree-toolbar{align-items:center;gap:2px;padding:0 8px 4px 16px;display:flex}.tree-toolbar h2{color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.04em;flex:1;margin:0;font-size:12px;font-weight:600}.tree-empty{color:var(--fg-secondary);padding:0 16px}.tree-prefix{color:var(--fg-secondary);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;margin:0 16px 4px;font-size:12px;overflow:hidden}.tree{margin:0;padding:0 8px;list-style:none}.tree-row{outline-offset:-2px;border-radius:6px}.row-content{min-height:28px;padding:2px 8px 2px calc((var(--level) - 1) * 16px + 8px);color:inherit;cursor:pointer;align-items:center;gap:6px;text-decoration:none;display:flex}.tree-row:hover{background:var(--bg-card)}.tree-test[aria-selected=true],.tree-row.revealed{background:var(--bg-card);box-shadow:inset 3px 0 0 var(--fg)}.tree-test[aria-selected=true]{font-weight:600}.chevron{color:var(--fg-secondary);transition:transform .1s}.tree-group[aria-expanded=true]>.row-content .chevron{transform:rotate(90deg)}.tree-project>.row-content{font-weight:600}.row-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-group .row-label{display:flex}.tree-group .label-part{text-overflow:ellipsis;white-space:pre;flex:0 auto;min-width:0;overflow:hidden}.label-part+.label-part:before{content:" › ";color:var(--fg-secondary)}.tree-group .file-name{display:flex}.tree-group .label-part+.label-part{flex-shrink:8}.name-head{text-overflow:ellipsis;min-width:0;overflow:hidden}.name-tail{flex:none}.row-note{color:var(--fg-secondary);font-size:12px;font-weight:400}.row-counts{flex:none;align-items:center;gap:6px;display:flex}.row-total{min-width:20px;color:var(--fg-secondary);text-align:right;font-variant-numeric:tabular-nums;font-size:12px}.page{padding:24px}.page h1{margin:0 0 12px;font-size:22px;line-height:1.3}.breadcrumb{color:var(--fg-secondary);overflow-wrap:anywhere;margin:0 0 4px;font-size:13px}.test-title{overflow-wrap:anywhere}pre.message{background:var(--bg-muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;margin:0;padding:8px 12px;overflow:auto}.run-errors{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.run-error{border:1px solid var(--border);border-left:3px solid var(--status-failed);background:var(--bg-card);border-radius:6px;padding:12px 16px}.run-error-meta{color:var(--fg-secondary);flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:13px;display:flex}.run-error pre{background:var(--bg-muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px;margin:8px 0 0;padding:8px 12px;overflow:auto}.run-error details{margin-top:8px}.run-error summary{color:var(--fg-secondary);cursor:pointer}.load-error{max-width:640px;margin:48px auto;padding:0 16px}.load-error h1{color:var(--status-failed);font-size:20px}.page{container-type:inline-size}.view{flex-direction:column;gap:16px;display:flex}.view>*,.view h1{max-width:1280px}.view>h1{margin-bottom:0}.widget{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;min-width:0;padding:16px}.widget>h2{margin:0 0 12px;font-size:15px;line-height:1.3}.widget-note{color:var(--fg-secondary);margin:-8px 0 12px;font-size:13px}.widget-hint{color:var(--fg-secondary);margin:12px 0 0;font-size:13px}.widget-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.widget-list>li{border-top:1px solid var(--border)}.widget-list>li:first-child{border-top:0}.widget-more{margin:8px 0 0}.widget-grid{grid-template-columns:repeat(auto-fit,minmax(max(380px,50% - 8px),1fr));align-items:start;gap:16px;display:grid}.widget-grid>:last-child:nth-child(odd){grid-column:1/-1}@container (width<=900px){.widget-grid{grid-template-columns:minmax(0,1fr)}}.verdict{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 32px;display:flex}.verdict-outcome{align-items:center;gap:10px;margin:0;font-size:22px;font-weight:600;display:flex}.verdict-outcome .icon{width:28px;height:28px}.verdict-outcome.outcome-flaky{background:var(--status-flaky-bg);border-radius:8px;padding:2px 12px 2px 8px}.verdict-meta{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0}.verdict-meta strong{color:var(--fg)}.outcome-bar{border-radius:5px;gap:2px;height:10px;margin:12px 0 8px;display:flex;overflow:hidden}.outcome-bar-part{flex-basis:0;min-width:4px}.bar-passed{background:var(--status-passed)}.bar-failed{background:var(--status-failed)}.bar-flaky{background:var(--status-flaky)}.bar-skipped{background:var(--status-skipped)}.outcome-legend{color:var(--fg-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:4px 16px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.outcome-legend li{align-items:center;gap:4px;display:flex}.widget-run-errors{border-left:3px solid var(--status-failed)}.widget-run-errors h2{align-items:center;gap:8px;display:flex}.widget-run-errors h2 .icon{color:var(--status-failed)}.widget-run-errors .widget-list code{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.widget-run-errors .widget-list li{padding:6px 0}.group-row{color:inherit;flex-direction:column;gap:2px;padding:8px 4px;text-decoration:none;display:flex}.group-row:hover{background:var(--bg-muted)}.group-row-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;display:flex}.group-test{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-row:hover .group-test{text-decoration:underline}.group-message{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-count{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.group-split{font-variant-numeric:tabular-nums;white-space:nowrap;flex-wrap:wrap;gap:4px 12px;font-weight:600;display:inline-flex}.group-split-part{align-items:center;gap:4px;display:inline-flex}.group-row-counts{flex-wrap:wrap;align-items:center;gap:4px 10px;margin-left:auto;display:inline-flex}.group-attempts{color:var(--fg-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.category-bars{grid-template-columns:minmax(0,max-content) minmax(40px,1fr) auto;display:grid}.category-bars>li{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.category-bar-row{grid-column:1/-1;grid-template-columns:subgrid;color:inherit;align-items:center;gap:8px;padding:6px 4px;text-decoration:none;display:grid}.category-bar-row:hover{background:var(--bg-muted)}.category-bar-row .category-badge{justify-self:start}.category-bar-track{height:8px;display:block}.category-bar{background:var(--cat-border);border-radius:4px;min-width:4px;height:100%;display:block}.category-list>li>details>summary{cursor:pointer;align-items:center;gap:8px;padding:8px 4px;list-style:none;display:flex}.category-list>li>details>summary::-webkit-details-marker{display:none}.category-list>li>details>summary:hover{background:var(--bg-muted)}.category-list summary .chevron{transition:transform .1s}.category-list details[open]>summary .chevron{transform:rotate(90deg)}.category-list summary .group-count{margin-left:auto}.category-list .widget-list{margin:0 0 8px 28px}.project-cards{flex-wrap:wrap;gap:12px;margin:0;padding:0;list-style:none;display:flex}.project-cards>li{flex:240px;min-width:0}.project-card{border:1px solid var(--border-control);background:var(--bg-card);width:100%;height:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;gap:6px;padding:12px;display:flex}.project-card:hover{background:var(--bg-muted)}.project-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.project-card .counts{flex-wrap:wrap;font-size:13px}.project-meta{color:var(--fg-secondary);font-size:13px}.data-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.data-table th,.data-table td{border-top:1px solid var(--border);text-align:right;vertical-align:top;padding:6px 8px}.data-table thead th{color:var(--fg-secondary);border-top:0;font-size:12px;font-weight:600}.data-table thead th .outcome-icon{justify-content:flex-end}.data-table th:first-child,.data-table td:first-child{text-align:left}.data-table .zero{color:var(--fg-secondary)}.data-table tbody th{overflow-wrap:anywhere;font-weight:400}.dimension-bars{grid-template-columns:minmax(0,max-content) minmax(60px,1fr) auto auto;align-items:center;gap:0 12px;margin:0;padding:0;list-style:none;display:grid}.dimension-bar-row{grid-column:1/-1;grid-template-columns:subgrid;border-top:1px solid var(--border);align-items:center;padding:6px 0;display:grid}.dimension-bar-row:first-child{border-top:0}.dimension-value-cell{overflow-wrap:anywhere;min-width:0}a.dimension-value{font-weight:600}.dimension-bar{height:10px;margin:0}.dimension-bar:empty{background:var(--bg-muted)}.dimension-bar-counts{justify-content:flex-end;gap:10px;font-size:13px;display:flex}.dimension-bar-counts .count{font-weight:600}.dimension-total{min-width:28px;color:var(--fg-secondary);text-align:right;font-variant-numeric:tabular-nums;font-size:13px}.tile-summary{margin:0 0 10px;font-size:13px}.dimension-tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.dimension-tiles>li{min-width:0;display:flex}.dimension-tile{color:inherit;border:1px solid var(--border);border-left:4px solid var(--tile-color);background:var(--bg-card);cursor:pointer;border-radius:6px;flex:1;align-items:center;gap:6px;min-width:0;padding:6px 8px;font-size:13px;text-decoration:none;display:flex;position:relative}span.dimension-tile{cursor:default}.dimension-tile:hover,.dimension-tile:focus-visible{background:var(--bg-muted)}.tile-failed{--tile-color:var(--status-failed)}.tile-flaky{--tile-color:var(--status-flaky);background:var(--status-flaky-bg)}.tile-passed{--tile-color:var(--status-passed)}.tile-skipped,.tile-none{--tile-color:var(--status-skipped)}.tile-failed .tile-value,.tile-flaky .tile-value{font-weight:600}.tile-value{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tile-icon-none{border:1.4px dashed var(--status-skipped);border-radius:50%;flex:none;width:16px;height:16px}.tile-flag{color:var(--status-flaky)}.tile-details{z-index:5;border:1px solid var(--border-control);background:var(--bg-card);min-width:180px;max-width:280px;box-shadow:var(--shadow);color:var(--fg);overflow-wrap:anywhere;border-radius:6px;flex-direction:column;gap:2px;padding:8px 10px;font-weight:400;display:none;position:absolute;bottom:calc(100% + 6px);left:0}.tooltip-open .tile-details{display:flex}.tile-details:after{content:"";height:8px;position:absolute;top:100%;left:0;right:0}.tile-note{color:var(--status-flaky)}.dimension-table{margin-top:12px}.dimension-table>summary{color:var(--fg-secondary);cursor:pointer;align-items:center;gap:4px;font-size:13px;list-style:none;display:inline-flex}.dimension-table>summary::-webkit-details-marker{display:none}.dimension-table>summary:hover{color:var(--fg)}.dimension-table[open]>summary .chevron{transform:rotate(90deg)}.dimension-table>.data-table{margin-top:8px}.pass-rate{cursor:help}.pass-rate strong{color:var(--fg)}.hygiene-flag{color:var(--status-flaky);align-items:center;gap:4px;margin-top:2px;font-size:12px;display:flex}.test-line{align-items:center;gap:8px;padding:6px 0;display:flex}.test-line .test-text{flex:1;min-width:0}.test-line .test-text a{overflow-wrap:anywhere}.test-line .test-where{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}.test-line .duration{font-variant-numeric:tabular-nums;flex:none}.skip-kind{border:1px solid var(--border-control);text-transform:uppercase;border-radius:4px;padding:0 6px;font-size:11px;font-weight:600}.flaky-error{align-items:center;gap:8px;min-width:0;margin-top:2px;display:flex}.flaky-error code{color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-meta{flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 16px;display:flex}.group-meta div{align-items:center;gap:6px;display:flex}.group-meta dt{color:var(--fg-secondary)}.group-meta dd{margin:0}.group-page h2{margin:24px 0 8px;font-size:16px}.affected-tests{border-collapse:collapse;width:100%}.affected-tests th,.affected-tests td{border-top:1px solid var(--border);text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:6px 8px}.affected-tests thead th{color:var(--fg-secondary);border-top:0;font-size:12px;font-weight:600}.affected-tests .test-cell{align-items:flex-start;gap:6px;display:flex}.filter-bar{flex-direction:column;gap:10px;display:flex}.facets{flex-wrap:wrap;gap:8px;display:flex}.facet{position:relative}.facet-button{border:1px solid var(--border-control);background:var(--bg-card);cursor:pointer;border-radius:6px;align-items:center;gap:6px;min-height:32px;padding:4px 8px 4px 12px;list-style:none;display:inline-flex}.facet-button::-webkit-details-marker{display:none}.facet-button:hover{background:var(--bg-muted)}.facet-button .chevron{transition:transform .1s;transform:rotate(90deg)}.facet[open]>.facet-button .chevron{transform:rotate(-90deg)}.facet-selected{background:var(--fg);min-width:20px;color:var(--bg-card);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 6px;font-size:12px;font-weight:600;line-height:18px}.facet-menu{z-index:15;border:1px solid var(--border-control);background:var(--bg-card);min-width:220px;max-width:min(360px,90vw);max-height:360px;box-shadow:var(--shadow);border-radius:6px;flex-direction:column;margin:0;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0;overflow:auto}.facet-option{cursor:pointer;border-radius:4px;align-items:center;gap:8px;min-height:30px;padding:2px 8px;display:flex}.facet-option:hover{background:var(--bg-muted)}.facet-option input{width:16px;height:16px;accent-color:var(--fg);flex:none;margin:0}.facet-option .facet-value,.facet-option .category-badge{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.facet-count{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin-left:auto;padding-left:12px;font-size:12px}.facet-option-empty>:not(input):not(.facet-count){opacity:.7}.filter-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.filter-chips ul{display:contents}.filter-chips li{list-style:none;display:flex}.chip{border:1px solid var(--border-control);background:var(--bg-muted);max-width:320px;color:var(--fg);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 6px 2px 10px;font-size:13px;display:inline-flex}.chip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip .icon{color:var(--fg-secondary)}.chip:hover .icon{color:var(--fg)}.result-count{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0}.empty-state{border:1px dashed var(--border-control);border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:24px;display:flex}.empty-state p{margin:0}.button{border:1px solid var(--border-control);background:var(--bg-card);min-height:32px;color:var(--fg);font:inherit;cursor:pointer;border-radius:6px;padding:4px 12px}.button:hover{background:var(--bg-muted)}.view-tests>.table-scroll{max-width:none}.table-scroll{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;overflow-x:auto}.tests-table{border-collapse:collapse;width:100%;font-size:13px}.tests-table th,.tests-table td{border-top:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}.tests-table thead th{background:var(--bg-card);white-space:nowrap;border-top:0;position:sticky;top:0}.tests-table .numeric{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.tests-table tbody tr:hover{background:var(--bg-muted)}.tests-table .outcome-icon{white-space:nowrap}.cell-title{overflow-wrap:anywhere;min-width:240px}.cell-project{white-space:nowrap}.category-badges{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.category-more{color:var(--fg-secondary);cursor:help;font-size:12px;font-weight:600}.table-more{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.table-more p{color:var(--fg-secondary);font-variant-numeric:tabular-nums;margin:0 8px 0 0}.sort-button{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:2px;margin:-2px -4px;padding:2px 4px;font-size:12px;font-weight:600;display:inline-flex}.numeric .sort-button{flex-direction:row-reverse}.sort-button:hover{background:var(--bg-muted);color:var(--fg)}[aria-sort]>.sort-button{color:var(--fg)}.sort-idle{opacity:.5}.copy-button{align-items:center;gap:6px;display:inline-flex}.copy-button .icon,.copy-done{color:var(--fg-secondary)}.rerun-failed{flex-wrap:wrap;align-items:center;gap:4px 12px;display:flex}.rerun-note{color:var(--fg-secondary);margin:0;font-size:13px}.widget-verdict .rerun-failed{margin-top:12px}.pager{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.pager-button{align-items:center;gap:4px;display:inline-flex}.pager-button:disabled{color:var(--fg-secondary);cursor:default}.pager-button:disabled:hover{background:var(--bg-card)}.pager-position{color:var(--fg-secondary);font-variant-numeric:tabular-nums}.chevron-back{transform:rotate(180deg)}.test-page{flex-direction:column;max-width:1280px;display:flex}.test-header{flex-direction:column;gap:10px;display:flex}.test-header h1{margin:0}.title-suite{color:var(--fg-secondary);font-weight:400}.test-summary{flex-wrap:wrap;align-items:center;gap:4px 16px;display:flex}.test-summary code{overflow-wrap:anywhere}.test-meta{flex-wrap:wrap;gap:6px 24px;margin:0;font-size:13px;display:flex}.test-meta div{align-items:baseline;gap:6px;display:flex}.test-meta dt{color:var(--fg-secondary)}.test-meta dd{margin:0}.chips{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.tag{border:1px solid var(--border-control);background:var(--bg-card);overflow-wrap:anywhere;border-radius:999px;padding:0 8px;font-size:12px;line-height:20px}.test-actions{flex-wrap:wrap;gap:8px;display:flex}.attempt-tabs{border-bottom:1px solid var(--border-control);flex-wrap:wrap;gap:4px;margin-top:20px;display:flex}.attempt-tab{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px 6px 0 0;align-items:center;gap:6px;margin-bottom:-1px;padding:6px 12px;display:inline-flex}.attempt-tab:hover{background:var(--bg-muted);color:var(--fg)}.attempt-tab[aria-selected=true]{border-color:var(--border-control) var(--border-control) var(--bg);background:var(--bg);color:var(--fg);font-weight:600}.attempt-duration{color:var(--fg-secondary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400}.attempt-panel{flex-direction:column;gap:16px;margin-top:16px;display:flex}.detail-section{border:1px solid var(--border);background:var(--bg-card);border-radius:8px;flex-direction:column;gap:10px;min-width:0;padding:16px;display:flex}.detail-section h2{margin:0;font-size:15px}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.toggle-button[aria-pressed=true]{background:var(--bg-muted);box-shadow:inset 0 0 0 1px var(--fg)}.error-card{border:1px solid var(--border);border-left:3px solid var(--status-failed);border-radius:6px;flex-direction:column;gap:8px;padding:12px;display:flex}.error-head{flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:13px;display:flex}.error-location{color:var(--fg-secondary);overflow-wrap:anywhere}.error-group-link{margin-left:auto}pre.code-snippet,pre.stack,.output-block pre,.attachment-body pre{background:var(--bg-muted);border-radius:6px;margin:0;padding:8px 12px;overflow:auto}pre.stack,.output-block pre,.attachment-body pre{white-space:pre-wrap;overflow-wrap:anywhere}.tone-expected{color:var(--diff-expected)}.tone-received{color:var(--diff-received)}.tone-marker{color:var(--status-failed);font-weight:600}.tone-strong{font-weight:600}.stack-details>summary,.attachment-body>summary,.output-block>summary{color:var(--fg-secondary);cursor:pointer;flex-wrap:wrap;align-items:center;gap:6px;list-style:none;display:inline-flex}.stack-details>summary::-webkit-details-marker{display:none}.attachment-body>summary::-webkit-details-marker{display:none}.output-block>summary::-webkit-details-marker{display:none}.stack-details>summary:hover,.attachment-body>summary:hover,.output-block>summary:hover{color:var(--fg)}.stack-details[open]>summary .chevron,.attachment-body[open]>summary .chevron,.output-block[open]>summary .chevron{transform:rotate(90deg)}.stack-details>pre,.attachment-body>pre,.output-block>pre{margin-top:6px}.step-list{margin:0;padding:0;list-style:none}.step-list .step-list{border-left:1px solid var(--border);margin-left:22px;padding-left:0}.step-row{border-radius:4px;align-items:center;gap:6px;min-height:28px;padding:2px 6px 2px 2px;display:flex}.step-row:hover{background:var(--bg-muted)}.step-failing-path>.step-row{box-shadow:inset 3px 0 0 var(--status-failed)}.step-failing>.step-row{background:var(--bg-muted);font-weight:600}.step-toggle{width:22px;height:22px;color:var(--fg-secondary);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.step-toggle:hover{background:var(--bg-card);color:var(--fg)}.step-toggle[aria-expanded=true] .chevron{transform:rotate(90deg)}.step-toggle-space{flex:none;width:22px}.step-icon-space{flex:none;width:16px}.step-text{overflow-wrap:anywhere;flex:1;min-width:0}.step-subtitle{color:var(--fg-secondary);font-family:var(--font-mono);font-size:12.5px;font-weight:400}.step-category{border:1px solid var(--border-control);color:var(--fg-secondary);white-space:nowrap;border-radius:4px;margin-left:8px;padding:0 6px;font-size:11px;font-weight:400}.step-location{max-width:40%;color:var(--fg-secondary);text-overflow:ellipsis;white-space:nowrap;flex:none;font-weight:400;overflow:hidden}.step-duration{min-width:56px;color:var(--fg-secondary);text-align:right;font-variant-numeric:tabular-nums;flex:none;font-size:12px;font-weight:400}pre.step-error{margin:2px 0 6px 50px;font-weight:400}.attachment-groups{flex-direction:column;gap:12px;display:flex}.attachment-group h3{margin:0 0 4px;font-size:13px}.attachment-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.attachment-file{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.attachment-name{overflow-wrap:anywhere}.attachment-body .attachment-name{color:var(--fg)}.attachment-meta{color:var(--fg-secondary);font-size:12px}.output-block>summary .output-name{color:var(--fg);font-family:var(--font-mono)}.output-truncated{color:var(--status-flaky);border:1px solid;border-radius:4px;padding:0 6px;font-size:11px;font-weight:600}.output-notice{color:var(--status-flaky);margin:6px 0 0;font-size:13px}.dialog{border:1px solid var(--border-control);background:var(--bg-card);width:min(640px,100vw - 32px);max-height:calc(100vh - 64px);box-shadow:var(--shadow);color:var(--fg);border-radius:8px;padding:16px 20px 20px}.dialog::backdrop{background:#0006}.dialog-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.dialog-head h2{margin:0;font-size:16px}.dialog-note{color:var(--fg-secondary);margin:12px 0 0;font-size:13px}.copy-dialog .dialog-note{margin:0 0 8px}.copy-text{border:1px solid var(--border-control);background:var(--bg-muted);width:100%;color:var(--fg);font-family:var(--font-mono);resize:vertical;border-radius:6px;padding:8px;font-size:12.5px}.shortcuts-table{border-collapse:collapse;width:100%;font-size:13px}.shortcuts-table th,.shortcuts-table td{border-top:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 8px}.shortcuts-table thead th{color:var(--fg-secondary);border-top:0;font-size:12px;font-weight:600}.shortcuts-table td:first-child{white-space:nowrap}.shortcuts-table kbd{border:1px solid var(--border-control);background:var(--bg-muted);border-radius:4px;padding:0 5px;font-size:12px}.footer{border-top:1px solid var(--border);color:var(--fg-secondary);padding:16px 24px;font-size:12px}@media (width<=760px){.header{padding:8px 12px}.run-meta{order:10;width:100%}.sidebar{z-index:10;box-shadow:var(--shadow);position:absolute;inset:0 auto 0 0}.page{padding:16px}.footer{padding:12px 16px}.affected-tests thead{display:none}.affected-tests tr{border-top:1px solid var(--border);padding:6px 0;display:block}.affected-tests td{border:0;padding:2px 0;display:block}.run-time-details{white-space:normal}.step-location{display:none}pre.step-error,.error-group-link{margin-left:0}}
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 ne(e,t){if(t==null)return e.__?ne(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`?ne(e):null}function C(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),ue(e.__P,o,n,e.__n,e.__P.namespaceURI,32&n.__u?[r]:null,i,r??ne(n),!!(32&n.__u),a),o.__v=n.__v,o.__.__k[o.__i]=o,fe(i,o,a),n.__e=n.__=null,o.__e!=r&&w(o)}}function w(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}),w(e)}function re(e){(!e.__d&&(e.__d=!0)&&i.push(e)&&!T.__r++||a!=t.debounceRendering)&&((a=t.debounceRendering)||o)(T)}function T(){try{for(var e,t=1;i.length;)i.length>t&&i.sort(s),e=i.shift(),t=i.length,C(e)}finally{i.length=T.__r=0}}function ie(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=ae(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=ue(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&he(f.ref,null,p),u.push(p.ref,p.__c||m,p)),_==null&&m!=null&&(_=m),4&p.__u?(c=oe(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 ae(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=se(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=ne(s)),ge(s,s));return r}function oe(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=oe(r[i],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=ne(e)),t=n.insertBefore(e.__e,t||null));do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function se(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 ce(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||_.test(t)?n:n+`px`}function E(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||ce(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||ce(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 le(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 ue(e,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,_,b,x,C,w,re,T,ae,oe,se,ce,E=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 E==`function`){f=s.length;try{if(C=n.props,w=E.prototype&&E.prototype.render,re=(d=E.contextType)&&i[d.__c],T=d?re?re.props.value:d.__:i,r.__c?x=(p=n.__c=r.__c).__=p.__E:(w?n.__c=p=new E(C,T):(n.__c=p=new te(C,T),p.constructor=E,p.render=_e),re&&re.sub(p),p.state||(p.state={}),p.__n=i,m=p.__d=!0,p.__h=[],p._sb=[]),w&&p.__s==null&&(p.__s=p.state),w&&E.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=y({},p.__s)),y(p.__s,E.getDerivedStateFromProps(C,p.__s))),h=p.props,_=p.state,p.__v=n,m)w&&E.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),w&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(w&&E.getDerivedStateFromProps==null&&C!==h&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(C,T),n.__v==r.__v||!p.__e&&p.shouldComponentUpdate!=null&&!1===p.shouldComponentUpdate(C,p.__s,T)){n.__v!=r.__v&&(p.props=C,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=ne(r);break n}p.componentWillUpdate!=null&&p.componentWillUpdate(C,p.__s,T),w&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(h,_,b)})}if(p.context=T,p.props=C,p.__P=e,p.__e=!1,ae=t.__r,oe=0,w)p.state=p.__s,p.__d=!1,ae&&ae(n),d=p.render(p.props,p.state,p.context),g.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,ae&&ae(n),d=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++oe<25);p.state=p.__s,p.getChildContext!=null&&(i=y(y({},i),p.getChildContext())),w&&!m&&p.getSnapshotBeforeUpdate!=null&&(b=p.getSnapshotBeforeUpdate(h,_)),se=d!=null&&d.type===S&&d.key==null?pe(d.props.children):d,c=ie(e,v(se)?se:[se],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(ce=o.length;ce--;)ee(o[ce])}else n.__e=r.__e;n.__k??=r.__k||[],e.then||de(n),t.__e(e,n,r)}}else o==null&&n.__v==r.__v?(n.__k=r.__k,n.__e=r.__e):c=n.__e=me(r.__e,n,r,i,a,o,s,l,u);return(d=t.diffed)&&d(n),128&n.__u?void 0:c}function de(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(de))}function fe(e,n,r){for(var i=0;i<r.length;i++)he(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 pe(e){return typeof e!=`object`||!e||e.__b>0?e:v(e)?e.map(pe):e.constructor===void 0?y({},e):null}function me(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||E(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||E(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=``),ie(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&&ne(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])&&E(n,d,_,b[d],o),d=`checked`,y!=null&&y!=n[d]&&E(n,d,y,b[d],o))}return n}function he(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 ge(e,n,r){var i,a;if(t.unmount&&t.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||he(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]&&ge(i[a],n,r||typeof e.type!=`function`);r||ee(e.__e),e.__c=e.__=e.__e=void 0}function _e(e,t,n){return this.constructor(e,n)}function ve(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=[],ue(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),fe(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),re(this))},te.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),re(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},T.__r=0,c=Math.random().toString(8),l=`__d`+c,u=`__a`+c,d=/(PointerCapture)$|Capture$/i,f=0,p=le(!1),m=le(!0);var ye,D,be,xe,Se=0,Ce=[],O=t,we=O.__b,Te=O.__r,Ee=O.diffed,De=O.__c,Oe=O.unmount,ke=O.__;function Ae(e,t){O.__h&&O.__h(D,e,Se||t),Se=0;var n=D.__H||(D.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function k(e){return Se=1,je(ze,e)}function je(e,t,n){var r=Ae(ye++,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=D,!D.__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};D.__f=!0;var a=D.shouldComponentUpdate,o=D.componentWillUpdate;D.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)},D.shouldComponentUpdate=i}return r.__N||r.__}function A(e,t){var n=Ae(ye++,3);!O.__s&&Re(n.__H,t)&&(n.__=e,n.u=t,D.__H.__h.push(n))}function j(e,t){var n=Ae(ye++,4);!O.__s&&Re(n.__H,t)&&(n.__=e,n.u=t,D.__h.push(n))}function M(e){return Se=5,N(function(){return{current:e}},[])}function N(e,t){var n=Ae(ye++,7);return Re(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Me(){var e=Ae(ye++,11);if(!e.__){for(var t=D.__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=Ce.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Ie),t.__h.some(Le),t.__h=[]}catch(n){t.__h=[],O.__e(n,e.__v)}}}O.__b=function(e){D=null,we&&we(e)},O.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ke&&ke(e,t)},O.__r=function(e){Te&&Te(e),ye=0;var t=(D=e.__c).__H;t&&(be===D?(t.__h=[],D.__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=[],ye=0)),be=D},O.diffed=function(e){Ee&&Ee(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Ce.push(t)!==1&&xe===O.requestAnimationFrame||((xe=O.requestAnimationFrame)||Fe)(Ne)),t.__H.__.some(function(e){e.u&&=(e.__H=e.u,void 0)})),be=D=null},O.__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=[],O.__e(n,e.__v)}}),De&&De(e,t)},O.unmount=function(e){Oe&&Oe(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&&O.__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=D,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),D=t}function Le(e){var t=D;e.__c=e.__(),D=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`];function Xt(e,t){return t.status!==e.expectedStatus&&t.status!==`skipped`}function Zt(e){let t=new Map;for(let n of e.tests)for(let e of n.attempts)if(Xt(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 Qt(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 $t(e){return e.split(`
8
+ `).find(e=>e.trim()!==``)?.trim()??``}var en=/^(?:Error: )?(?:expect(?:\.soft|\.poll)?\(\w+\)\.(?:not\.)?\w+\([^)]*\)(?: failed)?|Timed out \d+ms waiting for expect\(.*)$/,tn=/^\s*Locator:\s+(.+?)\s*$/m,nn=/^\s*(?:- )?\u2190 (\d{3}\b.*?)\s*$/m;function rn(e){let t=$t(e);if(!en.test(t))return t;let n=tn.exec(e);if(n)return`Locator: ${n[1]}`;let r=nn.exec(e);return r?`\u2190 ${r[1]}`:t}function an(e){return{headline:rn(e.message),firstTest:e.tests[0]?.test??null,others:Math.max(0,e.tests.length-1)}}function on(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 sn(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 cn(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 ln(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 un(e){let t=e.total-e.skipped;return t>0?e.passed/t:null}var dn=`Pass rate: passed / (total − skipped). Skipped tests are excluded; flaky tests do not count as passed.`;function fn(e){let t=e*100;return t>99&&t<100?`99%`:t>0&&t<1?`<1%`:`${Math.round(t)}%`}function pn(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:un(t.stats),durationMs:n}})}function mn(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=bn(s.map(e=>e.value));for(let e of s)e.caseVariants=c.get(e.value)??[];return{definition:t,values:s,without:i}})}function hn(e){return e.values.length<=8?`bars`:`tiles`}function gn(e){return e.failed>0?`failed`:e.flaky>0?`flaky`:e.passed>0?`passed`:e.skipped>0?`skipped`:`none`}var _n={failed:0,flaky:1,passed:2,skipped:3,none:4};function vn(e){return e.map((e,t)=>({row:e,index:t,status:gn(e)})).sort((e,t)=>_n[e.status]-_n[t.status]||t.row.failed-e.row.failed||t.row.flaky-e.row.flaky||e.index-t.index).map(({row:e})=>e)}function yn(e){let t=t=>e.filter(e=>gn(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 bn(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 xn(e){return e.tests.filter(e=>e.outcome===`flaky`).map(e=>({test:e,error:e.attempts.find(t=>Xt(e,t))?.errors[0]??null}))}function Sn(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 Cn=[`skip`,`fixme`];function wn(e){return e.tests.filter(e=>e.outcome===`skipped`).map(e=>{let t=[...e.annotations,...e.attempts[e.attempts.length-1]?.annotations??[]].find(e=>Cn.includes(e.type));return{test:e,kind:t?t.type:null,reason:t?.description?.trim()||null}})}var Tn=/^@([^:\s]+):(.+)$/;function En(e){let t=Tn.exec(e);return t?{prefix:t[1]??``,value:t[2]??``}:null}var Dn=[`status`,`title`,`project`,`file`,`duration`,`category`,`attempts`],On={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:On},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`?On:null:!Dn.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=On;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===On.column&&e.direction===On.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=En(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(Xt(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,...e.tags,...Object.values(e.dimensions).flat()].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 H(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 U(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 W(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 G({name:e,color:t}){return W(`span`,{class:`category-badge`,style:ni(t),title:`Error category: ${e}`,children:e})}function K({children:e,class:t}){return W(`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 q(e){return ji[e]}function J({outcome:e,labelled:t=!1,decorative:n=!1}){let r={passed:W(`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:W(`path`,{d:`M5.5 5.5l5 5m0-5l-5 5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`}),flaky:W(`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:W(`path`,{d:`M5 8h6`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`})}[e];return W(`span`,{class:`outcome-icon outcome-${e}`,title:t||n?void 0:ji[e],"aria-hidden":n?`true`:void 0,children:[W(K,{children:[W(`circle`,{cx:`8`,cy:`8`,r:`7`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`}),r]}),!n&&W(`span`,{class:t?`outcome-text`:`visually-hidden`,children:ji[e]})]})}function Y(e){return W(K,{...e,children:W(`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 W(K,{...e,children:[W(`rect`,{x:`1.5`,y:`2.5`,width:`13`,height:`11`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),W(`path`,{d:`M6 2.5v11`,stroke:`currentColor`,"stroke-width":`1.3`})]})}function Ni(e){return W(K,{...e,children:[W(`rect`,{x:`1.5`,y:`2.5`,width:`13`,height:`9`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),W(`path`,{d:`M5.5 14h5M8 11.5V14`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})]})}function Pi(e){return W(K,{...e,children:[W(`circle`,{cx:`8`,cy:`8`,r:`3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),W(`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 W(K,{...e,children:W(`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 W(K,{...e,children:W(`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 W(K,{...e,children:[W(`path`,{d:`M8 1.8l6.5 11.4H1.5z`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`}),W(`path`,{d:`M8 6.2v3.3`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`}),W(`circle`,{cx:`8`,cy:`11.4`,r:`.9`,fill:`currentColor`})]})}function Ri(e){return W(K,{...e,children:[W(`circle`,{cx:`8`,cy:`8`,r:`6.3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),W(`path`,{d:`M8 4.6v4`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`}),W(`circle`,{cx:`8`,cy:`11.1`,r:`.9`,fill:`currentColor`})]})}function zi(e){return W(K,{...e,children:W(`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 W(K,{...e,children:[W(`path`,{d:`M6 4h8M6 8h8M6 12h8`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`}),W(`circle`,{cx:`2.8`,cy:`4`,r:`1`,fill:`currentColor`}),W(`circle`,{cx:`2.8`,cy:`8`,r:`1`,fill:`currentColor`}),W(`circle`,{cx:`2.8`,cy:`12`,r:`1`,fill:`currentColor`})]})}function Vi(e){return W(K,{...e,children:[W(`circle`,{cx:`7`,cy:`7`,r:`4.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`}),W(`path`,{d:`M10.4 10.4L14 14`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`})]})}function Hi(e){return W(K,{...e,children:W(`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 W(K,{...t,children:[e!==`desc`&&W(`path`,{d:`M5 6.5L8 3.5l3 3`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`}),e!==`asc`&&W(`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 W(K,{...e,children:[W(`rect`,{x:`5.5`,y:`5.5`,width:`8`,height:`9`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),W(`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 W(K,{...e,children:W(`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 W(K,{...e,children:[W(`rect`,{x:`1`,y:`3.5`,width:`14`,height:`9`,rx:`1.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}),W(`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]=k(!1),o=M(void 0),s=Me();return A(()=>()=>clearTimeout(o.current),[]),W(S,{children:[W(`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:[W(i?Gi:Wi,{}),W(`span`,{children:r}),i&&W(`span`,{class:`copy-done`,children:` · Copied`})]}),n&&W(`span`,{id:s,hidden:!0,children:n})]})}function Yi({group:e}){return W(`span`,{class:`group-split`,children:[`failed`,`flaky`].filter(t=>e[t]>0).map(t=>W(`span`,{class:`group-split-part split-${t}`,children:[W(J,{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 W(`span`,{class:`pass-rate`,title:dn,children:[W(`strong`,{children:fn(e)}),` pass rate`,W(`span`,{class:`visually-hidden`,children:` (skipped tests excluded)`})]})}function X({id:e,title:t,note:n,class:r,children:i}){return W(`section`,{class:`widget ${r??``}`,"aria-labelledby":e,children:[W(`h2`,{id:e,children:t}),n&&W(`p`,{class:`widget-note`,children:n}),i]})}function na({report:e,children:t}){let n=cn(e),{stats:r}=e.run,i=ln(r),a=un(r),o=i.map(({outcome:e,count:t})=>`${t} ${q(e).toLowerCase()}`).join(`, `);return W(`section`,{class:`widget widget-verdict`,"aria-labelledby":`w-verdict`,children:[W(`h2`,{id:`w-verdict`,class:`visually-hidden`,children:`Verdict`}),W(`div`,{class:`verdict`,children:[W(`p`,{class:`verdict-outcome outcome-${n}`,"data-verdict":n,children:[W(J,{outcome:n,decorative:!0}),W(`span`,{children:q(n)})]}),W(`p`,{class:`verdict-meta`,children:[a!==null&&W(S,{children:[W(ta,{rate:a}),` ·`,` `]}),U(r.total,`test`),` in `,W(`strong`,{children:H(e.run.durationMs)})]})]}),t,i.length>0&&W(S,{children:[W(`div`,{class:`outcome-bar`,role:`img`,"aria-label":o,children:i.map(({outcome:e,count:t,share:n})=>W(`span`,{class:`outcome-bar-part bar-${e}`,style:{flexGrow:n},title:`${t} ${q(e).toLowerCase()}`},e))}),W(`ul`,{class:`outcome-legend`,"aria-hidden":`true`,children:i.map(({outcome:e,count:t})=>W(`li`,{children:[W(J,{outcome:e,decorative:!0}),t,` `,q(e).toLowerCase()]},e))})]})]})}function ra({tests:e,action:t=`Copy rerun command`}){let n=Ei(e);return n.length===0?null:W(`div`,{class:`rerun-failed`,children:[W(Ji,{label:`Rerun command`,help:ki,text:()=>Ti(n),children:[t,` · `,U(n.length,`failed test`)]}),n.length>100&&W(`p`,{class:`rerun-note`,children:[`The command lists `,U(n.length,`test`),`: it is long, and some terminals may cut it.`]})]})}function ia({errors:e}){return W(X,{id:`w-run-errors`,class:`widget-run-errors`,title:W(S,{children:[W(Li,{}),U(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:[W(`ul`,{class:`widget-list`,children:e.slice(0,3).map((e,t)=>W(`li`,{children:W(`code`,{children:rn(e.message)})},t))}),W(`p`,{class:`widget-more`,children:W(`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 W(`li`,{class:`run-error`,children:[W(`div`,{class:`run-error-meta`,children:[e.category&&W(G,{name:e.category,color:t}),e.project!==null&&W(`span`,{children:[`Project `,e.project||`(unnamed)`]}),n&&W(`code`,{children:n})]}),W(`pre`,{class:`message error-message`,children:e.message}),e.snippet&&W(`pre`,{class:`code-snippet`,children:e.snippet}),e.stack&&e.stack!==e.message&&W(`details`,{children:[W(`summary`,{children:`Stack trace`}),W(`pre`,{class:`stack`,children:e.stack})]})]})}function oa({group:e,colors:t,inCategory:n}){let{headline:r,firstTest:i,others:a}=an(e),o=on(e);return W(`a`,{class:`group-row`,href:Qi(e.signature,n),children:[W(`span`,{class:`group-row-head`,children:[n===void 0&&W(G,{name:e.category,color:t.get(e.category)}),W(`span`,{class:`group-row-counts`,children:[W(Yi,{group:e}),o&&W(`span`,{class:`group-attempts`,children:o})]})]}),i&&W(`span`,{class:`group-test`,children:[i.title,a>0&&W(`span`,{class:`muted`,children:[` +`,U(a,`other`)]})]}),W(`code`,{class:`group-message`,children:r})]})}function sa({groups:e,colors:t,inCategory:n}){return W(`ol`,{class:`widget-list group-list`,children:e.map(e=>W(`li`,{children:W(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 W(`ul`,{class:`widget-list category-bars`,children:e.map(e=>W(`li`,{children:W(`a`,{class:`category-bar-row`,href:$i(`category`,e.name),children:[W(G,{name:e.name,color:t.get(e.name)}),W(`span`,{class:`category-bar-track`,"aria-hidden":`true`,children:W(`span`,{class:`category-bar`,style:{...ni(t.get(e.name)),width:`${e.tests/n*100}%`}})}),W(`span`,{class:`group-count`,children:U(e.tests,`test`)})]})},e.name))})}function la({categories:e,colors:t,open:n}){return W(`ul`,{class:`widget-list category-list`,children:e.map(e=>W(`li`,{"data-category":e.name,children:W(`details`,{open:e.name===n,children:[W(`summary`,{children:[W(Y,{class:`chevron`}),W(G,{name:e.name,color:t.get(e.name)}),W(`span`,{class:`muted`,children:U(e.groups.length,`error group`)}),W(`span`,{class:`group-count`,children:U(e.tests,`test`)})]}),W(sa,{groups:e.groups,colors:t,inCategory:e.name})]})},e.name))})}function ua({projects:e}){return W(`ul`,{class:`project-cards`,children:e.map(({project:e,passRate:t,durationMs:n})=>W(`li`,{children:W(`button`,{type:`button`,class:`project-card`,"aria-controls":`sidebar`,title:`Show this project in the sidebar`,onClick:()=>Mt(ci(e.name)),children:[W(`span`,{class:`project-name`,children:ea(e.name)}),W(`span`,{class:`counts`,children:[`passed`,`failed`,`flaky`,`skipped`].filter(t=>e.stats[t]>0).map(t=>W(`span`,{class:`count`,children:[W(J,{outcome:t,decorative:!0}),e.stats[t],` `,W(`span`,{class:`visually-hidden`,children:q(t).toLowerCase()})]},t))}),W(`span`,{class:`project-meta`,children:[U(e.stats.total,`test`),t!==null&&W(S,{children:[` · `,W(ta,{rate:t})]}),` `,`· `,H(n),` test time`]})]})},e.name))})}function da({value:e}){return W(`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 W(S,{children:[e.unknown&&W(`span`,{class:`hygiene-flag flag-unknown`,title:`Not among the values declared in the config`,children:[W(Li,{}),`unknown value`]}),e.caseVariants.length>0&&W(`span`,{class:`hygiene-flag flag-case`,title:`Differs from another value only by case. Tags are case-sensitive, so they are counted apart.`,children:[W(Li,{}),`likely duplicate of `,e.caseVariants.join(`, `)]})]})}function ga({name:e,values:t}){return W(`ul`,{class:`dimension-bars`,children:t.map(t=>W(`li`,{class:`dimension-bar-row`,"data-value":t.value,children:[W(`span`,{class:`dimension-value-cell`,children:[W(_a,{name:e,row:t}),W(ha,{row:t})]}),W(`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=>W(`span`,{class:`outcome-bar-part bar-${e}`,style:{flexGrow:t[e]}},e))}),W(`span`,{class:`dimension-bar-counts`,"aria-hidden":`true`,children:[`failed`,`flaky`].filter(e=>t[e]>0).map(e=>W(`span`,{class:`count`,children:[W(J,{outcome:e,decorative:!0}),t[e]]},e))}),W(`span`,{class:`dimension-total`,"aria-hidden":`true`,children:t.total})]},t.value))})}function _a({name:e,row:t}){return t.total===0?W(`span`,{class:`dimension-value`,children:t.value}):W(`a`,{class:`dimension-value`,href:$i(Nn(e),t.value),title:`Show the ${U(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`},Z=L(null);function ya(e,t){let n=Z.value;n?.key===e&&n.source===t&&(Z.value=null)}function ba(e){e.key===`Escape`&&Z.value&&(Z.value=null)}function xa({name:e,values:t}){return A(()=>(document.addEventListener(`keydown`,ba),()=>{document.removeEventListener(`keydown`,ba),Z.value?.key.startsWith(`${e}\u0000`)&&(Z.value=null)}),[e]),W(S,{children:[W(`p`,{class:`tile-summary`,children:yn(t)}),W(`ul`,{class:`dimension-tiles`,"aria-label":`${e} values`,children:vn(t).map(t=>{let n=gn(t),r=ma(t),i=[pa(t),...r].join(`; `),a=`${e}\u0000${t.value}`,o=Z.value?.key===a,s={class:`dimension-tile tile-${n}${o?` tooltip-open`:``}`,"data-value":t.value,"data-status":n,onPointerEnter:()=>Z.value={key:a,source:`hover`},onPointerLeave:()=>ya(a,`hover`),onFocus:()=>Z.value={key:a,source:`focus`},onBlur:()=>ya(a,`focus`)},c=W(S,{children:[n===`none`?W(`span`,{class:`tile-icon-none`,"aria-hidden":`true`}):W(J,{outcome:n,decorative:!0}),W(`span`,{class:`tile-value`,children:t.value}),r.length>0&&W(Li,{class:`tile-flag`}),W(`span`,{class:`visually-hidden`,children:[`: `,va[n],`, `,i]}),W(`span`,{class:`tile-details`,"aria-hidden":`true`,hidden:!o,children:[W(`strong`,{children:t.value}),W(`span`,{children:va[n]}),W(`span`,{children:pa(t)}),r.map(e=>W(`span`,{class:`tile-note`,children:e},e))]})]});return W(`li`,{children:t.total>0?W(`a`,{...s,href:$i(Nn(e),t.value),children:c}):W(`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=hn(e);return W(`section`,{class:`widget widget-dimension`,"aria-labelledby":i,"data-dimension":t.name,"data-representation":a,children:[W(`h2`,{id:i,children:t.name}),W(`p`,{class:`widget-note`,children:[`From `,t.source===`tag`?`tags @${t.key}:…`:`annotations of type "${t.key}"`,r>0&&` · ${U(r,`test`)} without a value`]}),W(a===`bars`?ga:xa,{name:t.name,values:n}),W(`details`,{class:`dimension-table`,children:[W(`summary`,{children:[W(Y,{class:`chevron`}),`Table`]}),W(`table`,{class:`data-table`,children:[W(`thead`,{children:W(`tr`,{children:[W(`th`,{scope:`col`,children:`Value`}),fa.map(e=>W(`th`,{scope:`col`,children:W(J,{outcome:e,labelled:!0})},e)),W(`th`,{scope:`col`,children:`Total`})]})}),W(`tbody`,{children:n.map(e=>W(`tr`,{children:[W(`th`,{scope:`row`,children:[W(_a,{name:t.name,row:e}),W(ha,{row:e})]}),fa.map(t=>W(da,{value:e[t]},t)),W(da,{value:e.total})]},e.value))})]})]}),t.values===null&&W(`p`,{class:`widget-hint`,children:[`No expected values are configured, so typos cannot be flagged as unknown. Declare them with `,W(`code`,{children:`values`}),` in`,` `,W(`a`,{href:Xi,target:`_blank`,rel:`noopener noreferrer`,children:`the dimension definition`}),`.`]})]})}function Ca({test:e,children:t,aside:n}){return W(`div`,{class:`test-line`,children:[W(J,{outcome:e.outcome}),W(`span`,{class:`test-text`,children:[W(`a`,{href:Zi(e),children:e.title}),W(`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 W(X,{id:`w-slowest`,class:`widget-slowest`,title:`Slowest tests`,note:`Total duration, retries included.`,children:W(`ol`,{class:`widget-list`,children:e.map(e=>W(`li`,{children:W(Ca,{test:e,aside:W(`span`,{class:`duration`,children:H(e.durationMs)}),children:e.attempts.length>1&&W(`span`,{class:`test-where`,children:U(e.attempts.length,`attempt`)})})},wa(e)))})})}function Ea({tests:e}){return W(X,{id:`w-skipped`,class:`widget-skipped`,title:`Skipped tests`,children:W(`ul`,{class:`widget-list`,children:e.map(({test:e,kind:t,reason:n})=>W(`li`,{children:W(Ca,{test:e,children:W(`span`,{class:`test-where`,children:[t===`fixme`&&W(`span`,{class:`skip-kind`,children:`fixme`}),` `,n??W(`span`,{class:`muted`,children:`No reason given`})]})})},wa(e)))})})}function Da({tests:e,colors:t}){return W(X,{id:`w-flaky`,class:`widget-flaky`,title:`Flaky tests`,note:`Failed, then passed on a retry: the error of the failing attempt.`,children:W(`ul`,{class:`widget-list`,children:e.map(({test:e,error:n})=>W(`li`,{children:W(Ca,{test:e,children:n&&W(`span`,{class:`flaky-error`,children:[n.category&&W(G,{name:n.category,color:t.get(n.category)}),W(`code`,{children:rn(n.message)})]})})},wa(e)))})})}function Oa({report:e,groups:t,category:n}){let r=M(null);A(()=>{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(()=>Qt(t),[t]),a=N(()=>sn(e,i),[e,i]),o=N(()=>ri(e.categories),[e]),{errors:s}=e.run;return W(`div`,{class:`page view view-errors`,ref:r,children:[W(`h1`,{children:`Errors`}),s.length===0&&t.length===0&&W(`p`,{class:`muted`,children:`No errors in this run.`}),s.length>0&&W(X,{id:`w-run-errors`,class:`widget-run-error-list`,title:U(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:W(`ol`,{class:`run-errors`,children:s.map((e,t)=>W(aa,{error:e,color:e.category?o.get(e.category):void 0},t))})}),i.length>0&&W(X,{id:`w-groups`,class:`widget-groups`,title:U(i.length,`error group`),note:`Errors grouped by normalized signature: most failed tests first, then most flaky tests.`,children:W(sa,{groups:i,colors:o})}),a.length>0&&W(X,{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:W(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 W(`nav`,{class:`pager`,"aria-label":e,children:[W(`button`,{type:`button`,class:`button pager-button`,disabled:!i,"aria-keyshortcuts":c[0],onClick:i??void 0,children:[W(Y,{class:`chevron-back`}),o]}),W(`span`,{class:`pager-position`,children:t===null?r:`${t} of ${n}`}),W(`button`,{type:`button`,class:`button pager-button`,disabled:!a,"aria-keyshortcuts":c[1],onClick:a??void 0,children:[s,W(Y,{})]})]})}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=Qt(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:`Previous / next screenshot`,where:`Screenshot viewer`},{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 W(`div`,{class:`page`,children:[W(`h1`,{children:`Not found`}),W(`p`,{children:e}),W(`p`,{children:W(`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 W(La,{message:`No error group with this signature in this report.`});let o=ri(e.categories).get(n.category);return W(`div`,{class:`page group-page`,children:[W(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`]}),W(`p`,{class:`breadcrumb`,children:i.restricted?`Error group · ${r.join(`, `)}`:`Error group`}),W(`h1`,{children:[U(n.tests.length,`test`),` failing with this error`]}),W(`dl`,{class:`group-meta`,children:[W(`div`,{children:[W(`dt`,{children:`Category`}),W(`dd`,{children:W(G,{name:n.category,color:o})})]}),W(`div`,{children:[W(`dt`,{children:`Tests`}),W(`dd`,{children:W(Yi,{group:n})})]}),W(`div`,{children:[W(`dt`,{children:`Signature`}),W(`dd`,{children:W(`code`,{children:n.signature})})]})]}),W(`h2`,{children:`Sample message`}),W(`pre`,{class:`message group-sample`,children:n.message}),W(`h2`,{children:`Affected tests`}),W(`table`,{class:`affected-tests`,children:[W(`thead`,{children:W(`tr`,{children:[W(`th`,{scope:`col`,children:`Test`}),W(`th`,{scope:`col`,children:`Project`}),W(`th`,{scope:`col`,children:`File`}),W(`th`,{scope:`col`,children:`Error in`})]})}),W(`tbody`,{children:n.tests.map(({test:e,attempts:t})=>W(`tr`,{children:[W(`td`,{children:W(`span`,{class:`test-cell`,children:[W(J,{outcome:e.outcome}),W(`a`,{href:V({page:`test`,id:e.id,repeatEachIndex:e.repeatEachIndex}),children:[...e.suitePath,e.title].join(` › `)}),e.repeatEachIndex>0&&W(`span`,{class:`row-note`,children:[`repeat `,e.repeatEachIndex]})]})}),W(`td`,{children:e.project||`(unnamed project)`}),W(`td`,{children:W(`code`,{children:[e.file,`:`,e.line]})}),W(`td`,{children:[t.map(Ra).join(`, `),W(`span`,{class:`muted`,children:[` of `,U(e.attempts.length,`attempt`)]})]})]},`${e.id}/${e.repeatEachIndex}`))})]})]})}function Ba({report:e}){let t=N(()=>({dimensions:mn(e).filter(e=>e.values.length>0),slowest:Sn(e),skipped:wn(e),flaky:xn(e)}),[e]),n=N(()=>ri(e.categories),[e]),r=t.dimensions.length+t.slowest.length+t.skipped.length+t.flaky.length===0;return W(`div`,{class:`page view view-health`,children:[W(`h1`,{children:`Suite health`}),r&&W(`p`,{class:`muted`,children:`No dimension, slow, skipped or flaky test to show for this run.`}),t.dimensions.length>0&&W(`div`,{class:`widget-grid dimension-grid`,children:t.dimensions.map(e=>W(Sa,{distribution:e},e.definition.name))}),(t.slowest.length>0||t.skipped.length>0||t.flaky.length>0)&&W(`div`,{class:`widget-grid`,children:[t.slowest.length>0&&W(Ta,{tests:t.slowest}),t.flaky.length>0&&W(Da,{tests:t.flaky,colors:n}),t.skipped.length>0&&W(Ea,{tests:t.skipped})]})]})}var Va={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 Ha(e){return Va[e]??e}var Ua={"github-actions":`GitHub Actions`,gitlab:`GitLab CI`,"azure-pipelines":`Azure Pipelines`,circleci:`CircleCI`,jenkins:`Jenkins`,bitbucket:`Bitbucket Pipelines`,buildkite:`Buildkite`,travis:`Travis CI`};function Wa(e){return typeof e==`string`&&e.trim()!==``?e.trim():null}function Ga(e,t){return e===`partial`?t.length>0?`Partial run: ${t.map(Ha).join(`, `)}`:`Partial run`:`Full run`}function Ka(e,t){if(!e)return`No`;let n=Wa(t);return n===null?`Yes`:Ua[n]??n}function qa(e){return e?`${e.current} of ${e.total}`:null}function Ja(e){let{run:t,generator:n}=e,r=Wa(t.git.commit);return[{title:`Run`,rows:[{label:`Scope`,value:Ga(t.scope,t.scopeReasons)},{label:`CI`,value:Ka(t.environment.ci,t.environment.ciProvider)},Number.isFinite(t.workers)?{label:`Workers`,value:String(t.workers)}:null,Ya(`Shard`,qa(t.shard))]},{title:`Code`,rows:[r===null?null:{label:`Commit`,value:r.slice(0,7),full:r},Ya(`Branch`,t.git.branch),Ya(`Repository`,t.git.remote)]},{title:`Environment`,rows:[Ya(`Playwright`,t.playwrightVersion),Ya(`Loupe`,n.version),Ya(`Node`,t.environment.nodeVersion),Ya(`OS`,t.environment.os)]}].map(({title:e,rows:t})=>({title:e,rows:t.filter(e=>e!==null)})).filter(e=>e.rows.length>0)}function Ya(e,t){let n=Wa(t);return n===null?null:{label:e,value:n}}function Xa({report:e}){return W(X,{id:`w-run-details`,class:`widget-run-details`,title:`Run details`,children:W(`div`,{class:`run-details`,children:Ja(e).map(({title:e,rows:t})=>W(`div`,{class:`run-details-group`,children:[W(`h3`,{id:`run-details-${e.toLowerCase()}`,children:e}),W(`dl`,{"aria-labelledby":`run-details-${e.toLowerCase()}`,children:t.map(({label:e,value:t,full:n})=>W(`div`,{children:[W(`dt`,{children:e}),W(`dd`,{children:n===void 0?t:W(S,{children:[W(`code`,{title:n,children:t}),W(Ji,{label:`Commit hash`,help:n,text:()=>n,children:[`Copy`,W(`span`,{class:`visually-hidden`,children:` commit hash`})]})]})})]},e))})]},e))})})}function Za({report:e,groups:t,matched:n}){let r=N(()=>({categories:sn(e,t),projects:pn(e)}),[e,t]),i=N(()=>ri(e.categories),[e]);return W(`div`,{class:`page view view-overview`,children:[W(`h1`,{children:`Overview`}),W(na,{report:e,children:W(ra,{tests:n,action:`Rerun failed tests`})}),e.run.errors.length>0&&W(ia,{errors:e.run.errors}),r.categories.length>0&&W(X,{id:`w-categories`,class:`widget-categories`,title:`Error categories`,note:W(S,{children:[`Failing tests per category. `,W(`a`,{href:V({page:`errors`}),children:[`All `,U(t.length,`error group`)]})]}),children:W(ca,{categories:r.categories,colors:i})}),r.projects.length>0&&W(X,{id:`w-projects`,class:`widget-projects`,title:`Projects`,children:W(ua,{projects:r.projects})}),W(Xa,{report:e})]})}var Qa=[`diff`,`side`,`slider`,`overlay`],$a={diff:`Diff`,side:`Side by side`,slider:`Slider`,overlay:`Overlay`};function eo(e){let t=new Map;for(let n of e){if(n.kind!==`screenshot`||!n.comparison)continue;let{group:e,role:r}=n.comparison,i=t.get(e);i||t.set(e,i={group:e,images:{}}),!i.images[r]&&(i.images[r]=n)}let n=[...t.values()].filter(e=>Object.keys(e.images).length>1),r=new Set(n.flatMap(e=>Object.values(e.images))),i={comparisons:n,screenshots:[],videos:[],traces:[],files:[]};for(let t of e)r.has(t)||(t.kind===`screenshot`?i.screenshots.push(t):t.kind===`video`?i.videos.push(t):t.kind===`trace`?i.traces.push(t):i.files.push(t));return i}function to(e){return[...e.comparisons.map(e=>({type:`comparison`,set:e})),...e.screenshots.map(e=>({type:`image`,attachment:e}))]}function no(e){let{expected:t,actual:n,diff:r}=e.images;return Qa.filter(e=>e===`diff`?r!==void 0:t!==void 0&&n!==void 0)}function ro(e,t){return t!==null&&e.includes(t)?t:e.includes(`diff`)?`diff`:e[0]??`side`}function io(e,t){let n;try{n=new URL(Q(e),t)}catch{return null}if(n.protocol!==`file:`||n.host!==``)return null;let r;try{r=decodeURIComponent(n.pathname)}catch{return null}return/^\/[A-Za-z]:(?:\/|$)/.test(r)?r.slice(1):r}function ao(e,t){return`npx playwright show-trace ${xi(io(e,t)??e)}`}function oo(e,t){let n=e.trim(),r=n===``?``:`Requires Playwright ${n} or later. `;return t?`${r}Run it from your project root, in a POSIX shell (bash, zsh), so it uses the project's own Playwright.`:`${r}Run it from the report folder (the one containing index.html), in a POSIX shell (bash, zsh); it uses the project's own Playwright.`}function Q(e){return e.split(`/`).map(encodeURIComponent).join(`/`)}var so=L(null),co={expected:`Expected`,actual:`Actual`,diff:`Diff`};function lo(e){let[t,n]=k({}),r=Object.entries(e.images);return A(()=>{let e=!0,t=(t,r)=>{e&&n(e=>({...e,[t]:r}))};for(let[e,n]of r){if(!n.path){t(e,null);continue}let r=new Image;r.onload=()=>t(e,[r.naturalWidth,r.naturalHeight]),r.onerror=()=>t(e,null),r.src=Q(n.path)}return()=>{e=!1}},[r.map(([e,t])=>`${e}:${t.path}`).join(`
10
+ `)]),t}function uo(e){return e===void 0?`…`:e===null?`not found`:`${e[0]} × ${e[1]}`}function fo({set:e,sizes:t,mode:n,onImageClick:r}){let[i,a]=k(50),[o,s]=k(50),c=Me(),{expected:l,actual:u}=e.images,[d,f]=[t.expected,t.actual];if(d===null)return W(Ko,{attachment:l});if(f===null)return W(Ko,{attachment:u});if(!d||!f)return W(`div`,{class:`cmp-loading`});let p=Math.max(d[0],f[0]),m=Math.max(d[1],f[1]),h=(t,n,i)=>W(`img`,{class:`cmp-layer`,src:Q(t.path??``),alt:`${co[i]} (${e.group})`,style:{width:`${n[0]/p*100}%`},onClick:r});return W(S,{children:[W(`div`,{class:`cmp-stack`,style:{"--w":p,"--h":m},children:[h(l,d,`expected`),W(`div`,{class:`cmp-top`,style:n===`slider`?{clipPath:`inset(0 0 0 ${i}%)`}:{opacity:o/100},children:h(u,f,`actual`)}),n===`slider`&&W(S,{children:[W(`input`,{type:`range`,class:`cmp-range`,min:0,max:100,value:i,"aria-label":`Divider position`,"aria-describedby":c,"aria-valuetext":`${i}%`,onInput:e=>a(Number(e.currentTarget.value))}),W(`span`,{class:`cmp-divider`,style:{left:`${i}%`}})]})]}),n===`slider`&&W(`p`,{class:`cmp-hint`,id:c,children:`Drag the divider, or use the arrow keys: expected on the left, actual on the right.`}),n===`overlay`&&W(`label`,{class:`cmp-opacity`,children:[`Actual opacity`,W(`input`,{type:`range`,min:0,max:100,value:o,"aria-valuetext":`${o}%`,onInput:e=>s(Number(e.currentTarget.value))}),W(`output`,{children:[o,`%`]})]})]})}function po({set:e,onImageClick:t}){let n=no(e),r=ro(n,so.value),i=lo(e),{expected:a,actual:o,diff:s}=e.images,c=n=>{let r=e.images[n];return r&&W(qo,{attachment:r,alt:`${co[n]} (${e.group})`,class:`cmp-image`,onClick:t},r.path)},l=i.expected&&i.actual?[i.expected,i.actual]:null,u=l&&(l[0][0]!==l[1][0]||l[0][1]!==l[1][1]);return W(`div`,{class:`comparison`,children:[W(`div`,{class:`cmp-modes`,role:`group`,"aria-label":`Comparison mode`,children:n.map(e=>W(`button`,{type:`button`,class:`button toggle-button`,"aria-pressed":e===r,onClick:()=>so.value=e,children:$a[e]},e))}),r===`diff`&&c(`diff`),r===`side`&&W(`div`,{class:`cmp-side${l?` cmp-scaled`:``}`,style:l?{"--w":l[0][0]+l[1][0],"--h":Math.max(l[0][1],l[1][1])}:void 0,children:[`expected`,`actual`].map((e,t)=>W(`figure`,{style:l?{flexGrow:l[t][0]}:void 0,children:[W(`figcaption`,{children:co[e]}),c(e)]},e))}),(r===`slider`||r===`overlay`)&&W(fo,{set:e,sizes:i,mode:r,onImageClick:t}),W(`p`,{class:`cmp-sizes`,children:[[[`expected`,a],[`actual`,o],[`diff`,s]].map(([e,t])=>t&&W(`span`,{children:[t.path?W(`a`,{href:Q(t.path),target:`_blank`,rel:`noopener`,children:co[e]}):co[e],` `,uo(i[e])]},e)),u&&W(`strong`,{class:`cmp-differ`,children:`Expected and actual sizes differ`})]})]})}function mo({set:e,open:t}){return W(`article`,{class:`comparison-card`,"aria-label":`Screenshot comparison ${e.group}`,children:[W(`div`,{class:`comparison-head`,children:[W(`h4`,{children:e.group}),W(`button`,{type:`button`,class:`button`,onClick:t,children:`Open in viewer`})]}),W(po,{set:e})]})}function ho({open:e,onClose:t,title:n,class:r,actions:i,children:a}){let o=M(null),s=M(null),c=Me();return j(()=>{let t=o.current;t&&(e&&!t.open?(s.current=document.activeElement instanceof HTMLElement?document.activeElement:null,t.showModal()):!e&&t.open&&t.close())}),W(`dialog`,{ref:o,class:`dialog ${r??``}`,"aria-labelledby":c,onClose:()=>{if(o.current?.open)return;t();let e=document.activeElement;(!e||e===document.body||o.current?.contains(e))&&s.current?.focus(),s.current=null},onClick:e=>{e.target===o.current&&o.current?.close()},children:[W(`div`,{class:`dialog-head`,children:[W(`h2`,{id:c,children:n}),W(`div`,{class:`dialog-actions`,children:[i,W(`button`,{type:`button`,class:`icon-button`,title:`Close`,onClick:()=>o.current?.close(),children:[W(Hi,{}),W(`span`,{class:`visually-hidden`,children:`Close`})]})]})]}),a]})}function go(){let e=St.value,t=M(null);return j(()=>{e&&(t.current?.focus(),t.current?.select())},[e]),W(ho,{open:e!==null,onClose:()=>St.value=null,title:`Copy ${e?.label.toLowerCase()??``}`,class:`copy-dialog`,children:[W(`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.`}),W(`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 W(ho,{open:e,onClose:t,title:`Keyboard shortcuts`,class:`shortcuts-dialog`,children:[W(`table`,{class:`shortcuts-table`,children:[W(`thead`,{children:W(`tr`,{children:[W(`th`,{scope:`col`,children:`Key`}),W(`th`,{scope:`col`,children:`Action`}),W(`th`,{scope:`col`,children:`Where`})]})}),W(`tbody`,{children:Na.map(({keys:e,action:t,where:n})=>W(`tr`,{children:[W(`td`,{children:e.map((e,t)=>W(`span`,{children:[t>0&&` / `,W(`kbd`,{children:e})]},e))}),W(`td`,{children:t}),W(`td`,{children:n})]},t))})]}),W(`p`,{class:`dialog-note`,children:`Single keys do nothing while typing in a field or with Ctrl, Alt or Meta held.`})]})}function vo({attachment:e,playwrightVersion:t}){let{path:n}=e,r=window.location.href,i=oo(t,n!==null&&io(n,r)!==null);return W(`div`,{class:`trace-card`,children:[W(`span`,{class:`attachment-name`,children:e.name}),n?W(S,{children:[W(`div`,{class:`trace-actions`,children:[W(Ji,{label:`Trace command`,help:i,text:()=>ao(n,r),children:`Copy trace command`}),W(`a`,{class:`button trace-download`,href:Q(n),download:n.slice(n.lastIndexOf(`/`)+1),children:`Download trace`})]}),W(`p`,{class:`trace-help`,children:i})]}):W(`span`,{class:`muted`,children:`(file missing)`})]})}var yo=/^((Expected|Received)(?: [a-z]+)*:)(\s+)(\S.*)$/,bo=/^- Expected(?:\s+- \d+)?$/,xo=/^\+ Received(?:\s+\+ \d+)?$/,So=/^[-+ ] /;function Co(e){return[{text:e,tone:null}]}function wo(e){let t=yo.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 To(e){return e.startsWith(`- `)?[{text:e,tone:`expected`}]:e.startsWith(`+ `)?[{text:e,tone:`received`}]:Co(e)}function Eo(e){let t=e.split(`
11
+ `),n=[],r=0;for(;r<t.length;){let e=t[r],i=t[r+1];if(bo.test(e)&&i!==void 0&&xo.test(i)){for(n.push([{text:e,tone:`expected`}],[{text:i,tone:`received`}]),r+=2;r<t.length&&t[r]===``;)n.push(Co(t[r++]));for(;r<t.length&&So.test(t[r]);)n.push(To(t[r++]))}else n.push(wo(e)??Co(e)),r+=1}return n}var Do=/^(>)(\s*\d+ \|.*)$/,Oo=/^(\s*\|\s*)(\^+)(\s*)$/;function ko(e){return e.split(`
12
+ `).map(e=>{let t=Do.exec(e);if(t)return[{text:t[1],tone:`marker`},{text:t[2],tone:`strong`}];let n=Oo.exec(e);return n?[{text:n[1],tone:null},{text:n[2],tone:`marker`},...n[3]?[{text:n[3],tone:null}]:[]]:Co(e)})}function Ao(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 jo(e){return e.category===`test.step`||e.error!==null}function Mo(e,t){let n=new Set(Ao(e)),r=[...n].pop(),i=(e,a)=>e.flatMap((e,o)=>{let s=`${a}${o}`,c=i(e.steps,`${s}.`);return t==="default"&&!jo(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 Po(e,t=5){let n=Ao(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 Fo({lines:e}){return W(S,{children:e.map((e,t)=>W(S,{children:[t>0&&`
13
+ `,e.map((e,t)=>e.tone?W(`span`,{class:`tone-${e.tone}`,children:e.text},t):e.text)]},t))})}function Io(e){return e?e.column===void 0?`${e.file}:${e.line}`:`${e.file}:${e.line}:${e.column}`:null}function Lo({error:e,group:t,color:n}){let r=Io(e.location);return W(`article`,{class:`error-card`,children:[W(`div`,{class:`error-head`,children:[W(G,{name:e.category??`Uncategorized`,color:n}),r&&W(`code`,{class:`error-location`,children:r}),t&&W(`a`,{class:`error-group-link`,href:Qi(t.signature),title:`Every test failing with this error`,children:[`View error group `,W(`span`,{class:`muted`,children:[`(`,U(t.tests.length,`test`),`)`]})]})]}),W(`pre`,{class:`message error-message`,children:W(Fo,{lines:Eo(e.message)})}),e.snippet&&W(`pre`,{class:`code-snippet`,children:W(Fo,{lines:ko(e.snippet)})}),e.stack&&e.stack!==e.message&&W(`details`,{class:`stack-details`,children:[W(`summary`,{children:[W(Y,{class:`chevron`}),`Show stack`]}),W(`pre`,{class:`stack`,children:e.stack})]})]})}function Ro(e){return e.error!==null&&!e.steps.some(e=>e.error!==null)}function zo({node:e,mode:t,expanded:n,toggle:r}){let{step:i,children:a}=e,o=n.has(e.key),s=Io(i.location?{file:i.location.file,line:i.location.line}:null);return W(`li`,{class:`step${e.onFailingPath?` step-failing-path`:``}${e.failing?` step-failing`:``}`,"data-category":i.category,children:[W(`div`,{class:`step-row`,children:[a.length>0?W(`button`,{type:`button`,class:`step-toggle`,"aria-expanded":o,onClick:()=>r(e.key),children:[W(Y,{class:`chevron`}),W(`span`,{class:`visually-hidden`,children:[o?`Collapse`:`Expand`,` `,i.title]})]}):W(`span`,{class:`step-toggle-space`}),i.error?W(J,{outcome:`failed`}):W(`span`,{class:`step-icon-space`}),W(`span`,{class:`step-text`,children:[W(`span`,{class:`step-title`,children:i.title}),i.subtitle&&W(`span`,{class:`step-subtitle`,children:[` `,i.subtitle]}),t===`all`&&W(`span`,{class:`step-category`,children:i.category}),e.failing&&W(`span`,{class:`visually-hidden`,children:` (failing step)`})]}),s&&W(`code`,{class:`step-location`,children:s}),W(`span`,{class:`step-duration`,children:H(i.durationMs)})]}),i.error&&Ro(i)&&W(`pre`,{class:`message step-error`,children:W(Fo,{lines:Eo(i.error.message)})}),o&&a.length>0&&W(Bo,{nodes:a,mode:t,expanded:n,toggle:r})]})}function Bo({nodes:e,mode:t,expanded:n,toggle:r}){return W(`ul`,{class:`step-list`,children:e.map(e=>W(zo,{node:e,mode:t,expanded:n,toggle:r},e.key))})}function Vo({steps:e,mode:t}){let n=Mo(e,t),[r,i]=k(()=>new Set(Ao(e)));return n.length===0?W(`p`,{class:`muted`,children:[`No `,t==="default"?`test.step or failing step`:`step`,` in this attempt.`]}):W(Bo,{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 Ho=new TextEncoder;function Uo(e){return e<1e3?`${e} B`:e<1e6?`${(e/1e3).toFixed(1)} kB`:`${(e/1e6).toFixed(1)} MB`}function Wo({attachment:e}){let t=t=>W(`span`,{class:`attachment-meta`,children:[e.contentType,t&&` · ${t}`]});return e.body===null?W(`div`,{class:`attachment-file`,children:[e.path?W(`a`,{class:`attachment-name`,href:Q(e.path),children:e.name}):W(`span`,{class:`attachment-name`,children:[e.name,` `,W(`span`,{class:`muted`,children:`(file missing)`})]}),t(null)]}):W(`details`,{class:`attachment-body`,children:[W(`summary`,{children:[W(Y,{class:`chevron`}),W(`span`,{class:`attachment-name`,children:e.name}),t(Uo(Ho.encode(e.body).length))]}),W(`pre`,{children:e.body})]})}function Go({name:e,output:t}){if(t.text===``&&!t.truncated)return null;let n=t.text.split(`
14
+ `).filter((e,t,n)=>e!==``||t<n.length-1).length;return W(`details`,{class:`output-block`,children:[W(`summary`,{children:[W(Y,{class:`chevron`}),W(`span`,{class:`output-name`,children:e}),W(`span`,{class:`muted`,children:U(n,`line`)}),t.truncated&&W(`span`,{class:`output-truncated`,children:`truncated`})]}),t.truncated&&W(`p`,{class:`output-notice`,children:`Truncated: the report keeps the first 32,768 characters of each attempt.`}),W(`pre`,{children:t.text})]})}function Ko({attachment:e,note:t=`File not found`}){return W(`span`,{class:`media-missing`,children:[W(`strong`,{children:e.name}),W(`span`,{children:t}),W(`code`,{children:e.path??`no file in the report`})]})}function qo({attachment:e,alt:t=e.name,lazy:n=!1,class:r,onClick:i}){let[a,o]=k(!1);return!e.path||a?W(Ko,{attachment:e}):W(`img`,{src:Q(e.path),alt:t,class:r,loading:n?`lazy`:void 0,decoding:`async`,onError:()=>o(!0),onClick:i})}function Jo({attachment:e,label:t=`Open original`}){return e.path?W(`a`,{class:`open-original`,href:Q(e.path),target:`_blank`,rel:`noopener`,children:t}):null}function Yo({screenshots:e,open:t}){return W(`ul`,{class:`thumbs`,children:e.map((e,n)=>W(`li`,{children:W(`button`,{type:`button`,class:`thumb`,onClick:()=>t(n),children:[W(qo,{attachment:e,lazy:!0},e.path),W(`span`,{class:`thumb-name`,"aria-hidden":`true`,children:e.name})]})},n))})}function Xo(e,t){let n=M(t);n.current=t,A(()=>{if(!e)return;let t=e=>{let t={ArrowLeft:-1,ArrowRight:1}[e.key];!t||e.defaultPrevented||e.ctrlKey||e.altKey||e.metaKey||e.shiftKey||Pa(e.target)||e.target instanceof HTMLInputElement&&e.target.type===`range`||(e.preventDefault(),n.current(t))};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e])}function Zo({items:e,index:t,setIndex:n}){let[r,i]=k(null),a=t!==null&&r===t,o=t===null?void 0:e[t],s=r=>{t!==null&&e[t+r]&&n(t+r)};Xo(o!==void 0,s);let c=()=>i(a?null:t);return W(ho,{open:o!==void 0,onClose:()=>{n(null),i(null)},title:o?o.type===`image`?o.attachment.name:o.set.group:``,class:`lightbox${a?` actual-size`:``}`,actions:o?.type===`image`&&W(Jo,{attachment:o.attachment}),children:o&&t!==null&&W(S,{children:[W(`div`,{class:`lightbox-stage`,onClick:e=>{e.target===e.currentTarget&&n(null)},children:o.type===`image`?W(qo,{attachment:o.attachment,class:`lightbox-image`,onClick:c},o.attachment.path):W(po,{set:o.set,onImageClick:c},o.set.group)}),W(`div`,{class:`lightbox-bar`,children:[W(`button`,{type:`button`,class:`button pager-button`,disabled:t===0,onClick:()=>s(-1),children:`← Previous`}),W(`span`,{class:`lightbox-position`,"aria-live":`polite`,children:[t+1,` of `,e.length]}),W(`button`,{type:`button`,class:`button pager-button`,disabled:t===e.length-1,onClick:()=>s(1),children:`Next →`}),W(`button`,{type:`button`,class:`button toggle-button`,"aria-pressed":a,onClick:c,children:`Actual size`})]})]})})}function Qo({attachment:e}){let[t,n]=k(!1);return W(`figure`,{class:`video`,children:[e.path&&!t?W(`video`,{controls:!0,preload:`metadata`,children:W(`source`,{src:Q(e.path),type:e.contentType,onError:()=>n(!0)})}):W(Ko,{attachment:e,note:e.path?`Cannot play this video`:`File not found`}),W(`figcaption`,{children:[W(`span`,{class:`attachment-name`,children:e.name}),W(Jo,{attachment:e})]})]})}function $o({label:e,count:t,children:n}){return t===0?null:W(`section`,{class:`attachment-group`,"aria-label":e,children:[W(`h3`,{children:[e,` `,W(`span`,{class:`muted`,children:t})]}),n]})}function es({attachments:e}){return W(`ul`,{class:`attachment-list`,children:e.map((e,t)=>W(`li`,{children:W(Wo,{attachment:e})},t))})}function ts({attachments:e,playwrightVersion:t}){let n=eo(e),[r,i]=k(null),a=e=>i(e===null?null:{index:e}),o=B.value;A(()=>i(null),[o]);let s=n.files.filter(e=>e.kind===`text`),c=n.files.filter(e=>e.kind!==`text`);return W(`div`,{class:`attachment-groups`,children:[W($o,{label:`Screenshots`,count:n.comparisons.length+n.screenshots.length,children:[n.comparisons.map((e,t)=>W(mo,{set:e,open:()=>a(t)},e.group)),n.screenshots.length>0&&W(Yo,{screenshots:n.screenshots,open:e=>a(n.comparisons.length+e)})]}),W($o,{label:`Videos`,count:n.videos.length,children:n.videos.map((e,t)=>W(Qo,{attachment:e},`${t}/${e.path}`))}),W($o,{label:`Traces`,count:n.traces.length,children:n.traces.map((e,n)=>W(vo,{attachment:e,playwrightVersion:t},n))}),W($o,{label:`Text`,count:s.length,children:W(es,{attachments:s})}),W($o,{label:`Other`,count:c.length,children:W(es,{attachments:c})}),W(Zo,{items:to(n),index:r?.index??null,setIndex:a})]})}function ns(e){return e===0?`Attempt 1`:`Retry ${e}`}function rs(e){let t=e.attempts.filter(t=>Xt(e,t));return t[t.length-1]??e.attempts[e.attempts.length-1]??null}function is(e,t){if(t===null)return{attempt:rs(e),valid:!0};let n=e.attempts.find(e=>e.index===t);return n?{attempt:n,valid:!0}:{attempt:rs(e),valid:!1}}var as=`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 os(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 ss(e){return e.location?`${e.location.file}:${e.location.line}:${e.location.column}`:null}function cs(e){return e.subtitle?`${e.title} (${e.subtitle})`:e.title}function ls(e,t,n,r){let i=[`## Error${n>1?` ${t+1} of ${n}`:``}`,``,`Category: ${e.category??`Uncategorized`}`],a=ss(e);return a&&i.push(`Location: ${a}`),i.push(``,`Message:`,os(e.message)),e.snippet&&i.push(``,`Code:`,os(e.snippet)),r.includeStack&&e.stack&&e.stack!==e.message&&i.push(``,`Stack:`,os(e.stack)),i}function us(e,t,n){let r=e.attempts.findIndex(e=>e.index===t.index)+1,i=[as,``,`## 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} (${ns(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(``,...ls(e,r,t.errors.length,n))),t.errors.length===0&&i.push(``,`## Error`,``,`This attempt reported no error.`);let o=Po(t.steps);return o&&(i.push(``,`## Failing step`,``,o.path.map(cs).join(` › `)),o.preceding.length>0&&i.push(``,`Steps before it, at the same level:`,...o.preceding.map((e,t)=>`${t+1}. ${cs(e)}`))),t.attachments.length>0&&i.push(``,`## Attachments (not included)`,``,...t.attachments.map(e=>`- ${e.name} (${e.contentType})`)),`${i.join(`
15
+ `)}\n`}var ds={passed:`passed`,failed:`failed`,timedOut:`failed`,interrupted:`failed`,skipped:`skipped`},fs={passed:`Passed`,failed:`Failed`,timedOut:`Timed out`,interrupted:`Interrupted`,skipped:`Skipped`};function ps(e){return{page:`test`,id:e.id,repeatEachIndex:e.repeatEachIndex}}function ms({type:e,description:t}){return t?`${e}: ${t}`:e}function hs({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:W(`dl`,{class:`test-meta`,children:[e.tags.length>0&&W(`div`,{children:[W(`dt`,{children:`Tags`}),W(`dd`,{class:`chips`,children:e.tags.map(e=>W(`span`,{class:`tag`,children:e},e))})]}),e.annotations.length>0&&W(`div`,{children:[W(`dt`,{children:`Annotations`}),W(`dd`,{class:`chips`,children:e.annotations.map((e,t)=>W(`span`,{class:`tag`,children:ms(e)},t))})]}),t.map(([e,t])=>W(`div`,{children:[W(`dt`,{children:e}),W(`dd`,{children:t.join(`, `)})]},e))]})}function gs({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 W(`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 W(`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:[W(J,{outcome:ds[e.status],decorative:!0}),W(`span`,{children:ns(e.index)}),W(`span`,{class:`visually-hidden`,children:[`, `,fs[e.status]]}),W(`span`,{class:`attempt-duration`,children:H(e.durationMs)})]},e.index)})})}function _s({test:e,attempt:t,params:n,groups:r,colors:i,playwrightVersion:a}){let o=n.allSteps?`all`:`default`,s=new Set(e.annotations.map(ms)),c=t.annotations.filter(e=>!s.has(ms(e)));return W(S,{children:[t.errors.length>0&&W(`section`,{class:`detail-section`,"aria-labelledby":`detail-errors`,children:[W(`h2`,{id:`detail-errors`,children:t.errors.length===1?`Error`:U(t.errors.length,`error`)}),t.errors.map((e,t)=>W(Lo,{error:e,group:r.get(e.signature),color:e.category?i.get(e.category):void 0},t))]}),t.steps.length>0&&W(`section`,{class:`detail-section`,"aria-labelledby":`detail-steps`,children:[W(`div`,{class:`section-head`,children:[W(`h2`,{id:`detail-steps`,children:`Steps`}),W(`button`,{type:`button`,class:`button toggle-button`,"aria-pressed":n.allSteps,onClick:()=>Ar(xr({...n,allSteps:!n.allSteps})),children:`Show all steps`})]}),W(Vo,{steps:t.steps,mode:o},`${e.id}/${e.repeatEachIndex}/${t.index}`)]}),t.attachments.length>0&&W(`section`,{class:`detail-section`,"aria-labelledby":`detail-attachments`,children:[W(`h2`,{id:`detail-attachments`,children:`Attachments`}),W(ts,{attachments:t.attachments,playwrightVersion:a},`${e.id}/${e.repeatEachIndex}/${t.index}`)]}),c.length>0&&W(`section`,{class:`detail-section`,"aria-labelledby":`detail-annotations`,children:[W(`h2`,{id:`detail-annotations`,children:`Annotations of this attempt`}),W(`ul`,{class:`chips`,children:c.map((e,t)=>W(`li`,{class:`tag`,children:ms(e)},t))})]}),(t.stdout.text!==``||t.stderr.text!==``||t.stdout.truncated||t.stderr.truncated)&&W(`section`,{class:`detail-section`,"aria-labelledby":`detail-output`,children:[W(`h2`,{id:`detail-output`,children:`Output`}),W(Go,{name:`stdout`,output:t.stdout}),W(Go,{name:`stderr`,output:t.stderr})]})]})}function vs({report:e,test:t,sequence:n,groups:r,settings:i}){let a=N(()=>ri(e.categories),[e]),o=br(B.value.search),s=t?is(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(ps(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 W(La,{message:`No test with this id in this report.`});let{primary:f}=tr(t),p=Oi(e.tests,t);return W(`div`,{class:`page test-page`,children:[W(ka,{label:`Tests in the current list`,position:l?.position??null,total:n.length,outside:`Not in the current list (${U(n.length,`test`)})`,previous:u(l?.previous),next:u(l?.next),previousLabel:`Previous`,nextLabel:`Next`,keys:[`k`,`j`]}),W(`header`,{class:`test-header`,children:[W(`h1`,{class:`test-title`,children:[t.suitePath.map((e,t)=>W(`span`,{class:`title-suite`,children:[e,W(`span`,{class:`title-separator`,children:` › `})]},t)),t.title,t.repeatEachIndex>0&&W(`span`,{class:`row-note`,children:[` repeat `,t.repeatEachIndex]})]}),W(`div`,{class:`test-summary`,children:[W(J,{outcome:t.outcome,labelled:!0}),W(`span`,{children:ea(t.project)}),W(`code`,{children:[t.file,`:`,t.line]}),W(`span`,{children:H(t.durationMs)}),f!==null&&W(G,{name:f,color:a.get(f)})]}),W(hs,{test:t}),W(`div`,{class:`test-actions`,children:[W(Ji,{label:`Rerun command`,help:ki,text:()=>Ti([t]),children:`Copy rerun command`}),p&&W(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&&W(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:()=>us(t,c,{includeStack:i.aiPrompt.includeStack}),children:`Copy AI prompt`})]})]}),c&&t.attempts.length>1&&W(gs,{test:t,selected:c,select:e=>Ar(xr({...o,attempt:e.index}))}),c&&W(`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:W(_s,{test:t,attempt:c,params:o,groups:r,colors:a,playwrightVersion:e.run.playwrightVersion})})]})}function ys(e){let t=Pn(e);return t===null?{status:`Status`,project:`Project`,tag:`Tag`,category:`Error category`}[e]:t}function bs(e,t){return e===`status`?q(t):e===`project`?t||`(unnamed project)`:t}function xs({facet:e,value:t,colors:n}){return e===`status`?W(J,{outcome:t,labelled:!0}):e===`category`?W(G,{name:t,color:n.get(t)}):W(`span`,{class:`facet-value`,children:bs(e,t)})}function Ss({state:e,facet:t,values:n,counts:r,colors:i}){let a=M(null),o=e.facets[t]??[],s=ys(t);return A(()=>{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)},[]),W(`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:[W(`summary`,{class:`facet-button`,children:[W(`span`,{children:s}),o.length>0&&W(`span`,{class:`facet-selected`,children:[o.length,W(`span`,{class:`visually-hidden`,children:` selected`})]}),W(Y,{class:`chevron`})]}),W(`fieldset`,{class:`facet-menu`,children:[W(`legend`,{class:`visually-hidden`,children:s}),[...n].map(n=>{let a=r?.get(n)??0,s=o.includes(n);return W(`label`,{class:`facet-option${a===0&&!s?` facet-option-empty`:``}`,children:[W(`input`,{type:`checkbox`,checked:s,onChange:r=>kr(Wn(e,t,n,r.currentTarget.checked))}),W(xs,{facet:t,value:n,colors:i}),W(`span`,{class:`facet-count`,children:[a,W(`span`,{class:`visually-hidden`,children:[` `,a===1?`test`:`tests`]})]})]},n)})]})]})}function Cs({state:e,domain:t,counts:n,colors:r}){return W(`div`,{class:`facets`,role:`group`,"aria-label":`Filters`,children:[...t].filter(([e,t])=>e!==`project`||t.size>1).map(([t,i])=>W(Ss,{state:e,facet:t,values:i,counts:n.get(t),colors:r},t))})}function ws(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:`${ys(e)}: ${bs(e,r)}`,remove:t=>Wn(t,e,r,!1)});return n}function Ts({state:e,domain:t}){let n=ws(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:W(`div`,{class:`filter-chips`,ref:r,children:[W(`ul`,{"aria-label":`Active filters`,children:n.map((t,n)=>W(`li`,{children:W(`button`,{type:`button`,class:`chip`,"aria-label":`Remove filter ${t.label}`,onClick:()=>{i.current=n,kr(t.remove(e))},children:[W(`span`,{children:t.label}),W(Hi,{})]})},t.key))}),W(`button`,{type:`button`,class:`text-button`,onClick:()=>{i.current=0,kr(Gn(e))},children:`Clear all`})]})}var Es=new Intl.NumberFormat(`en-US`);function $(e){return Es.format(e)}function Ds(e,t){return Math.min(e,Math.max(t,0))}function Os(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)}`}function ks(e,t,n){let r=[];for(let{name:n}of t)for(let t of new Set(e.dimensions[n]??[]))r.push({facet:Nn(n),value:t,label:t,name:`${n}: ${t}`});let i=[...new Set(Jn(e.tags,n))].sort((e,t)=>e.localeCompare(t));for(let e of i)r.push({facet:`tag`,value:e,label:e,name:`Tag: ${e}`});return r}var As=new WeakMap;function js(e){let t=As.get(e);if(!t){let n=qn(e);t=new Map(e.tests.map(t=>[t.id,ks(t,e.dimensions,n)])),As.set(e,t)}return t}function Ms(e,t,n=4){if(e.length<=n)return{shown:[...e],hidden:0};let r=n-e.filter(t).length,i=e.filter(e=>t(e)?!0:(--r,r>=0));return{shown:i,hidden:e.length-i.length}}function Ns(e,t){return e.facets[t.facet]?.includes(t.value)??!1}function Ps(e,t){return Wn(e,t.facet,t.value,!Ns(e,t))}var Fs=[{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 Is({report:e,state:t,sorted:n}){let r=N(()=>ri(e.categories),[e]),i=js(e),a=N(()=>or(e.tests,t,Cr.value,wr.value),[e,Hn({...t,sort:On})]),o=e.tests.length,s=Hn(t),c=M({viewKey:s,limit:500});c.current.viewKey!==s&&(c.current={viewKey:s,limit:500});let[,l]=k(0),u=Ds(n.length,c.current.limit),d=N(()=>n.slice(0,u),[n,u]),f=Os(u,n.length,o),p=M(null),m=M(null);j(()=>{m.current!==null&&(p.current?.rows[m.current]?.querySelector(`a`)?.focus(),m.current=null)});let h=e=>{m.current=u,c.current={viewKey:s,limit:e},l(e=>e+1)};return W(`div`,{class:`page view view-tests`,children:[W(`h1`,{children:`Tests`}),o>0&&W(`div`,{class:`filter-bar`,children:[W(Cs,{state:t,domain:Cr.value,counts:a,colors:r}),W(Ts,{state:t,domain:Cr.value})]}),W(`p`,{class:`result-count`,"aria-live":`polite`,"aria-atomic":`true`,children:f}),W(ra,{tests:n}),o===0?W(`p`,{class:`muted`,children:`No tests in this run.`}):n.length===0?W(`div`,{class:`empty-state`,children:[W(`p`,{children:`No tests match these filters.`}),W(`button`,{type:`button`,class:`button`,onClick:()=>kr(Gn(t)),children:`Reset filters`})]}):W(`div`,{class:`table-scroll`,children:W(`table`,{class:`tests-table`,children:[W(`thead`,{children:W(`tr`,{children:Fs.map(({column:e,label:n,numeric:r})=>{let i=t.sort.column===e;return W(`th`,{scope:`col`,class:r?`numeric`:void 0,"aria-sort":i?t.sort.direction===`asc`?`ascending`:`descending`:void 0,children:W(`button`,{type:`button`,class:`sort-button`,onClick:()=>kr({...t,sort:fr(t.sort,e)}),children:[n,W(Ui,{direction:i?t.sort.direction:null,class:i?`sort-active`:`sort-idle`})]})},e)})})}),W(`tbody`,{ref:p,children:d.map(e=>W(Vs,{test:e,chips:i.get(e.id)??zs,state:t,colors:r},`${e.id}/${e.repeatEachIndex}`))})]})}),u<n.length&&W(`div`,{class:`table-more`,children:[W(`p`,{children:f}),W(`button`,{type:`button`,class:`button`,onClick:()=>h(u+500),children:[`Show `,Math.min(500,n.length-u),` more`]}),W(`button`,{type:`button`,class:`button`,onClick:()=>h(n.length),children:`Show all`})]})]})}function Ls({path:e}){let t=e.split(`/`);return W(S,{children:t.map((e,n)=>W(S,{children:[e,n<t.length-1&&W(S,{children:[`/`,W(`wbr`,{})]})]},n))})}function Rs({test:e,colors:t}){let{primary:n,others:r}=tr(e);return n===null?null:W(`span`,{class:`category-badges`,children:[W(G,{name:n,color:t.get(n)}),r.length>0&&W(`span`,{class:`category-more`,title:`Other ${r.length===1?`category`:`categories`} in failing attempts: ${r.join(`, `)}`,children:[W(`span`,{"aria-hidden":`true`,children:[`+`,r.length]}),W(`span`,{class:`visually-hidden`,children:[`, and `,U(r.length,`other category`,`other categories`),`: `,r.join(`, `)]})]})]})}var zs=[];function Bs({chips:e,state:t}){let[n,r]=k(!1);if(e.length===0)return null;let i=e=>Ns(t,e),a=Ms(e,i);return W(`div`,{class:`test-chips`,role:`group`,"aria-label":`Tags and dimensions`,children:[(n?e:a.shown).map(e=>{let n=i(e),r=n?`Remove filter ${e.name}`:e.name;return W(`a`,{class:`test-chip${n?` test-chip-active`:``}`,href:Or(Ps(t,e),{page:`tests`}),title:r,"aria-label":r,children:[e.label,n&&W(Hi,{})]},`${e.facet}\u0000${e.value}`)}),a.hidden>0&&W(`button`,{type:`button`,class:`test-chip-more`,"aria-expanded":n,onClick:()=>r(!n),children:[n?`Show less`:`+${a.hidden}`,!n&&W(`span`,{class:`visually-hidden`,children:` more tags and dimensions`})]})]})}var Vs=class extends te{shouldComponentUpdate(e){let{test:t,chips:n,state:r,colors:i}=this.props;return e.test!==t||e.chips!==n||e.state!==r||e.colors!==i}render(){return W(Hs,{...this.props})}};function Hs({test:e,chips:t,state:n,colors:r}){return W(`tr`,{children:[W(`td`,{children:W(J,{outcome:e.outcome,labelled:!0})}),W(`td`,{class:`cell-title`,children:[W(`a`,{href:Zi(e),children:ur(e)}),e.repeatEachIndex>0&&W(`span`,{class:`row-note`,children:[` repeat `,e.repeatEachIndex]}),W(Bs,{chips:t,state:n})]}),W(`td`,{class:`cell-project`,children:ea(e.project)}),W(`td`,{children:W(`code`,{children:W(Ls,{path:`${e.file}:${e.line}`})})}),W(`td`,{class:`numeric`,children:H(e.durationMs)}),W(`td`,{children:W(Rs,{test:e,colors:r})}),W(`td`,{class:`numeric`,children:e.attempts.length})]})}function Us({version:e}){return W(`footer`,{class:`footer`,children:[`Loupe — a reporter for Playwright `,W(`span`,{class:`muted`,children:[`· v`,e]})]})}function Ws(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 Gs=[`system`,`light`,`dark`],Ks=`loupe.theme`,qs=L(`system`);function Js(e){return typeof e==`string`&&Gs.includes(e)}function Ys(e){let t=Tt(Ks);qs.value=Js(t)?t:Js(e)?e:`system`,st(()=>{let e=document.documentElement;qs.value===`system`?delete e.dataset.theme:e.dataset.theme=qs.value})}function Xs(e){qs.value=e,Et(Ks,e)}var Zs={passed:`Passed`,failed:`Failed`,timedout:`Timed out`,interrupted:`Interrupted`},Qs={system:`System theme`,light:`Light theme`,dark:`Dark theme`},$s={system:Ni,light:Pi,dark:Fi};function ec(){return W(`div`,{class:`theme-switch`,role:`group`,"aria-label":`Theme`,children:Gs.map(e=>{let t=$s[e];return W(`button`,{type:`button`,class:`icon-button`,"aria-pressed":qs.value===e,title:Qs[e],onClick:()=>Xs(e),children:[W(t,{}),W(`span`,{class:`visually-hidden`,children:Qs[e]})]},e)})})}function tc(){let[e,t]=k(!1);return Ia({"?":()=>t(!0)}),W(S,{children:[W(`button`,{type:`button`,class:`icon-button`,title:`Keyboard shortcuts (?)`,"aria-keyshortcuts":`?`,onClick:()=>t(!0),children:[W(Ki,{}),W(`span`,{class:`visually-hidden`,children:`Keyboard shortcuts`})]}),W(_o,{open:e,onClose:()=>t(!1)})]})}function nc({startedAt:e,durationMs:t}){let n=N(()=>Ws(e),[e]),[r,i]=k(!1);return W(`div`,{class:`run-time`,onPointerLeave:()=>i(!1),children:[W(`dt`,{class:`visually-hidden`,children:`Run`}),W(`dd`,{children:[n&&W(S,{children:[W(`time`,{dateTime:n.utc,tabIndex:0,"aria-describedby":`run-time-details`,onKeyDown:e=>e.key===`Escape`&&i(!0),onBlur:()=>i(!1),children:n.label}),` · `]}),H(t)]}),n&&W(`span`,{id:`run-time-details`,role:`tooltip`,class:`run-time-details${r?` dismissed`:``}`,children:[W(`span`,{children:n.full}),W(`span`,{children:[`Time zone: `,n.timeZone]}),W(`span`,{children:[`UTC: `,n.utc]})]})]})}function rc({outcome:e,count:t}){let n=q(e).toLowerCase(),r=W(S,{children:[W(J,{outcome:e,decorative:!0}),W(`span`,{class:`count-value`,children:t}),W(`span`,{class:`visually-hidden`,children:[` `,n]})]});return t===0?W(`li`,{class:`count zero`,title:q(e),children:r}):W(`li`,{class:`count`,children:W(`a`,{class:`count-link`,href:Or({...An,facets:{status:[e]}},{page:`tests`}),title:`Show the ${t} ${n} ${t===1?`test`:`tests`}`,children:r})})}function ic({report:e,title:t}){let{run:n}=e;return W(S,{children:[W(`header`,{class:`header`,children:[W(`div`,{class:`header-main`,children:[W(`div`,{class:`header-identity`,children:[W(`div`,{class:`header-name`,children:[W(`button`,{type:`button`,class:`icon-button`,"aria-controls":`sidebar`,"aria-expanded":R.value,title:R.value?`Hide sidebar`:`Show sidebar`,onClick:At,children:[W(Mi,{}),W(`span`,{class:`visually-hidden`,children:R.value?`Hide sidebar`:`Show sidebar`})]}),W(`div`,{class:`brand`,children:[W(`span`,{class:`wordmark`,children:`Loupe`}),W(`a`,{class:`title`,href:V({page:`dashboard`}),title:t,children:t})]})]}),W(`span`,{class:`run-status run-${n.status}`,children:[W(J,{outcome:n.status===`passed`?`passed`:`failed`,decorative:!0}),Zs[n.status]??n.status]})]}),W(`ul`,{class:`counts`,"aria-label":`Test counts`,children:Yt.map(e=>W(rc,{outcome:e,count:n.stats[e]},e))}),W(`dl`,{class:`run-meta`,children:[W(nc,{startedAt:n.startedAt,durationMs:n.durationMs}),n.environment.name&&W(`div`,{children:[W(`dt`,{children:`Environment`}),W(`dd`,{children:n.environment.name})]})]})]}),W(`div`,{class:`header-tools`,children:[W(tc,{}),W(ec,{})]})]}),n.scope===`partial`&&W(`div`,{class:`banner banner-partial`,role:`note`,children:[W(Li,{}),W(`p`,{children:[W(`strong`,{children:`Partial run.`}),` Only part of the suite ran, so these results do not cover every test.`,n.scopeReasons.length>0&&W(S,{children:[` `,`Detected from: `,n.scopeReasons.map(Ha).join(`, `),`.`]})]})]})]})}function ac({roots:e,route:t,prefix:n,expandAll:r,emptyMessage:i}){let a=t.page===`test`?si(t.id,t.repeatEachIndex):null,[o,s]=k(()=>new Set(e.map(e=>e.key))),[c,l]=k(null),u=M(new Map),d=M(!1),f=M(!1),[p,m]=k(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!==``&&W(`p`,{class:`tree-prefix`,title:`Folder shared by every test file, left out of the tree`,children:[W(`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 W(`div`,{class:`tree-section`,children:[W(`div`,{class:`tree-toolbar`,children:[W(`h2`,{id:`tree-heading`,children:`Tests`}),W(`button`,{type:`button`,class:`text-button`,onClick:()=>s(new Set(yi(e))),children:`Expand all`}),W(`button`,{type:`button`,class:`text-button`,onClick:()=>s(new Set),children:`Collapse all`})]}),ee,e.length===0?W(`p`,{class:`tree-empty`,children:i}):W(`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`?W(`li`,{...n,class:`tree-row tree-test`,"aria-selected":t===a,children:W(oc,{node:e.node})},t):W(`li`,{...n,class:`tree-row tree-group tree-${e.node.kind}${t===p?` revealed`:``}`,"aria-expanded":o.has(t),children:W(cc,{node:e.node,onToggle:()=>x(t,!o.has(t))})},t)})})]})}function oc({node:e}){return W(`a`,{class:`row-content`,tabIndex:-1,href:V({page:`test`,id:e.testId,repeatEachIndex:e.repeatEachIndex}),children:[W(J,{outcome:e.outcome}),W(`span`,{class:`row-label`,children:e.title}),e.repeatEachIndex>0&&W(`span`,{class:`row-note`,children:[`repeat `,e.repeatEachIndex]})]})}function sc({name:e,path:t}){let[n,r]=Fr(e);return W(`span`,{class:`label-part file-name`,children:[W(`span`,{class:`name-head`,"aria-hidden":`true`,children:n}),r&&W(`span`,{class:`name-tail`,"aria-hidden":`true`,children:r}),W(`span`,{class:`visually-hidden`,children:t})]})}function cc({node:e,onToggle:t}){let{counts:n}=e,r=[U(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 W(`div`,{class:`row-content`,onClick:t,children:[W(Y,{class:`chevron`}),W(`span`,{class:`row-label`,title:o,children:[e.kind===`file`?W(sc,{name:i,path:e.path??i}):W(`span`,{class:`label-part`,children:i}),a.map((e,t)=>W(`span`,{class:`label-part`,children:e},t))]}),W(`span`,{class:`row-counts`,title:r,children:[W(`span`,{class:`visually-hidden`,children:r}),n.failed>0&&W(`span`,{class:`badge badge-failed`,"aria-hidden":`true`,children:n.failed}),W(`span`,{class:`row-total`,"aria-hidden":`true`,children:n.total})]})]})}var lc=200,uc=300;function dc({page:e,route:t,children:n,class:r}){return W(`li`,{children:W(`a`,{class:`nav-link ${r??``}`,href:V({page:e}),"aria-current":t.page===e?`page`:void 0,children:n})})}function fc(){let e=Dr.value.q,[t,n]=k(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 W(`div`,{class:`search-field`,children:[W(`label`,{for:`sidebar-search`,class:`visually-hidden`,children:`Search tests`}),W(Vi,{}),W(`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),lc)},onKeyDown:e=>{e.key===`Escape`&&t!==``&&(e.preventDefault(),clearTimeout(i.current),n(``),a(``))}}),W(`kbd`,{class:`search-key`,"aria-hidden":`true`,children:`/`})]})}function pc({matched:e,route:t}){let n=Dr.value,r=Un(n);return W(`div`,{class:`filter-indicator`,"aria-live":t.page===`tests`?`off`:`polite`,children:r>0&&W(`p`,{children:[W(`span`,{children:U(r,`filter`)}),` · `,W(`a`,{href:V({page:`tests`}),children:U(e,`test`)}),W(`button`,{type:`button`,class:`text-button`,onClick:()=>kr(Gn(n)),children:`Clear`})]})})}function mc({report:e,tree:t,prefix:n,matched:r,route:i,open:a}){let o=e.run.errors.length,s=Un(Dr.value)>0;return W(`nav`,{id:`sidebar`,class:`sidebar`,"aria-label":`Report`,hidden:!a,children:[W(`div`,{class:`sidebar-search`,role:`search`,children:[W(fc,{}),W(pc,{matched:r,route:i})]}),W(`ul`,{class:`nav-fixed`,children:[W(dc,{page:`dashboard`,route:i,children:[W(Ii,{}),W(`span`,{children:`Overview`})]}),W(dc,{page:`errors`,route:i,class:o>0?`nav-has-run-errors`:void 0,children:[W(Ri,{}),W(`span`,{children:`Errors`}),o>0&&W(`span`,{class:`nav-marker`,title:U(o,`run error`),children:[W(Li,{}),W(`span`,{class:`badge badge-failed`,children:o}),W(`span`,{class:`visually-hidden`,children:[`, `,U(o,`run error`)]})]})]}),W(dc,{page:`health`,route:i,children:[W(zi,{}),W(`span`,{children:`Suite health`})]}),W(dc,{page:`tests`,route:i,children:[W(Bi,{}),W(`span`,{children:`Tests`})]})]}),W(ac,{roots:t,route:i,prefix:n,expandAll:s&&r<=uc,emptyMessage:e.tests.length===0?`No tests in this run.`:`No tests match the filters.`})]})}function hc({report:e,settings:t}){let n=Dr.value,r=N(()=>ar(e.tests,n,wr.value),[e,Hn({...n,sort:On})]),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(()=>Zt(e),[e]),u=N(()=>Qt(l),[l]),d=N(()=>new Map(l.map(e=>[e.signature,e])),[l]),{route:f}=B.value,p=M(null);A(()=>{(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=W(Za,{report:e,groups:l,matched:c});break;case`errors`:m=W(Oa,{report:e,groups:l,category:f.category});break;case`health`:m=W(Ba,{report:e});break;case`tests`:m=W(Is,{report:e,state:n,sorted:c});break;case`test`:m=W(vs,{report:e,test:o.get(si(f.id,f.repeatEachIndex)),sequence:c,groups:d,settings:t});break;case`group`:m=W(za,{report:e,groups:u,group:d.get(f.signature)});break;case`not-found`:m=W(La,{})}return W(`div`,{class:`app ${R.value?`sidebar-open`:`sidebar-closed`}`,children:[W(ic,{report:e,title:t.title}),W(`div`,{class:`layout`,children:[W(mc,{report:e,tree:a,prefix:i,matched:r.length,route:f,open:R.value}),W(`main`,{class:`main`,ref:p,tabIndex:-1,children:[m,W(Us,{version:e.generator.version})]})]}),W(go,{}),W(`p`,{class:`visually-hidden`,role:`status`,"aria-live":`polite`,children:[bt.value.text,bt.value.seq%2==1?`\xA0`:``]})]})}var gc={title:`Loupe report`,theme:`system`,screenshots:{defaultView:`side-by-side`},aiPrompt:{includeStack:!0}};function _c(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function vc(e){let t;try{t=JSON.parse(e??``)}catch{return{ok:!1,message:`The report data is missing or is not valid JSON.`}}return _c(t)?t.schemaVersion===1?!_c(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 yc(e){try{let t=JSON.parse(e??``);return _c(t)?{...gc,...t,screenshots:{...gc.screenshots,..._c(t.screenshots)?t.screenshots:{}},aiPrompt:{...gc.aiPrompt,..._c(t.aiPrompt)?t.aiPrompt:{}}}:gc}catch{return gc}}var bc=yc(document.getElementById(`loupe-settings`)?.textContent);document.title=bc.title,Ys(bc.theme);var xc=vc(document.getElementById(`loupe-data`)?.textContent),Sc=document.getElementById(`app`)??document.body;xc.ok&&Tr(xc.report),ve(xc.ok?W(hc,{report:xc.report,settings:bc}):W(`div`,{class:`load-error`,role:`alert`,children:[W(`h1`,{children:`Loupe could not open this report`}),W(`p`,{children:xc.message})]}),Sc);</script>
16
+ <style>@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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)format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(data:font/woff2;base64,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)format("woff2")}:root{--bg:#f7f5f0;--bg-card:#fff;--bg-muted:#eeeae2;--fg:#111;--fg-secondary:#666;--border:#e8e4dc;--border-control:#8a857c;--status-passed:#3e6e51;--status-failed:#b3261e;--status-flaky:#6b4a05;--status-flaky-bg:#fbf0d9;--status-skipped:#666;--diff-expected:#1f6b3a;--diff-received:#b3261e;--chip-bg:#f2efe9;--chip-fg:#4a4741;--chip-border:#d6d1c7;--chip-active-bg:#3d3a35;--chip-active-fg:#fff;--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;--chip-bg:#1a1a1a;--chip-fg:#c4c0ba;--chip-border:#333;--chip-active-bg:#d9d5cf;--chip-active-fg:#0d0d0d;--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;--chip-bg:#1a1a1a;--chip-fg:#c4c0ba;--chip-border:#333;--chip-active-bg:#d9d5cf;--chip-active-fg:#0d0d0d;--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);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px 16px;padding:8px 16px;display:grid}.header-main{flex-wrap:wrap;align-items:center;gap:8px 20px;min-width:0;min-height:30px;display:flex}.header-identity{align-items:center;gap:8px 12px;min-width:0;display:flex}.header-name{align-items:center;gap:8px;min-width:0;display:flex}.header-identity .run-status{flex:none}@media (width<=440px){.header-identity{flex-wrap:wrap}}.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{flex-wrap:wrap;gap:4px 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{white-space:normal;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;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}.run-details{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px 32px;font-size:13px;display:grid}.run-details-group h3{color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px;font-size:12px;font-weight:600}.run-details dl{flex-direction:column;gap:6px;margin:0;display:flex}.run-details dl>div{grid-template-columns:84px minmax(0,1fr);align-items:baseline;gap:12px;display:grid}.run-details dt{color:var(--fg-secondary)}.run-details dd{overflow-wrap:anywhere;flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-width:0;margin:0;display:flex}.run-details .copy-button{min-height:0;padding:1px 6px;font-size:12px;line-height:16px}.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}.test-chips{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.test-chip{border:1px solid var(--chip-border);background:var(--chip-bg);max-width:100%;color:var(--chip-fg);overflow-wrap:anywhere;border-radius:4px;align-items:center;gap:2px;padding:0 6px;font-size:12px;line-height:18px;text-decoration:none;display:inline-flex}.test-chip:hover{border-color:var(--border-control);color:var(--fg)}.test-chip-active,.test-chip-active:hover{border-color:var(--chip-active-bg);background:var(--chip-active-bg);color:var(--chip-active-fg)}.test-chip .icon{flex:none;width:12px;height:12px}.test-chip-more{color:var(--fg-secondary);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:0 6px;font-size:12px;line-height:18px}.test-chip-more:hover{border-color:var(--chip-border);color:var(--fg)}.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}.thumbs{flex-wrap:wrap;gap:12px;margin:0;padding:0;list-style:none;display:flex}.thumb{border:1px solid var(--border);background:var(--bg-card);width:184px;color:var(--fg);font:inherit;cursor:zoom-in;border-radius:8px;flex-direction:column;gap:4px;padding:6px;font-size:12px;display:flex}.thumb:hover{border-color:var(--border-control)}.thumb img{object-fit:contain;background:var(--bg-muted);border-radius:4px;width:100%;height:120px;display:block}.thumb-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.media-missing{border:1px dashed var(--border-control);min-height:120px;color:var(--fg-secondary);text-align:center;overflow-wrap:anywhere;border-radius:4px;flex-direction:column;justify-content:center;gap:2px;padding:8px;font-size:12px;display:flex}.media-missing strong{color:var(--fg)}.open-original{white-space:nowrap;font-size:12px}.video{margin:0 0 12px}.video video{background:#000;border-radius:6px;width:100%;max-width:960px;display:block}.video figcaption{flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-top:4px;display:flex}.dialog-actions{flex:none;align-items:center;gap:8px;display:flex}.dialog-head h2{overflow-wrap:anywhere;min-width:0}.dialog.lightbox{--stage-h:calc(100vh - 150px);width:calc(100vw - 32px);max-width:none;height:calc(100vh - 32px);max-height:none;padding:12px 16px}.lightbox[open]{flex-direction:column;display:flex}.lightbox .dialog-head{margin-bottom:8px}.lightbox-stage{flex:1;min-height:0;display:flex;overflow:auto}.lightbox-stage>*{margin:auto}.lightbox-image{max-width:100%;max-height:var(--stage-h);cursor:zoom-in;display:block}.actual-size .lightbox-image{cursor:zoom-out;max-width:none;max-height:none}.lightbox-bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 12px;padding-top:8px;display:flex}.lightbox-position{min-width:64px;color:var(--fg-secondary);text-align:center;font-variant-numeric:tabular-nums}.comparison-card{border:1px solid var(--border);border-radius:8px;margin-bottom:12px;padding:12px}.comparison-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.comparison-head h4{font-size:13px;font-family:var(--font-mono);overflow-wrap:anywhere;margin:0;font-weight:400}.comparison{flex-direction:column;align-items:flex-start;gap:8px;min-width:0;display:flex}.lightbox-stage>.comparison{align-items:center;width:100%}.actual-size .lightbox-stage>.comparison{width:max-content}.cmp-modes{flex-wrap:wrap;gap:6px;display:flex}.cmp-image,.cmp-side img{max-width:100%;max-height:var(--stage-h,70vh);background:var(--bg-muted);cursor:zoom-in;display:block}.cmp-side{align-items:flex-start;gap:12px;max-width:100%;display:flex}.cmp-side figure{flex:0 auto;min-width:0;margin:0}.cmp-scaled{width:min(calc(var(--w) * 1px + 12px), 100%, calc(var(--stage-h,70vh) * var(--w) / var(--h) + 12px))}.cmp-scaled figure{flex-shrink:1;flex-basis:0}.cmp-side.cmp-scaled img{width:100%;max-height:none}.cmp-side figcaption,.cmp-opacity,.cmp-sizes,.cmp-hint{color:var(--fg-secondary);font-size:12px}.cmp-stack{width:min(calc(var(--w) * 1px), 100%, calc(var(--stage-h,70vh) * var(--w) / var(--h)));aspect-ratio:var(--w) / var(--h);background:var(--bg-muted);position:relative;overflow:hidden}.cmp-layer{max-width:none;height:auto;display:block;position:absolute;top:0;left:0}.cmp-top{position:absolute;inset:0}.cmp-range{opacity:0;cursor:ew-resize;width:100%;height:100%;margin:0;position:absolute;inset:0}.cmp-divider{background:var(--fg);width:2px;box-shadow:0 0 0 1px var(--bg-card);pointer-events:none;margin-left:-1px;position:absolute;top:0;bottom:0}.cmp-range:focus-visible+.cmp-divider{outline:2px solid var(--fg);outline-offset:2px}.cmp-opacity{align-items:center;gap:8px;display:flex}.cmp-opacity output{font-variant-numeric:tabular-nums;min-width:40px}.cmp-sizes{flex-wrap:wrap;gap:4px 14px;margin:0;display:flex}.cmp-hint{margin:0}.cmp-differ{color:var(--status-failed);font-weight:600}.trace-card{flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:12px;display:flex}.trace-actions{flex-wrap:wrap;gap:8px;display:flex}.trace-download{align-items:center;text-decoration:none;display:inline-flex}.trace-help{color:var(--fg-secondary);margin:0;font-size:12px}.cmp-loading{background:var(--bg-muted);border-radius:4px;width:100%;height:120px}.actual-size .cmp-image,.actual-size .cmp-side img{cursor:zoom-out;max-width:none;max-height:none}.actual-size .cmp-side{max-width:none}.actual-size .cmp-scaled{width:calc(var(--w) * 1px + 12px)}.actual-size .cmp-stack{width:calc(var(--w) * 1px)}.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}.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}}
16
17
  /*$vite$:1*/</style>
17
18
  </head>
18
19
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qartisan/playwright-loupe",
3
- "version": "0.0.6",
3
+ "version": "0.1.1",
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",
@@ -50,6 +50,7 @@
50
50
  "test": "vitest run",
51
51
  "fixtures": "npm run build && node scripts/run-fixtures.mjs",
52
52
  "sample:update": "npm run build && node scripts/update-sample.mjs",
53
+ "perf:sample": "npm run build && node scripts/perf-sample.mjs",
53
54
  "prepublishOnly": "npm run typecheck && npm run build && npm test"
54
55
  },
55
56
  "peerDependencies": {