@vitest/browser 4.1.4 → 5.0.0-beta.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.
@@ -26,8 +26,8 @@
26
26
  {__VITEST_INJECTOR__}
27
27
  {__VITEST_ERROR_CATCHER__}
28
28
  {__VITEST_SCRIPTS__}
29
- <script type="module" crossorigin src="/__vitest_browser__/orchestrator-DM4mHHP0.js"></script>
30
- <link rel="modulepreload" crossorigin href="/__vitest_browser__/utils-DmkAiRYk.js">
29
+ <script type="module" crossorigin src="/__vitest_browser__/orchestrator-pTEf6o0n.js"></script>
30
+ <link rel="modulepreload" crossorigin href="/__vitest_browser__/utils-BYUpz6v6.js">
31
31
  </head>
32
32
  <body>
33
33
  <div id="vitest-tester"></div>
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" href="{__VITEST_FAVICON__}" type="image/svg+xml">
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Vitest Browser Tester</title>
8
- <script type="module" crossorigin src="/__vitest_browser__/tester-DvOWMUmv.js"></script>
9
- <link rel="modulepreload" crossorigin href="/__vitest_browser__/utils-DmkAiRYk.js">
8
+ <script type="module" crossorigin src="/__vitest_browser__/tester-CIKiUsoz.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/__vitest_browser__/utils-BYUpz6v6.js">
10
10
  </head>
11
11
  <body>
12
12
  </body>
@@ -0,0 +1,53 @@
1
+ import type { Task } from "@vitest/runner";
2
+ export interface BrowserTraceData {
3
+ retry: number;
4
+ repeats: number;
5
+ recordCanvas: boolean;
6
+ entries: BrowserTraceEntry[];
7
+ }
8
+ export type BrowserTraceEntryKind = "action" | "expect" | "mark" | "lifecycle";
9
+ export type BrowserTraceEntryStatus = "pass" | "fail";
10
+ export type BrowserTraceSelectorResolution = "matched" | "missing" | "error";
11
+ export interface BrowserTraceEntry {
12
+ name: string;
13
+ kind: BrowserTraceEntryKind;
14
+ status?: BrowserTraceEntryStatus;
15
+ startTime: number;
16
+ duration?: number;
17
+ stack?: string;
18
+ location?: {
19
+ file: string;
20
+ line: number;
21
+ column: number;
22
+ };
23
+ selector?: string;
24
+ snapshot: TraceSnapshot;
25
+ }
26
+ interface TraceSnapshot {
27
+ serialized: unknown;
28
+ viewport: {
29
+ width: number;
30
+ height: number;
31
+ };
32
+ scroll: {
33
+ x: number;
34
+ y: number;
35
+ };
36
+ selectorId?: number;
37
+ selectorResolution?: BrowserTraceSelectorResolution;
38
+ selectorError?: string;
39
+ pseudoClassIds: Record<PseudoClassName, number[]>;
40
+ }
41
+ declare const PSEUDO_CLASS_NAMES: readonly [":hover", ":active", ":focus", ":focus-visible", ":focus-within"];
42
+ type PseudoClassName = (typeof PSEUDO_CLASS_NAMES)[number];
43
+ export type BrowserTraceState = Record<string, BrowserTraceData>;
44
+ export interface BrowserTraceAttempt {
45
+ retry: number;
46
+ repeats: number;
47
+ startTime: number;
48
+ }
49
+ export declare function recordBrowserTraceEntry(task: Task, options: Omit<BrowserTraceEntry, "snapshot" | "startTime"> & {
50
+ startTime?: number;
51
+ }): void;
52
+ export declare function getBrowserTrace(testId: string, repeats: number, retry: number): BrowserTraceData | undefined;
53
+ export {};
package/dist/client.js CHANGED
@@ -317,6 +317,7 @@ const stringify = (value, replacer, space) => {
317
317
  }
318
318
  };
319
319
 
320
+ globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
320
321
  /* @__NO_SIDE_EFFECTS__ */
321
322
  function getBrowserState() {
322
323
  // @ts-expect-error not typed global
package/dist/context.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { vi } from 'vitest';
2
2
  import { __INTERNAL, stringify } from 'vitest/internal/browser';
3
3
 
4
+ const now = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
4
5
  function ensureAwaited(promise) {
5
6
  const test = getWorkerState().current;
6
7
  if (!test || test.type !== "test") {
@@ -49,6 +50,115 @@ function getWorkerState() {
49
50
  return state;
50
51
  }
51
52
 
53
+ // rrweb-snapshot rewrites pseudo-class selectors in serialized styles so replay can
54
+ // reproduce snapshot-time states. For example:
55
+ // some-selector:hover { ... }
56
+ // becomes:
57
+ // some-selector:hover, some-selector.\:hover { ... }
58
+ // Vitest side integration then adds matching pseudo-state classes in the replay DOM.
59
+ // rrweb-snapshot only handles `:hover` upstream, so we patch it locally for the
60
+ // other user-action pseudo-classes as well.
61
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/Pseudo-classes#user_action_pseudo-classes
62
+ const PSEUDO_CLASS_NAMES = [
63
+ ":hover",
64
+ ":active",
65
+ ":focus",
66
+ ":focus-visible",
67
+ ":focus-within"
68
+ ];
69
+ function getBrowserTraceState() {
70
+ return getBrowserState().browserTraceState ??= {};
71
+ }
72
+ function getTraceStateKey(testId, repeats, retry) {
73
+ return `${testId}:${repeats}:${retry}`;
74
+ }
75
+ // TODO: should we avoid accumulating? send and immediately clear each entry to save memory?
76
+ function recordBrowserTraceEntry(task, options) {
77
+ // TODO: trace-view currently receives selectors after locator/action resolution,
78
+ // so provider-specific lowered selectors can leak into snapshot lookup. Preserve
79
+ // the original locator selector, or record the target node id before lowering.
80
+ // for example, this causes shadow dom selectors to fail with `>>>` marker.
81
+ // For now, remove trivial `html >` prefix generated by convertElementToCssSelector.
82
+ // this is also necessary to `engine.querySelector + document.documentElement`
83
+ // to find an element on webdriverio
84
+ if (options.selector?.startsWith("html >")) {
85
+ options.selector = options.selector.slice(6);
86
+ }
87
+ const attemptInfo = getBrowserState().browserTraceAttempts.get(task.id);
88
+ const relativeStartTime = (options.startTime ?? now()) - attemptInfo.startTime;
89
+ const snapshot = takeSnapshot(options.selector);
90
+ const entry = {
91
+ ...options,
92
+ startTime: relativeStartTime,
93
+ snapshot
94
+ };
95
+ const { retry, repeats } = attemptInfo;
96
+ const { recordCanvas } = getBrowserState().config.browser.traceView;
97
+ const state = getBrowserTraceState();
98
+ const traceKey = getTraceStateKey(task.id, repeats, retry);
99
+ state[traceKey] ??= {
100
+ retry,
101
+ repeats,
102
+ recordCanvas,
103
+ entries: []
104
+ };
105
+ state[traceKey].entries.push(entry);
106
+ }
107
+ // Resolve ivya selector to a DOM element and take a snapshot with rrweb Mirror
108
+ // so we can store the nodeId for provider-agnostic element highlighting in the viewer.
109
+ // Note: Playwright's alternative approach is to store the raw selector and run the
110
+ // selector engine inside the snapshot iframe at view time via injected script.
111
+ // Our approach resolves at collection time (same moment as snapshot) — simpler but
112
+ // requires Mirror plumbing. nodeId-based lookup also works across shadow DOM, unlike querySelector.
113
+ function takeSnapshot(selector) {
114
+ const { snapshot, createMirror } = getBrowserState().browserTraceDomSnapshot;
115
+ const traceView = getBrowserState().config.browser.traceView;
116
+ const engine = getBrowserState().selectorEngine;
117
+ const mirror = createMirror();
118
+ const serialized = snapshot(document, {
119
+ mirror,
120
+ inlineImages: traceView.inlineImages,
121
+ recordCanvas: traceView.recordCanvas
122
+ });
123
+ const result = {
124
+ serialized,
125
+ viewport: {
126
+ width: window.innerWidth,
127
+ height: window.innerHeight
128
+ },
129
+ scroll: {
130
+ x: window.scrollX,
131
+ y: window.scrollY
132
+ },
133
+ pseudoClassIds: {}
134
+ };
135
+ for (const className of PSEUDO_CLASS_NAMES) {
136
+ const elements = document.querySelectorAll(className);
137
+ const ids = Array.from(elements, (el) => mirror.getId(el)).filter((id) => id !== -1);
138
+ result.pseudoClassIds[className] = ids;
139
+ }
140
+ if (selector) {
141
+ try {
142
+ const el = engine.querySelector(engine.parseSelector(selector), document.documentElement, false);
143
+ if (!el) {
144
+ result.selectorResolution = "missing";
145
+ } else {
146
+ const id = mirror.getId(el);
147
+ if (id !== -1) {
148
+ result.selectorId = id;
149
+ result.selectorResolution = "matched";
150
+ } else {
151
+ result.selectorResolution = "missing";
152
+ }
153
+ }
154
+ } catch (error) {
155
+ result.selectorResolution = "error";
156
+ result.selectorError = error instanceof Error ? error.message : String(error);
157
+ }
158
+ }
159
+ return result;
160
+ }
161
+
52
162
  /* @__NO_SIDE_EFFECTS__ */
53
163
  function convertElementToCssSelector(element) {
54
164
  if (!element || !(element instanceof Element)) {
@@ -121,7 +231,6 @@ function getParent(el) {
121
231
  }
122
232
  return parent;
123
233
  }
124
- const now = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
125
234
  function processTimeoutOptions(options_) {
126
235
  if (options_ && options_.timeout != null) {
127
236
  return options_;
@@ -473,8 +582,11 @@ const page = {
473
582
  mark(name, bodyOrOptions, options) {
474
583
  const currentTest = getWorkerState().current;
475
584
  const hasActiveTrace = !!currentTest && getBrowserState().activeTraceTaskIds.has(currentTest.id);
585
+ const hasActiveTraceView = !!currentTest && getBrowserState().browserTraceAttempts.has(currentTest.id);
476
586
  if (typeof bodyOrOptions === "function") {
477
587
  return ensureAwaited(async (error) => {
588
+ let status = "pass";
589
+ const startTime = now();
478
590
  if (hasActiveTrace) {
479
591
  await triggerCommand("__vitest_groupTraceStart", [{
480
592
  name,
@@ -483,20 +595,46 @@ const page = {
483
595
  }
484
596
  try {
485
597
  return await bodyOrOptions();
598
+ } catch (err) {
599
+ status = "fail";
600
+ throw err;
486
601
  } finally {
602
+ if (hasActiveTraceView) {
603
+ // TODO: support nested trace
604
+ recordBrowserTraceEntry(currentTest, {
605
+ name,
606
+ kind: "mark",
607
+ status,
608
+ startTime,
609
+ duration: now() - startTime,
610
+ stack: options?.stack ?? error?.stack
611
+ });
612
+ }
487
613
  if (hasActiveTrace) {
488
614
  await triggerCommand("__vitest_groupTraceEnd", [], error);
489
615
  }
490
616
  }
491
617
  });
492
618
  }
493
- if (!hasActiveTrace) {
619
+ if (!hasActiveTrace && !hasActiveTraceView) {
494
620
  return Promise.resolve();
495
621
  }
496
- return ensureAwaited((error) => triggerCommand("__vitest_markTrace", [{
497
- name,
498
- stack: bodyOrOptions?.stack ?? error?.stack
499
- }], error));
622
+ return ensureAwaited((error) => {
623
+ if (hasActiveTraceView) {
624
+ recordBrowserTraceEntry(currentTest, {
625
+ name,
626
+ kind: "mark",
627
+ stack: bodyOrOptions?.stack ?? error?.stack
628
+ });
629
+ }
630
+ if (!hasActiveTrace) {
631
+ return Promise.resolve();
632
+ }
633
+ return triggerCommand("__vitest_markTrace", [{
634
+ name,
635
+ stack: bodyOrOptions?.stack ?? error?.stack
636
+ }], error);
637
+ });
500
638
  },
501
639
  getByRole() {
502
640
  throw new Error(`Method "getByRole" is not supported by the "${provider}" provider.`);
@@ -628,7 +766,10 @@ const utils = {
628
766
  prettyDOM,
629
767
  debug,
630
768
  getElementLocatorSelectors,
631
- configurePrettyDOM
769
+ configurePrettyDOM,
770
+ get aria() {
771
+ return getBrowserState().aria;
772
+ }
632
773
  };
633
774
 
634
775
  export { cdp, createUserEvent, locators, page, utils };
@@ -1,34 +1,34 @@
1
- import{Snapshots as e,recordArtifact as t,expect as n,chai as r}from"vitest";import{getType as i}from"vitest/internal/browser";import{b as a,e as o,i as s,g as c,n as l,a as u,k as d,c as f,d as ee,f as p,h as te,j as ne,l as re,m as ie,o as ae,p as oe,q as se,r as ce,s as le,t as m,_ as h,L as g,u as ue,v as de,w as fe,x as pe,y as me,z as _,A as he,B as ge}from"./index-D8jtZoIM.js";import{server as _e}from"vitest/browser";var ve=Object.defineProperty,ye=(e,t)=>{let n={};for(var r in e)ve(n,r,{get:e[r],enumerable:!0});return ve(n,Symbol.toStringTag,{value:`Module`}),n};function be(e,t,n={}){let r=xe(e,t,n);if(r.errors.length)throw Error(r.errors[0].message);return r.fragment}function xe(e,t,n={}){let r=new e.LineCounter,i={keepSourceTokens:!0,lineCounter:r,...n},a=e.parseDocument(t,i),o=[],s=e=>[r.linePos(e[0]),r.linePos(e[1])],c=e=>{o.push({message:e.message,range:[r.linePos(e.pos[0]),r.linePos(e.pos[1])]})},l=(t,n)=>{for(let r of n.items){if(r instanceof e.Scalar&&typeof r.value==`string`){let e=we.parse(r,i,o);e&&(t.children=t.children||[],t.children.push(e));continue}if(r instanceof e.YAMLMap){u(t,r);continue}o.push({message:`Sequence items should be strings or maps`,range:s(r.range||n.range)})}},u=(t,n)=>{for(let r of n.items){if(t.children=t.children||[],!(r.key instanceof e.Scalar&&typeof r.key.value==`string`)){o.push({message:`Only string keys are supported`,range:s(r.key.range||n.range)});continue}let a=r.key,c=r.value;if(a.value===`text`){if(!(c instanceof e.Scalar&&typeof c.value==`string`)){o.push({message:`Text value should be a string`,range:s(r.value.range||n.range)});continue}t.children.push({kind:`text`,text:v(c.value)});continue}if(a.value===`/children`){if(!(c instanceof e.Scalar&&typeof c.value==`string`)||c.value!==`contain`&&c.value!==`equal`&&c.value!==`deep-equal`){o.push({message:`Strict value should be "contain", "equal" or "deep-equal"`,range:s(r.value.range||n.range)});continue}t.containerMode=c.value;continue}if(a.value.startsWith(`/`)){if(!(c instanceof e.Scalar&&typeof c.value==`string`)){o.push({message:`Property value should be a string`,range:s(r.value.range||n.range)});continue}t.props=t.props??{},t.props[a.value.slice(1)]=v(c.value);continue}let u=we.parse(a,i,o);if(u){if(c instanceof e.Scalar){let e=typeof c.value;if(e!==`string`&&e!==`number`&&e!==`boolean`){o.push({message:`Node value should be a string or a sequence`,range:s(r.value.range||n.range)});continue}t.children.push({...u,children:[{kind:`text`,text:v(String(c.value))}]});continue}if(c instanceof e.YAMLSeq){t.children.push(u),l(u,c);continue}o.push({message:`Map values should be strings or sequences`,range:s(r.value.range||n.range)})}}},d={kind:`role`,role:`fragment`};return a.errors.forEach(c),o.length||(a.contents instanceof e.YAMLSeq||o.push({message:`Aria snapshot must be a YAML sequence, elements starting with " -"`,range:a.contents?s(a.contents.range):[{line:0,col:0},{line:0,col:0}]}),o.length)?{errors:o,fragment:d}:(l(d,a.contents),o.length?{errors:o,fragment:Se}:d.children?.length===1&&(!d.containerMode||d.containerMode===`contain`)?{fragment:d.children[0],errors:[]}:{fragment:d,errors:[]})}const Se={kind:`role`,role:`fragment`};function Ce(e){return e.replace(/[\u200b\u00ad]/g,``).replace(/[\r\n\s\t]+/g,` `).trim()}function v(e){return{raw:e,normalized:Ce(e)}}var we=class e{static parse(t,n,r){try{return new e(t.value)._parse()}catch(e){if(e instanceof y){let i=n.prettyErrors===!1?e.message:`${e.message}:\n\n${t.value}\n${` `.repeat(e.pos)}^\n`;return r.push({message:i,range:[n.lineCounter.linePos(t.range[0]),n.lineCounter.linePos(t.range[0]+e.pos)]}),null}throw e}}constructor(e){h(this,`_input`,void 0),h(this,`_pos`,void 0),h(this,`_length`,void 0),this._input=e,this._pos=0,this._length=e.length}_peek(){return this._input[this._pos]||``}_next(){return this._pos<this._length?this._input[this._pos++]:null}_eof(){return this._pos>=this._length}_isWhitespace(){return!this._eof()&&/\s/.test(this._peek())}_skipWhitespace(){for(;this._isWhitespace();)this._pos++}_readIdentifier(e){this._eof()&&this._throwError(`Unexpected end of input when expecting ${e}`);let t=this._pos;for(;!this._eof()&&/[a-zA-Z]/.test(this._peek());)this._pos++;return this._input.slice(t,this._pos)}_readString(){let e=``,t=!1;for(;!this._eof();){let n=this._next();if(t)e+=n,t=!1;else if(n===`\\`)t=!0;else if(n===`"`)return e;else e+=n}this._throwError(`Unterminated string`)}_throwError(e,t=0){throw new y(e,t||this._pos)}_readRegex(){let e=``,t=!1,n=!1;for(;!this._eof();){let r=this._next();if(t)e+=r,t=!1;else if(r===`\\`)t=!0,e+=r;else if(r===`/`&&!n)return{pattern:e};else r===`[`?(n=!0,e+=r):r===`]`&&n?(e+=r,n=!1):e+=r}this._throwError(`Unterminated regex`)}_readStringOrRegex(){let e=this._peek();return e===`"`?(this._next(),Ce(this._readString())):e===`/`?(this._next(),this._readRegex()):null}_readAttributes(e){let t=this._pos;for(;this._skipWhitespace(),this._peek()===`[`;){this._next(),this._skipWhitespace(),t=this._pos;let n=this._readIdentifier(`attribute`);this._skipWhitespace();let r=``;if(this._peek()===`=`)for(this._next(),this._skipWhitespace(),t=this._pos;this._peek()!==`]`&&!this._isWhitespace()&&!this._eof();)r+=this._next();this._skipWhitespace(),this._peek()!==`]`&&this._throwError(`Expected ]`),this._next(),this._applyAttribute(e,n,r||`true`,t)}}_parse(){this._skipWhitespace();let e=this._readIdentifier(`role`);this._skipWhitespace();let t={kind:`role`,role:e,name:this._readStringOrRegex()||void 0};return this._readAttributes(t),this._skipWhitespace(),this._eof()||this._throwError(`Unexpected input`),t}_applyAttribute(e,t,n,r){if(t===`checked`){this._assert(n===`true`||n===`false`||n===`mixed`,`Value of "checked" attribute must be a boolean or "mixed"`,r),e.checked=n===`true`?!0:n===`false`?!1:`mixed`;return}if(t===`disabled`){this._assert(n===`true`||n===`false`,`Value of "disabled" attribute must be a boolean`,r),e.disabled=n===`true`;return}if(t===`expanded`){this._assert(n===`true`||n===`false`,`Value of "expanded" attribute must be a boolean`,r),e.expanded=n===`true`;return}if(t===`active`){this._assert(n===`true`||n===`false`,`Value of "active" attribute must be a boolean`,r),e.active=n===`true`;return}if(t===`level`){this._assert(!Number.isNaN(Number(n)),`Value of "level" attribute must be a number`,r),e.level=Number(n);return}if(t===`pressed`){this._assert(n===`true`||n===`false`||n===`mixed`,`Value of "pressed" attribute must be a boolean or "mixed"`,r),e.pressed=n===`true`?!0:n===`false`?!1:`mixed`;return}if(t===`selected`){this._assert(n===`true`||n===`false`,`Value of "selected" attribute must be a boolean`,r),e.selected=n===`true`;return}this._assert(!1,`Unsupported attribute [${t}]`,r)}_assert(e,t,n){e||this._throwError(t||`Assertion error`,n)}},y=class extends Error{constructor(e,t){super(e),h(this,`pos`,void 0),this.pos=t}};function b(e,t){return t?e?typeof t==`string`?e===t:!!e.match(new RegExp(t.pattern)):!1:!0}function x(e,t){if(!t?.normalized)return!0;if(!e)return!1;if(e===t.normalized||e===t.raw)return!0;let n=C(t);return n?!!e.match(n):!1}const S=Symbol(`cachedRegex`);function C(e){if(e[S]!==void 0)return e[S];let{raw:t}=e,n=t.startsWith(`/`)&&t.endsWith(`/`)&&t.length>1,r;try{r=n?new RegExp(t.slice(1,-1)):null}catch{r=null}return e[S]=r,r}function w(e,t,n){if(typeof e==`string`&&t.kind===`text`)return x(e,t.text);if(typeof e!=`object`||!e||t.kind!==`role`||t.role!==`fragment`&&t.role!==e.role||t.checked!==void 0&&t.checked!==e.checked||t.disabled!==void 0&&t.disabled!==e.disabled||t.expanded!==void 0&&t.expanded!==e.expanded||t.level!==void 0&&t.level!==e.level||t.pressed!==void 0&&t.pressed!==e.pressed||t.selected!==void 0&&t.selected!==e.selected||!b(e.name,t.name))return!1;if(t.props){for(let[n,r]of Object.entries(t.props))if(!x(e.props[n]||``,r))return!1}return t.containerMode===`contain`?E(e.children||[],t.children||[]):t.containerMode===`equal`?T(e.children||[],t.children||[],!1):t.containerMode===`deep-equal`||n?T(e.children||[],t.children||[],!0):E(e.children||[],t.children||[])}function T(e,t,n){if(t.length!==e.length)return!1;for(let r=0;r<t.length;++r)if(!w(e[r],t[r],n))return!1;return!0}function E(e,t){if(t.length>e.length)return!1;let n=e.slice(),r=t.slice();for(let e of r){let t=n.shift();for(;t&&!w(t,e,!1);)t=n.shift();if(!t)return!1}return!0}var Te=ye({LineCounter:()=>Ee,Scalar:()=>D,YAMLError:()=>A,YAMLMap:()=>O,YAMLSeq:()=>k,parseDocument:()=>De}),D=class{constructor(e,t=[0,0,0]){h(this,`value`,void 0),h(this,`range`,void 0),this.value=e,this.range=t}},O=class{constructor(e=[0,0,0]){h(this,`items`,void 0),h(this,`range`,void 0),this.items=[],this.range=e}},k=class{constructor(e=[0,0,0]){h(this,`items`,void 0),h(this,`range`,void 0),this.items=[],this.range=e}},Ee=class{constructor(){h(this,`lineStarts`,[0])}addNewLine(e){e>this.lineStarts[this.lineStarts.length-1]&&this.lineStarts.push(e)}linePos(e){let t=0,n=this.lineStarts.length-1;for(;t<n;){let r=t+n+1>>1;this.lineStarts[r]<=e?t=r:n=r-1}return{line:t+1,col:e-this.lineStarts[t]+1}}},A=class extends Error{constructor(e,t){super(e),h(this,`pos`,void 0),this.pos=t}};function De(e,t={}){let n=t.lineCounter,r=[];if(n)for(let t=0;t<e.length;t++)e[t]===`
2
- `&&n.addNewLine(t+1);try{return{contents:new Oe(e,r).parseRoot(),errors:r}}catch(e){if(e instanceof A)return r.push(e),{contents:null,errors:r};throw e}}var Oe=class{constructor(e,t){h(this,`lines`,void 0),h(this,`pos`,void 0),h(this,`text`,void 0),h(this,`errors`,void 0),this.text=e,this.errors=t,this.lines=[],this.pos=0;let n=0,r=e.split(`
3
- `);for(let e of r){let t=e.replace(/\r$/,``),r=t.replace(/^\s+/,``),i=t.length-r.length;this.lines.push({indent:i,content:r,offset:n+i,lineOffset:n,raw:t}),n+=e.length+1}for(;this.lines.length>0&&this.lines[this.lines.length-1].content===``;)this.lines.pop()}parseRoot(){if(this.lines.length===0)return null;let e=this.parseNode(0);if(this.skipEmpty(),this.pos<this.lines.length){let e=this.currentLine();this.addError(`Unexpected scalar at node end`,e.offset)}return e}currentLine(){return this.lines[this.pos]}parseNode(e){this.skipEmpty();let t=this.currentLine();return!t||t.indent<e?null:t.content.startsWith(`- `)||t.content===`-`?this.parseSequence(t.indent):this.isMapEntry(t.content)?this.parseMap(t.indent):this.parseScalarValue(t.content,t.offset,t)}parseSequence(e){let t=this.currentLine(),n=new k([t.offset-t.indent,0,0]),r=t.offset;for(;this.pos<this.lines.length;){this.skipEmpty();let t=this.currentLine();if(!t||t.indent<e)break;if(t.indent>e){this.addError(`Bad indentation of a sequence entry`,t.offset);break}if(!t.content.startsWith(`- `)&&t.content!==`-`)break;let i=t.content===`-`?1:2,a=t.content.slice(i),o=t.offset+i;if(this.pos++,a===``||a.trim()===``){let t=this.parseNode(e+1);t&&(n.items.push(t),r=this.peekLastOffset())}else if(this.isMapEntry(a)){let s=this.parseInlineMap(a,o,e+i,t);n.items.push(s),r=s.range[2]}else{let e=this.parseScalarValue(a,o,t);n.items.push(e),r=e.range[2]}}return n.range[1]=r,n.range[2]=r,n}parseMap(e){let t=this.currentLine(),n=new O([t.offset-t.indent,0,0]),r=t.offset;for(;this.pos<this.lines.length;){this.skipEmpty();let t=this.currentLine();if(!t||t.indent<e)break;if(t.indent>e){this.addError(`Bad indentation of a mapping entry`,t.offset);break}if(!this.isMapEntry(t.content))break;let{key:i,valueStr:a,colonOffset:o,valueOffset:s}=this.splitMapEntry(t.content,t.offset),c=new D(i,[t.offset,t.offset+i.length,o]);this.pos++;let l;l=a===``?this.parseMapValue(e,o):this.parseScalarValue(a.trim(),s,t),n.items.push({key:c,value:l}),r=l?this.getNodeEnd(l):o+1}return n.range[1]=r,n.range[2]=r,n}parseInlineMap(e,t,n,r){let i=new O([t,0,0]),a=t,{key:o,valueStr:s,colonOffset:c,valueOffset:l}=this.splitMapEntry(e,t),u=new D(o,[t,t+o.length,c]),d;for(d=s===``?this.parseMapValue(n,c):this.parseScalarValue(s.trim(),l,r),i.items.push({key:u,value:d}),a=d?this.getNodeEnd(d):c+1;this.pos<this.lines.length;){this.skipEmpty();let e=this.currentLine();if(!e||e.indent<n||e.indent>n||!this.isMapEntry(e.content)||e.content.startsWith(`- `))break;let t=this.splitMapEntry(e.content,e.offset),r=new D(t.key,[e.offset,e.offset+t.key.length,t.colonOffset]);this.pos++;let o;o=t.valueStr===``?this.parseMapValue(n,t.colonOffset):this.parseScalarValue(t.valueStr.trim(),t.valueOffset,e),i.items.push({key:r,value:o}),a=o?this.getNodeEnd(o):t.colonOffset+1}return i.range[1]=a,i.range[2]=a,i}parseMapValue(e,t){this.skipEmpty();let n=this.currentLine();return!n||n.indent<e?new D(null,[t+1,t+1,t+1]):n.indent===e&&(n.content.startsWith(`- `)||n.content===`-`)?this.parseNode(e):n.indent>e?this.parseNode(e+1):new D(null,[t+1,t+1,t+1])}getNodeEnd(e){return e.range[2]}peekLastOffset(){if(this.pos>0&&this.pos<=this.lines.length){let e=this.lines[this.pos-1];return e.lineOffset+e.raw.length}return this.text.length}parseScalarValue(e,t,n){let r=e.trim(),i=t+e.indexOf(r),a=i+r.length,o=n.lineOffset+n.raw.length;return r.startsWith(`"`)?this.parseQuotedScalar(r,i,o):r===`true`||r===`false`?new D(r===`true`,[i,a,o]):r===`null`||r===`~`?new D(null,[i,a,o]):r!==``&&ke(r)?new D(Number(r),[i,a,o]):new D(r,[i,a,o])}parseQuotedScalar(e,t,n){let r=``,i=1;for(;i<e.length;){let a=e[i];if(a===`\\`){if(i++,i>=e.length){this.addError(`Unterminated double-quoted string`,t+i);break}let n=e[i];switch(n){case`n`:r+=`
4
- `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`"`:r+=`"`;break;case`\\`:r+=`\\`;break;case`/`:r+=`/`;break;default:r+=n}}else if(a===`"`){let e=t+i+1;return new D(r,[t,e,n])}else r+=a;i++}return this.addError(`Unterminated double-quoted string`,t),new D(r,[t,t+e.length,n])}skipEmpty(){for(;this.pos<this.lines.length&&this.lines[this.pos].content===``;)this.pos++}isMapEntry(e){return this.findMapColon(e)>=0}findMapColon(e){let t=!1,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(n){n=!1;continue}if(i===`\\`&&t){n=!0;continue}if(i===`"`){t=!t;continue}if(!t&&i===`:`&&(r+1>=e.length||e[r+1]===` `))return r}return-1}splitMapEntry(e,t){let n=this.findMapColon(e),r=e.slice(0,n).trim(),i=t+n,a=e.slice(n+1),o=a.trimStart(),s=i+1+(a.length-a.trimStart().length);return r.startsWith(`"`)&&r.endsWith(`"`)?{key:r.slice(1,-1),valueStr:o,colonOffset:i,valueOffset:s}:{key:r,valueStr:o,colonOffset:i,valueOffset:s}}addError(e,t){this.errors.push(new A(e,[t,t+1]))}};function ke(e){return e===``||e===`-`||e===`+`?!1:/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(e)}function j(e){return Ae(e)?`"`+e.replace(/[\\"\x00-\x1f\x7f-\x9f]/g,e=>{switch(e){case`\\`:return`\\\\`;case`"`:return`\\"`;case`\b`:return`\\b`;case`\f`:return`\\f`;case`
5
- `:return`\\n`;case`\r`:return`\\r`;case` `:return`\\t`;default:return`\\x`+e.charCodeAt(0).toString(16).padStart(2,`0`)}})+`"`:e}function Ae(e){return!!(e.length===0||/^\s|\s$/.test(e)||/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/.test(e)||/^-/.test(e)||/[\n:](\s|$)/.test(e)||/\s#/.test(e)||/[\n\r]/.test(e)||/^[&*\],?!>|@"'#%]/.test(e)||/[{}`]/.test(e)||/^\[/.test(e)||!isNaN(Number(e))||[`y`,`n`,`yes`,`no`,`true`,`false`,`on`,`off`,`null`].includes(e.toLowerCase()))}const M={visible:!0,inline:!1};function je(e){let t=new Set,n={role:`fragment`,name:``,children:[],props:{},box:M,receivesPointerEvents:!0},r=(n,r,a)=>{if(t.has(r))return;if(t.add(r),r.nodeType===Node.TEXT_NODE&&r.nodeValue){if(!a)return;let e=r.nodeValue;n.role!==`textbox`&&e&&n.children.push(r.nodeValue||``);return}if(r.nodeType!==Node.ELEMENT_NODE)return;let o=r,c=!s(o);if(!c)return;let l=[];if(o.hasAttribute(`aria-owns`)){let t=o.getAttribute(`aria-owns`).split(/\s+/);for(let n of t){let t=e.ownerDocument.getElementById(n);t&&l.push(t)}}let u=Me(o);u&&n.children.push(u),i(u||n,o,l,c)};function i(e,t,n,i){let a=(le(t)?.display||`inline`)!==`inline`||t.nodeName===`BR`?` `:``;a&&e.children.push(a),e.children.push(m(t,`::before`));let o=t.nodeName===`SLOT`?t.assignedNodes():[];if(o.length)for(let t of o)r(e,t,i);else{for(let n=t.firstChild;n;n=n.nextSibling)n.assignedSlot||r(e,n,i);if(t.shadowRoot)for(let n=t.shadowRoot.firstChild;n;n=n.nextSibling)r(e,n,i)}for(let t of n)r(e,t,i);if(e.children.push(m(t,`::after`)),a&&e.children.push(a),e.children.length===1&&e.name===e.children[0]&&(e.children=[]),e.role===`link`&&t.hasAttribute(`href`)){let n=t.getAttribute(`href`);e.props.url=n}if(e.role===`textbox`&&t.hasAttribute(`placeholder`)&&t.getAttribute(`placeholder`)!==e.name){let n=t.getAttribute(`placeholder`);e.props.placeholder=n}}a();try{r(n,e,!0)}finally{o()}return Ne(n),n}function Me(e){let t=c(e)??null;if(!t||t===`presentation`||t===`none`)return null;let n={role:t,name:l(u(e,!1)||``),children:[],props:{},box:M,receivesPointerEvents:!0};if(d.includes(t)&&(n.checked=f(e)),ee.includes(t)&&(n.disabled=p(e)||void 0),te.includes(t)){let t=ne(e);n.expanded=t===`none`?void 0:t}return re.includes(t)&&(n.level=ie(e)),ae.includes(t)&&(n.pressed=oe(e)),se.includes(t)&&(n.selected=ce(e)),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.type!==`checkbox`&&e.type!==`radio`&&e.type!==`file`&&(n.children=[e.value]),n}function Ne(e){let t=(e,t)=>{if(!e.length)return;let n=l(e.join(``));n&&t.push(n),e.length=0},n=e=>{let r=[],i=[];for(let a of e.children||[])typeof a==`string`?i.push(a):(t(i,r),n(a),r.push(a));t(i,r),e.children=r.length?r:[],e.children.length===1&&e.children[0]===e.name&&(e.children=[])};n(e)}function N(e,t){let n=``;return e.level&&(n+=` [level=${e.level}]`),e.checked===!0&&(n+=` [checked]`),e.checked===`mixed`&&(n+=` [checked=mixed]`),e.disabled&&(n+=` [disabled]`),e.expanded===!0&&(n+=` [expanded]`),e.expanded,e.pressed===!0&&(n+=` [pressed]`),e.pressed===`mixed`&&(n+=` [pressed=mixed]`),e.selected&&(n+=` [selected]`),n}function Pe(e){let t=e.role;return e.name&&e.name.length<=900&&(t+=` ${JSON.stringify(e.name)}`),t+=N(e),t}function P(e,t,n){let r=Pe(e),i=Object.keys(e.props).length>0,a=e.children.length===1&&typeof e.children[0]==`string`&&!i?e.children[0]:void 0;if(!e.children.length&&!i)n.push(`${t}- ${r}`);else if(a!==void 0)n.push(`${t}- ${r}: ${j(a)}`);else{n.push(`${t}- ${r}:`);for(let[r,i]of Object.entries(e.props))n.push(`${t} - /${r}: ${j(i)}`);for(let r of e.children)typeof r==`string`?r&&n.push(`${t} - text: ${j(r)}`):P(r,`${t} `,n)}}function Fe(e){let t=[],n=e.role===`fragment`?e.children:[e];for(let e of n)typeof e==`string`?e&&t.push(`- text: ${j(e)}`):P(e,``,t);return t.join(`
6
- `)}function F(e){return C(e)?`/${e.raw.slice(1,-1)}/`:j(e.normalized)}function I(e){return typeof e==`string`?JSON.stringify(e):`/${e.pattern}/`}function Ie(e){let t=[];if(e.kind===`text`)t.push(`- text: ${F(e.text)}`);else if(e.role===`fragment`)for(let n of e.children||[])L(n,``,t);else L(e,``,t);return t.join(`
7
- `)}function Le(e){let t=e.role;return e.name!==void 0&&(t+=` ${I(e.name)}`),t+=N(e),t}function L(e,t,n){if(e.kind===`text`){n.push(`${t}- text: ${F(e.text)}`);return}let r=Le(e),i=e.children||[],a=[];if(e.containerMode&&e.containerMode!==`contain`&&a.push(`${t} - /children: ${e.containerMode}`),e.props)for(let[n,r]of Object.entries(e.props))a.push(`${t} - /${n}: ${F(r)}`);if(i.length===0&&a.length===0){n.push(`${t}- ${r}`);return}if(i.length===1&&i[0].kind===`text`&&a.length===0){n.push(`${t}- ${r}: ${F(i[0].text)}`);return}n.push(`${t}- ${r}:`),n.push(...a);for(let e of i)L(e,`${t} `,n)}function Re(e,t){let n=z([e],[t],``);return{pass:n.pass,resolved:n.resolved.join(`
8
- `)}}function ze(e){return typeof e==`object`&&!!e&&`pattern`in e}function Be(e,t){let n=e.role;return t.name===void 0||(ze(t.name)&&b(e.name,t.name)?n+=` ${I(t.name)}`:e.name&&(n+=` ${JSON.stringify(e.name)}`)),t.level!==void 0&&(n+=` [level=${e.level}]`),t.checked!==void 0&&(e.checked===!0?n+=` [checked]`:e.checked===`mixed`&&(n+=` [checked=mixed]`)),t.disabled!==void 0&&e.disabled&&(n+=` [disabled]`),t.expanded!==void 0&&(e.expanded===!0?n+=` [expanded]`:e.expanded===!1&&(n+=` [expanded=false]`)),t.pressed!==void 0&&(e.pressed===!0?n+=` [pressed]`:e.pressed===`mixed`&&(n+=` [pressed=mixed]`)),t.selected!==void 0&&e.selected&&(n+=` [selected]`),n}function Ve(e,t){let n=new Map,r=0;for(let i=0;i<e.length&&r<t.length;i++)w(e[i],t[r],!1)&&(n.set(i,r),r++);return n}function He(e,t){let n=new Map,r=new Set;for(let i=0;i<t.length;i++)for(let a=0;a<e.length;a++)if(!r.has(a)&&w(e[a],t[i],!1)){n.set(a,i),r.add(a);break}return n}function R(e,t){let n=[];return typeof e==`string`?n.push(`${t}- text: ${e}`):P(e,t,n),n}function z(e,t,n,r){if(e=e.flatMap(e=>typeof e!=`string`&&e.role===`fragment`?e.children:[e]),t=t.flatMap(e=>e.kind===`role`&&e.role===`fragment`?e.children||[]:[e]),r===`equal`||r===`deep-equal`)return Ue(e,t,n,r===`deep-equal`);let i=[],a=Ve(e,t);if(t.length!==a.size){let r=He(e,t);for(let a=0;a<e.length;a++){let o=r.get(a);o===void 0?i.push(...R(e[a],n)):i.push(...B(e[a],t[o],n))}return{resolved:i,pass:!1}}for(let r=0;r<e.length;r++){let o=a.get(r);o!==void 0&&i.push(...B(e[r],t[o],n))}return{resolved:i,pass:!0}}function Ue(e,t,n,r){let i=[],a=e.length===t.length&&e.every((e,n)=>w(e,t[n],r));for(let a=0;a<e.length;a++)a<t.length?i.push(...B(e[a],t[a],n,r)):i.push(...R(e[a],n));return{resolved:i,pass:a}}function B(e,t,n,r=!1){if(typeof e==`string`&&t.kind===`text`)return[`${n}- text: ${x(e,t.text)&&C(t.text)?F(t.text):e}`];if(typeof e==`string`||t.kind===`text`)return R(e,n);let i=Be(e,t),a=z(e.children,t.children||[],`${n} `,t.containerMode??(r?`equal`:`contain`)),o=[];t.containerMode&&t.containerMode!==`contain`&&o.push(`${n} - /children: ${t.containerMode}`);let s=new Set([...Object.keys(e.props),...Object.keys(t.props||{})]);for(let r of s){let i=e.props[r],a=t.props?.[r];if(i!==void 0){let e=(a===void 0||x(i,a))&&a&&C(a)?F(a):i;o.push(`${n} - /${r}: ${e}`)}}let c=[];if(!a.resolved.length&&!o.length)c.push(`${n}- ${i}`);else if(a.resolved.length===1&&a.resolved[0].trimStart().startsWith(`- text: `)&&!o.length){let e=a.resolved[0].trimStart().slice(8);c.push(`${n}- ${i}: ${e}`)}else c.push(`${n}- ${i}:`),c.push(...o),c.push(...a.resolved);return c}function We(e){return be(Te,e)}const Ge={name:`aria`,capture(e){if(e instanceof Element)return je(e);throw TypeError(`aria adapter expects an Element`)},render(e){return V(Fe(e))},parseExpected(e){let t=Error.stackTraceLimit;Error.stackTraceLimit=t+20;try{return We(e.trim())}finally{Error.stackTraceLimit=t}},match(e,t){let n=Re(e,t);return n.pass?{pass:!0}:{pass:!1,message:`Accessibility tree does not match expected template`,resolved:V(n.resolved),expected:V(Ie(t))}}};function V(e){return`\n${e}\n`}const Ke={toMatchAriaSnapshot(t){return e.toMatchDomainSnapshot.call(this,Ge,t)},toMatchAriaInlineSnapshot(t,n){return e.toMatchDomainInlineSnapshot.call(this,Ge,t,n)}};for(let e of Object.values(Ke))Object.assign(e,{__vitest_poll_takeover__:!0});function qe(){return[...d]}function Je(e,t,n){return e instanceof g&&(e=e.query()),e==null?null:H(e,t,n)}function H(e,t,n){e instanceof g&&(e=e.element());let r=e?.ownerDocument?.defaultView||window;if(e instanceof r.HTMLElement||e instanceof r.SVGElement)return e;throw new nt(e,t,n)}function Ye(e,t,n){e instanceof g&&(e=e.element());let r=e.ownerDocument?.defaultView||window;if(e instanceof r.Node)return e;throw new rt(e,t,n)}function U(e,t,n,r,i,a){return[`${t}\n`,`${n}:\n${e.utils.EXPECTED_COLOR(W($e(e,r),2))}`,`${i}:\n${e.utils.RECEIVED_COLOR(W($e(e,a),2))}`].join(`
9
- `)}function W(e,t){return Xe(Qe(e),t)}function Xe(e,t){return e.replace(/^(?!\s*$)/gm,` `.repeat(t))}function Ze(e){let t=e.match(/^[ \t]*(?=\S)/gm);return t?t.reduce((e,t)=>Math.min(e,t.length),1/0):0}function Qe(e){let t=Ze(e);if(t===0)return e;let n=RegExp(`^[ \\t]{${t}}`,`gm`);return e.replace(n,``)}function $e(e,t){return typeof t==`string`?t:e.utils.stringify(t)}function et(e,{wordConnector:t=`, `,lastWordConnector:n=` and `}={}){return[e.slice(0,-1).join(t),e.at(-1)].join(e.length>1?n:``)}class tt extends Error{constructor(e,t,n,r){super(),Error.captureStackTrace&&Error.captureStackTrace(this,n);let i=``;try{i=r.utils.printWithType(`Received`,t,r.utils.printReceived)}catch{}this.message=[r.utils.matcherHint(`${r.isNot?`.not`:``}.${n.name}`,`received`,``),``,`${r.utils.RECEIVED_COLOR(`received`)} value must ${e} or a Locator that returns ${e}.`,i].join(`
10
- `)}}class nt extends tt{constructor(e,t,n){super(`an HTMLElement or an SVGElement`,e,t,n)}}class rt extends tt{constructor(e,t,n){super(`a Node`,e,t,n)}}function G(e){return e instanceof HTMLFormElement?`FORM`:e.tagName.toUpperCase()}function K(e){return G(e)===`INPUT`}function it(e){if(e)switch(G(e)){case`INPUT`:return ot(e);case`SELECT`:return at(e);default:return e.value??ct(e)}}function at({multiple:e,options:t}){let n=[...t].filter(e=>e.selected);if(e)return[...n].map(e=>e.value);if(n.length!==0)return n[0].value}function ot(e){switch(e.type){case`number`:return e.value===``?null:Number(e.value);case`checkbox`:return e.checked;default:return e.value}}const st=[`meter`,`progressbar`,`slider`,`spinbutton`];function ct(e){if(st.includes(e.getAttribute(`role`)||``))return Number(e.getAttribute(`aria-valuenow`))}function lt(e){return e.replace(/\s+/g,` `).trim()}function ut(e,t){return t instanceof RegExp?t.test(e):e.includes(String(t))}function q(e,t){if(Array.isArray(e)&&Array.isArray(t)){let n=new Set(t);for(let t of new Set(e))if(!n.has(t))return!1;return!0}}const dt=qe();function ft(e){let t=H(e,ft,this);if(!(K(t)&&[`checkbox`,`radio`].includes(t.type))&&!(dt.includes(c(t)||``)&&[`true`,`false`].includes(t.getAttribute(`aria-checked`)||``)))return{pass:!1,message:()=>`only inputs with type="checkbox" or type="radio" or elements with ${pt()} and a valid aria-checked attribute can be used with .toBeChecked(). Use .toHaveValue() instead`};let n=f(t)===!0;return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeChecked`,`element`,``),``,`Received element ${e} checked:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
11
- `)}}}function pt(){return et(dt.map(e=>`role="${e}"`),{lastWordConnector:` or `})}function mt(e){let t=H(e,mt,this);return{pass:ht(t),message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeEmptyDOMElement`,`element`,``),``,`Received:`,` ${this.utils.printReceived(t.innerHTML)}`].join(`
12
- `)}}function ht(e){return[...e.childNodes].filter(e=>e.nodeType!==Node.COMMENT_NODE).length===0}function gt(e){let t=H(e,gt,this),n=vt(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeDisabled`,`element`,``),``,`Received element ${e} disabled:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
13
- `)}}}function _t(e){let t=H(e,_t,this),n=vt(t);return{pass:!n,message:()=>{let e=n?`is not`:`is`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeEnabled`,`element`,``),``,`Received element ${e} enabled:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
14
- `)}}}function vt(e){return G(e).includes(`-`)?e.hasAttribute(`disabled`):p(e)}function yt(e){let t=null;(e!==null||!this.isNot)&&(t=Je(e,yt,this));let n=t===null?!1:t.ownerDocument===t.getRootNode({composed:!0}),r=()=>`expected document not to contain element, found ${this.utils.stringify(t?.cloneNode(!0))} instead`,i=()=>`element could not be found in the document`;return{pass:n,message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeInTheDocument`,`element`,``),``,this.utils.RECEIVED_COLOR(this.isNot?r():i())].join(`
15
- `)}}const bt=[`FORM`,`INPUT`,`SELECT`,`TEXTAREA`];function xt(e){return e.hasAttribute(`aria-invalid`)&&e.getAttribute(`aria-invalid`)!==`false`}function St(e){return bt.includes(G(e))}function Ct(e){let t=xt(e);return St(e)?t||!e.checkValidity():t}function J(e){let t=H(e,J,this),n=Ct(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeInvalid`,`element`,``),``,`Received element ${e} currently invalid:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
16
- `)}}}function wt(e){let t=H(e,J,this),n=!Ct(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeValid`,`element`,``),``,`Received element ${e} currently valid:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
17
- `)}}}function Tt(e,t){let n=H(e,Tt,this),r=t?.ratio??0;return Et(n,r).then(({pass:e,ratio:t})=>({pass:e,message:()=>{let i=e?`is`:`is not`,a=r>0?` with ratio ${r}`:``,o=t===void 0?``:` (actual ratio: ${t.toFixed(3)})`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeInViewport`,`element`,``),``,`Received element ${i} in viewport${a}${o}:`,` ${this.utils.printReceived(n.cloneNode(!1))}`].join(`
18
- `)}}))}async function Et(e,t){let n=await new Promise(t=>{let n=new IntersectionObserver(e=>{e.length>0?t(e[0].intersectionRatio):t(0),n.disconnect()});n.observe(e),requestAnimationFrame(()=>{})});return{pass:n>0&&n>t-1e-9,ratio:n}}function Dt(e){let t=H(e,Dt,this);if(!(K(t)&&t.type===`checkbox`)&&t.getAttribute(`role`)!==`checkbox`)return{pass:!1,message:()=>`only inputs with type="checkbox" or elements with role="checkbox" and a valid aria-checked attribute can be used with .toBePartiallyChecked(). Use .toHaveValue() instead`};let n=Ot(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBePartiallyChecked`,`element`,``),``,`Received element ${e} partially checked:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
19
- `)}}}function Ot(e){let t=f(e)===`mixed`;return!t&&K(e)&&[`checkbox`,`radio`].includes(e.type)&&e.getAttribute(`aria-checked`)===`mixed`?!0:t}const kt=[`SELECT`,`TEXTAREA`],At=[`INPUT`,`SELECT`,`TEXTAREA`],jt=[`color`,`hidden`,`range`,`submit`,`image`,`reset`],Mt=[`checkbox`,`combobox`,`gridcell`,`listbox`,`radiogroup`,`spinbutton`,`textbox`,`tree`];function Nt(e){return kt.includes(G(e))&&e.hasAttribute(`required`)}function Pt(e){return G(e)===`INPUT`&&e.hasAttribute(`required`)&&(e.hasAttribute(`type`)&&!jt.includes(e.getAttribute(`type`)||``)||!e.hasAttribute(`type`))}function Ft(e){return e.hasAttribute(`aria-required`)&&e.getAttribute(`aria-required`)===`true`&&(At.includes(G(e))||e.hasAttribute(`role`)&&Mt.includes(e.getAttribute(`role`)||``))}function It(e){let t=H(e,It,this),n=Nt(t)||Pt(t)||Ft(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeRequired`,`element`,``),``,`Received element ${e} required:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
20
- `)}}}function Lt(e){let t=H(e,Lt,this),n=t.ownerDocument===t.getRootNode({composed:!0});a();let r=n&&Rt(t);return o(),{pass:r,message:()=>{let e=r?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeVisible`,`element`,``),``,`Received element ${e} visible${n?``:` (element is not in the document)`}:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
21
- `)}}}function Rt(e){let t=ue(e);if(_e.browser!==`webkit`)return t;let n=e.closest(`details`);return!n||e===n?t:zt(e)}function zt(e){let t=e;for(;t;){if(t.tagName===`DETAILS`){let n=t.querySelector(`summary`)===e;if(!t.open&&!n)return!1}t=t.parentElement}return e.offsetParent!==null}function Y(e,t){let n=H(e,Y,this),r=t===null?null:H(t,Y,this);return{pass:n.contains(r),message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toContainElement`,`element`,`element`),``,this.utils.RECEIVED_COLOR(`${this.utils.stringify(n.cloneNode(!1))} ${this.isNot?`contains:`:`does not contain:`} ${this.utils.stringify(r?r.cloneNode(!1):null)}
1
+ import{Snapshots as e,recordArtifact as t,expect as n,chai as r}from"vitest";import{getType as i}from"vitest/internal/browser";import{b as a,e as o,i as s,g as c,n as l,a as u,k as d,c as f,d as ee,f as te,h as ne,j as re,l as ie,m as ae,o as oe,p as se,q as ce,r as le,s as ue,t as de,_ as p,u as m,L as h,v as fe,w as pe,x as me,y as he,z as ge,A as _e,B as ve,C as g,D as ye}from"./index-BlWsE3ij.js";import{server as be}from"vitest/browser";var _=Object.defineProperty,xe=(e,t)=>{let n={};for(var r in e)_(n,r,{get:e[r],enumerable:!0});return _(n,Symbol.toStringTag,{value:`Module`}),n};function Se(e,t,n={}){let r=Ce(e,t,n);if(r.errors.length)throw Error(r.errors[0].message);return r.fragment}function Ce(e,t,n={}){let r=new e.LineCounter,i={keepSourceTokens:!0,lineCounter:r,...n},a=e.parseDocument(t,i),o=[],s=e=>[r.linePos(e[0]),r.linePos(e[1])],c=e=>{o.push({message:e.message,range:[r.linePos(e.pos[0]),r.linePos(e.pos[1])]})},l=(t,n)=>{for(let r of n.items){if(r instanceof e.Scalar&&typeof r.value==`string`){let e=Te.parse(r,i,o);e&&(t.children=t.children||[],t.children.push(e));continue}if(r instanceof e.YAMLMap){u(t,r);continue}o.push({message:`Sequence items should be strings or maps`,range:s(r.range||n.range)})}},u=(t,n)=>{for(let r of n.items){if(t.children=t.children||[],!(r.key instanceof e.Scalar&&typeof r.key.value==`string`)){o.push({message:`Only string keys are supported`,range:s(r.key.range||n.range)});continue}let a=r.key,c=r.value;if(a.value===`text`){if(!(c instanceof e.Scalar&&typeof c.value==`string`)){o.push({message:`Text value should be a string`,range:s(r.value.range||n.range)});continue}t.children.push({kind:`text`,text:y(c.value)});continue}if(a.value===`/children`){if(!(c instanceof e.Scalar&&typeof c.value==`string`)||c.value!==`contain`&&c.value!==`equal`&&c.value!==`deep-equal`){o.push({message:`Strict value should be "contain", "equal" or "deep-equal"`,range:s(r.value.range||n.range)});continue}t.containerMode=c.value;continue}if(a.value.startsWith(`/`)){if(!(c instanceof e.Scalar&&typeof c.value==`string`)){o.push({message:`Property value should be a string`,range:s(r.value.range||n.range)});continue}t.props=t.props??{},t.props[a.value.slice(1)]=y(c.value);continue}let u=Te.parse(a,i,o);if(u){if(c instanceof e.Scalar){let e=typeof c.value;if(e!==`string`&&e!==`number`&&e!==`boolean`){o.push({message:`Node value should be a string or a sequence`,range:s(r.value.range||n.range)});continue}t.children.push({...u,children:[{kind:`text`,text:y(String(c.value))}]});continue}if(c instanceof e.YAMLSeq){t.children.push(u),l(u,c);continue}o.push({message:`Map values should be strings or sequences`,range:s(r.value.range||n.range)})}}},d={kind:`role`,role:`fragment`};return a.errors.forEach(c),o.length||(a.contents instanceof e.YAMLSeq||o.push({message:`Aria snapshot must be a YAML sequence, elements starting with " -"`,range:a.contents?s(a.contents.range):[{line:0,col:0},{line:0,col:0}]}),o.length)?{errors:o,fragment:d}:(l(d,a.contents),o.length?{errors:o,fragment:we}:d.children?.length===1&&(!d.containerMode||d.containerMode===`contain`)?{fragment:d.children[0],errors:[]}:{fragment:d,errors:[]})}const we={kind:`role`,role:`fragment`};function v(e){return e.replace(/[\u200b\u00ad]/g,``).replace(/[\r\n\s\t]+/g,` `).trim()}function y(e){return{raw:e,normalized:v(e)}}var Te=class e{static parse(t,n,r){try{return new e(t.value)._parse()}catch(e){if(e instanceof Ee){let i=n.prettyErrors===!1?e.message:`${e.message}:\n\n${t.value}\n${` `.repeat(e.pos)}^\n`;return r.push({message:i,range:[n.lineCounter.linePos(t.range[0]),n.lineCounter.linePos(t.range[0]+e.pos)]}),null}throw e}}constructor(e){p(this,`_input`,void 0),p(this,`_pos`,void 0),p(this,`_length`,void 0),this._input=e,this._pos=0,this._length=e.length}_peek(){return this._input[this._pos]||``}_next(){return this._pos<this._length?this._input[this._pos++]:null}_eof(){return this._pos>=this._length}_isWhitespace(){return!this._eof()&&/\s/.test(this._peek())}_skipWhitespace(){for(;this._isWhitespace();)this._pos++}_readIdentifier(e){this._eof()&&this._throwError(`Unexpected end of input when expecting ${e}`);let t=this._pos;for(;!this._eof()&&/[a-zA-Z]/.test(this._peek());)this._pos++;return this._input.slice(t,this._pos)}_readString(){let e=``,t=!1;for(;!this._eof();){let n=this._next();if(t)e+=n,t=!1;else if(n===`\\`)t=!0;else if(n===`"`)return e;else e+=n}this._throwError(`Unterminated string`)}_throwError(e,t=0){throw new Ee(e,t||this._pos)}_readRegex(){let e=``,t=!1,n=!1;for(;!this._eof();){let r=this._next();if(t)e+=r,t=!1;else if(r===`\\`)t=!0,e+=r;else if(r===`/`&&!n)return{pattern:e};else r===`[`?(n=!0,e+=r):r===`]`&&n?(e+=r,n=!1):e+=r}this._throwError(`Unterminated regex`)}_readStringOrRegex(){let e=this._peek();return e===`"`?(this._next(),v(this._readString())):e===`/`?(this._next(),this._readRegex()):null}_readAttributes(e){let t=this._pos;for(;this._skipWhitespace(),this._peek()===`[`;){this._next(),this._skipWhitespace(),t=this._pos;let n=this._readIdentifier(`attribute`);this._skipWhitespace();let r=``;if(this._peek()===`=`)for(this._next(),this._skipWhitespace(),t=this._pos;this._peek()!==`]`&&!this._isWhitespace()&&!this._eof();)r+=this._next();this._skipWhitespace(),this._peek()!==`]`&&this._throwError(`Expected ]`),this._next(),this._applyAttribute(e,n,r||`true`,t)}}_parse(){this._skipWhitespace();let e=this._readIdentifier(`role`);this._skipWhitespace();let t={kind:`role`,role:e,name:this._readStringOrRegex()||void 0};return this._readAttributes(t),this._skipWhitespace(),this._eof()||this._throwError(`Unexpected input`),t}_applyAttribute(e,t,n,r){if(t===`checked`){this._assert(n===`true`||n===`false`||n===`mixed`,`Value of "checked" attribute must be a boolean or "mixed"`,r),e.checked=n===`true`?!0:n===`false`?!1:`mixed`;return}if(t===`disabled`){this._assert(n===`true`||n===`false`,`Value of "disabled" attribute must be a boolean`,r),e.disabled=n===`true`;return}if(t===`expanded`){this._assert(n===`true`||n===`false`,`Value of "expanded" attribute must be a boolean`,r),e.expanded=n===`true`;return}if(t===`active`){this._assert(n===`true`||n===`false`,`Value of "active" attribute must be a boolean`,r),e.active=n===`true`;return}if(t===`level`){this._assert(!Number.isNaN(Number(n)),`Value of "level" attribute must be a number`,r),e.level=Number(n);return}if(t===`pressed`){this._assert(n===`true`||n===`false`||n===`mixed`,`Value of "pressed" attribute must be a boolean or "mixed"`,r),e.pressed=n===`true`?!0:n===`false`?!1:`mixed`;return}if(t===`selected`){this._assert(n===`true`||n===`false`,`Value of "selected" attribute must be a boolean`,r),e.selected=n===`true`;return}this._assert(!1,`Unsupported attribute [${t}]`,r)}_assert(e,t,n){e||this._throwError(t||`Assertion error`,n)}},Ee=class extends Error{constructor(e,t){super(e),p(this,`pos`,void 0),this.pos=t}};function De(e,t){return t?e?typeof t==`string`?e===t:!!e.match(new RegExp(t.pattern)):!1:!0}function b(e,t){if(!t?.normalized)return!0;if(!e)return!1;if(e===t.normalized||e===t.raw)return!0;let n=S(t);return n?!!e.match(n):!1}const x=Symbol(`cachedRegex`);function S(e){if(e[x]!==void 0)return e[x];let{raw:t}=e,n=t.startsWith(`/`)&&t.endsWith(`/`)&&t.length>1,r;try{r=n?new RegExp(t.slice(1,-1)):null}catch{r=null}return e[x]=r,r}function C(e,t,n){if(typeof e==`string`&&t.kind===`text`)return b(e,t.text);if(typeof e!=`object`||!e||t.kind!==`role`||t.role!==`fragment`&&t.role!==e.role||t.checked!==void 0&&t.checked!==e.checked||t.disabled!==void 0&&t.disabled!==e.disabled||t.expanded!==void 0&&t.expanded!==e.expanded||t.level!==void 0&&t.level!==e.level||t.pressed!==void 0&&t.pressed!==e.pressed||t.selected!==void 0&&t.selected!==e.selected||!De(e.name,t.name))return!1;if(t.props){for(let[n,r]of Object.entries(t.props))if(!b(e.props[n]||``,r))return!1}return t.containerMode===`contain`?w(e.children||[],t.children||[]):t.containerMode===`equal`?Oe(e.children||[],t.children||[],!1):t.containerMode===`deep-equal`||n?Oe(e.children||[],t.children||[],!0):w(e.children||[],t.children||[])}function Oe(e,t,n){if(t.length!==e.length)return!1;for(let r=0;r<t.length;++r)if(!C(e[r],t[r],n))return!1;return!0}function w(e,t){if(t.length>e.length)return!1;let n=e.slice(),r=t.slice();for(let e of r){let t=n.shift();for(;t&&!C(t,e,!1);)t=n.shift();if(!t)return!1}return!0}var ke=xe({LineCounter:()=>je,Scalar:()=>T,YAMLError:()=>D,YAMLMap:()=>E,YAMLSeq:()=>Ae,parseDocument:()=>Me}),T=class{constructor(e,t=[0,0,0]){p(this,`value`,void 0),p(this,`range`,void 0),this.value=e,this.range=t}},E=class{constructor(e=[0,0,0]){p(this,`items`,void 0),p(this,`range`,void 0),this.items=[],this.range=e}},Ae=class{constructor(e=[0,0,0]){p(this,`items`,void 0),p(this,`range`,void 0),this.items=[],this.range=e}},je=class{constructor(){p(this,`lineStarts`,[0])}addNewLine(e){e>this.lineStarts[this.lineStarts.length-1]&&this.lineStarts.push(e)}linePos(e){let t=0,n=this.lineStarts.length-1;for(;t<n;){let r=t+n+1>>1;this.lineStarts[r]<=e?t=r:n=r-1}return{line:t+1,col:e-this.lineStarts[t]+1}}},D=class extends Error{constructor(e,t){super(e),p(this,`pos`,void 0),this.pos=t}};function Me(e,t={}){let n=t.lineCounter,r=[];if(n)for(let t=0;t<e.length;t++)e[t]===`
2
+ `&&n.addNewLine(t+1);try{return{contents:new Ne(e,r).parseRoot(),errors:r}}catch(e){if(e instanceof D)return r.push(e),{contents:null,errors:r};throw e}}var Ne=class{constructor(e,t){p(this,`lines`,void 0),p(this,`pos`,void 0),p(this,`text`,void 0),p(this,`errors`,void 0),this.text=e,this.errors=t,this.lines=[],this.pos=0;let n=0,r=e.split(`
3
+ `);for(let e of r){let t=e.replace(/\r$/,``),r=t.replace(/^\s+/,``),i=t.length-r.length;this.lines.push({indent:i,content:r,offset:n+i,lineOffset:n,raw:t}),n+=e.length+1}for(;this.lines.length>0&&this.lines[this.lines.length-1].content===``;)this.lines.pop()}parseRoot(){if(this.lines.length===0)return null;let e=this.parseNode(0);if(this.skipEmpty(),this.pos<this.lines.length){let e=this.currentLine();this.addError(`Unexpected scalar at node end`,e.offset)}return e}currentLine(){return this.lines[this.pos]}parseNode(e){this.skipEmpty();let t=this.currentLine();return!t||t.indent<e?null:t.content.startsWith(`- `)||t.content===`-`?this.parseSequence(t.indent):this.isMapEntry(t.content)?this.parseMap(t.indent):this.parseScalarValue(t.content,t.offset,t)}parseSequence(e){let t=this.currentLine(),n=new Ae([t.offset-t.indent,0,0]),r=t.offset;for(;this.pos<this.lines.length;){this.skipEmpty();let t=this.currentLine();if(!t||t.indent<e)break;if(t.indent>e){this.addError(`Bad indentation of a sequence entry`,t.offset);break}if(!t.content.startsWith(`- `)&&t.content!==`-`)break;let i=t.content===`-`?1:2,a=t.content.slice(i),o=t.offset+i;if(this.pos++,a===``||a.trim()===``){let t=this.parseNode(e+1);t&&(n.items.push(t),r=this.peekLastOffset())}else if(this.isMapEntry(a)){let s=this.parseInlineMap(a,o,e+i,t);n.items.push(s),r=s.range[2]}else{let e=this.parseScalarValue(a,o,t);n.items.push(e),r=e.range[2]}}return n.range[1]=r,n.range[2]=r,n}parseMap(e){let t=this.currentLine(),n=new E([t.offset-t.indent,0,0]),r=t.offset;for(;this.pos<this.lines.length;){this.skipEmpty();let t=this.currentLine();if(!t||t.indent<e)break;if(t.indent>e){this.addError(`Bad indentation of a mapping entry`,t.offset);break}if(!this.isMapEntry(t.content))break;let{key:i,valueStr:a,colonOffset:o,valueOffset:s}=this.splitMapEntry(t.content,t.offset),c=new T(i,[t.offset,t.offset+i.length,o]);this.pos++;let l;l=a===``?this.parseMapValue(e,o):this.parseScalarValue(a.trim(),s,t),n.items.push({key:c,value:l}),r=l?this.getNodeEnd(l):o+1}return n.range[1]=r,n.range[2]=r,n}parseInlineMap(e,t,n,r){let i=new E([t,0,0]),a=t,{key:o,valueStr:s,colonOffset:c,valueOffset:l}=this.splitMapEntry(e,t),u=new T(o,[t,t+o.length,c]),d;for(d=s===``?this.parseMapValue(n,c):this.parseScalarValue(s.trim(),l,r),i.items.push({key:u,value:d}),a=d?this.getNodeEnd(d):c+1;this.pos<this.lines.length;){this.skipEmpty();let e=this.currentLine();if(!e||e.indent<n||e.indent>n||!this.isMapEntry(e.content)||e.content.startsWith(`- `))break;let t=this.splitMapEntry(e.content,e.offset),r=new T(t.key,[e.offset,e.offset+t.key.length,t.colonOffset]);this.pos++;let o;o=t.valueStr===``?this.parseMapValue(n,t.colonOffset):this.parseScalarValue(t.valueStr.trim(),t.valueOffset,e),i.items.push({key:r,value:o}),a=o?this.getNodeEnd(o):t.colonOffset+1}return i.range[1]=a,i.range[2]=a,i}parseMapValue(e,t){this.skipEmpty();let n=this.currentLine();return!n||n.indent<e?new T(null,[t+1,t+1,t+1]):n.indent===e&&(n.content.startsWith(`- `)||n.content===`-`)?this.parseNode(e):n.indent>e?this.parseNode(e+1):new T(null,[t+1,t+1,t+1])}getNodeEnd(e){return e.range[2]}peekLastOffset(){if(this.pos>0&&this.pos<=this.lines.length){let e=this.lines[this.pos-1];return e.lineOffset+e.raw.length}return this.text.length}parseScalarValue(e,t,n){let r=e.trim(),i=t+e.indexOf(r),a=i+r.length,o=n.lineOffset+n.raw.length;return r.startsWith(`"`)?this.parseQuotedScalar(r,i,o):r===`true`||r===`false`?new T(r===`true`,[i,a,o]):r===`null`||r===`~`?new T(null,[i,a,o]):r!==``&&Pe(r)?new T(Number(r),[i,a,o]):new T(r,[i,a,o])}parseQuotedScalar(e,t,n){let r=``,i=1;for(;i<e.length;){let a=e[i];if(a===`\\`){if(i++,i>=e.length){this.addError(`Unterminated double-quoted string`,t+i);break}let n=e[i];switch(n){case`n`:r+=`
4
+ `;break;case`t`:r+=` `;break;case`r`:r+=`\r`;break;case`"`:r+=`"`;break;case`\\`:r+=`\\`;break;case`/`:r+=`/`;break;default:r+=n}}else if(a===`"`){let e=t+i+1;return new T(r,[t,e,n])}else r+=a;i++}return this.addError(`Unterminated double-quoted string`,t),new T(r,[t,t+e.length,n])}skipEmpty(){for(;this.pos<this.lines.length&&this.lines[this.pos].content===``;)this.pos++}isMapEntry(e){return this.findMapColon(e)>=0}findMapColon(e){let t=!1,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(n){n=!1;continue}if(i===`\\`&&t){n=!0;continue}if(i===`"`){t=!t;continue}if(!t&&i===`:`&&(r+1>=e.length||e[r+1]===` `))return r}return-1}splitMapEntry(e,t){let n=this.findMapColon(e),r=e.slice(0,n).trim(),i=t+n,a=e.slice(n+1),o=a.trimStart(),s=i+1+(a.length-a.trimStart().length);return r.startsWith(`"`)&&r.endsWith(`"`)?{key:r.slice(1,-1),valueStr:o,colonOffset:i,valueOffset:s}:{key:r,valueStr:o,colonOffset:i,valueOffset:s}}addError(e,t){this.errors.push(new D(e,[t,t+1]))}};function Pe(e){return e===``||e===`-`||e===`+`?!1:/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(e)}function O(e){return Fe(e)?`"`+e.replace(/[\\"\x00-\x1f\x7f-\x9f]/g,e=>{switch(e){case`\\`:return`\\\\`;case`"`:return`\\"`;case`\b`:return`\\b`;case`\f`:return`\\f`;case`
5
+ `:return`\\n`;case`\r`:return`\\r`;case` `:return`\\t`;default:return`\\x`+e.charCodeAt(0).toString(16).padStart(2,`0`)}})+`"`:e}function Fe(e){return!!(e.length===0||/^\s|\s$/.test(e)||/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/.test(e)||/^-/.test(e)||/[\n:](\s|$)/.test(e)||/\s#/.test(e)||/[\n\r]/.test(e)||/^[&*\],?!>|@"'#%]/.test(e)||/[{}`]/.test(e)||/^\[/.test(e)||!isNaN(Number(e))||[`y`,`n`,`yes`,`no`,`true`,`false`,`on`,`off`,`null`].includes(e.toLowerCase()))}const k={visible:!0,inline:!1};function Ie(e){let t=new Set,n={role:`fragment`,name:``,children:[],props:{},box:k,receivesPointerEvents:!0},r=(n,r,a)=>{if(t.has(r))return;if(t.add(r),r.nodeType===Node.TEXT_NODE&&r.nodeValue){if(!a)return;let e=r.nodeValue;n.role!==`textbox`&&e&&n.children.push(r.nodeValue||``);return}if(r.nodeType!==Node.ELEMENT_NODE)return;let o=r,c=!s(o);if(!c)return;let l=[];if(o.hasAttribute(`aria-owns`)){let t=o.getAttribute(`aria-owns`).split(/\s+/);for(let n of t){let t=e.ownerDocument.getElementById(n);t&&l.push(t)}}let u=Le(o);u&&n.children.push(u),i(u||n,o,l,c)};function i(e,t,n,i){let a=(ue(t)?.display||`inline`)!==`inline`||t.nodeName===`BR`?` `:``;a&&e.children.push(a),e.children.push(de(t,`::before`));let o=t.nodeName===`SLOT`?t.assignedNodes():[];if(o.length)for(let t of o)r(e,t,i);else{for(let n=t.firstChild;n;n=n.nextSibling)n.assignedSlot||r(e,n,i);if(t.shadowRoot)for(let n=t.shadowRoot.firstChild;n;n=n.nextSibling)r(e,n,i)}for(let t of n)r(e,t,i);if(e.children.push(de(t,`::after`)),a&&e.children.push(a),e.children.length===1&&e.name===e.children[0]&&(e.children=[]),e.role===`link`&&t.hasAttribute(`href`)){let n=t.getAttribute(`href`);e.props.url=n}if(e.role===`textbox`&&t.hasAttribute(`placeholder`)&&t.getAttribute(`placeholder`)!==e.name){let n=t.getAttribute(`placeholder`);e.props.placeholder=n}}a();try{r(n,e,!0)}finally{o()}return Re(n),n}function Le(e){let t=c(e)??null;if(!t||t===`presentation`||t===`none`)return null;let n={role:t,name:l(u(e,!1)||``),children:[],props:{},box:k,receivesPointerEvents:!0};if(d.includes(t)&&(n.checked=f(e)),ee.includes(t)&&(n.disabled=te(e)||void 0),ne.includes(t)){let t=re(e);n.expanded=t===`none`?void 0:t}return ie.includes(t)&&(n.level=ae(e)),oe.includes(t)&&(n.pressed=se(e)),ce.includes(t)&&(n.selected=le(e)),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.type!==`checkbox`&&e.type!==`radio`&&e.type!==`file`&&(n.children=[e.value]),n}function Re(e){let t=(e,t)=>{if(!e.length)return;let n=l(e.join(``));n&&t.push(n),e.length=0},n=e=>{let r=[],i=[];for(let a of e.children||[])typeof a==`string`?i.push(a):(t(i,r),n(a),r.push(a));t(i,r),e.children=r.length?r:[],e.children.length===1&&e.children[0]===e.name&&(e.children=[])};n(e)}function ze(e,t){let n=``;return e.level&&(n+=` [level=${e.level}]`),e.checked===!0&&(n+=` [checked]`),e.checked===`mixed`&&(n+=` [checked=mixed]`),e.disabled&&(n+=` [disabled]`),e.expanded===!0&&(n+=` [expanded]`),e.expanded,e.pressed===!0&&(n+=` [pressed]`),e.pressed===`mixed`&&(n+=` [pressed=mixed]`),e.selected&&(n+=` [selected]`),n}function Be(e){let t=e.role;return e.name&&e.name.length<=900&&(t+=` ${JSON.stringify(e.name)}`),t+=ze(e),t}function A(e,t,n){let r=Be(e),i=Object.keys(e.props).length>0,a=e.children.length===1&&typeof e.children[0]==`string`&&!i?e.children[0]:void 0;if(!e.children.length&&!i)n.push(`${t}- ${r}`);else if(a!==void 0)n.push(`${t}- ${r}: ${O(a)}`);else{n.push(`${t}- ${r}:`);for(let[r,i]of Object.entries(e.props))n.push(`${t} - /${r}: ${O(i)}`);for(let r of e.children)typeof r==`string`?r&&n.push(`${t} - text: ${O(r)}`):A(r,`${t} `,n)}}function Ve(e){let t=[],n=e.role===`fragment`?e.children:[e];for(let e of n)typeof e==`string`?e&&t.push(`- text: ${O(e)}`):A(e,``,t);return t.join(`
6
+ `)}function j(e){return S(e)?`/${e.raw.slice(1,-1)}/`:O(e.normalized)}function He(e){return typeof e==`string`?JSON.stringify(e):`/${e.pattern}/`}function Ue(e){let t=[];if(e.kind===`text`)t.push(`- text: ${j(e.text)}`);else if(e.role===`fragment`)for(let n of e.children||[])M(n,``,t);else M(e,``,t);return t.join(`
7
+ `)}function We(e){let t=e.role;return e.name!==void 0&&(t+=` ${He(e.name)}`),t+=ze(e),t}function M(e,t,n){if(e.kind===`text`){n.push(`${t}- text: ${j(e.text)}`);return}let r=We(e),i=e.children||[],a=[];if(e.containerMode&&e.containerMode!==`contain`&&a.push(`${t} - /children: ${e.containerMode}`),e.props)for(let[n,r]of Object.entries(e.props))a.push(`${t} - /${n}: ${j(r)}`);if(i.length===0&&a.length===0){n.push(`${t}- ${r}`);return}if(i.length===1&&i[0].kind===`text`&&a.length===0){n.push(`${t}- ${r}: ${j(i[0].text)}`);return}n.push(`${t}- ${r}:`),n.push(...a);for(let e of i)M(e,`${t} `,n)}function Ge(e,t){let n=P([e],[t],``);return{pass:n.pass,resolved:n.resolved.join(`
8
+ `)}}function Ke(e){return typeof e==`object`&&!!e&&`pattern`in e}function qe(e,t){let n=e.role;return t.name===void 0||(Ke(t.name)&&De(e.name,t.name)?n+=` ${He(t.name)}`:e.name&&(n+=` ${JSON.stringify(e.name)}`)),t.level!==void 0&&(n+=` [level=${e.level}]`),t.checked!==void 0&&(e.checked===!0?n+=` [checked]`:e.checked===`mixed`&&(n+=` [checked=mixed]`)),t.disabled!==void 0&&e.disabled&&(n+=` [disabled]`),t.expanded!==void 0&&(e.expanded===!0?n+=` [expanded]`:e.expanded===!1&&(n+=` [expanded=false]`)),t.pressed!==void 0&&(e.pressed===!0?n+=` [pressed]`:e.pressed===`mixed`&&(n+=` [pressed=mixed]`)),t.selected!==void 0&&e.selected&&(n+=` [selected]`),n}function Je(e,t){let n=new Map,r=0;for(let i=0;i<e.length&&r<t.length;i++)C(e[i],t[r],!1)&&(n.set(i,r),r++);return n}function Ye(e,t){let n=new Map,r=new Set;for(let i=0;i<t.length;i++)for(let a=0;a<e.length;a++)if(!r.has(a)&&C(e[a],t[i],!1)){n.set(a,i),r.add(a);break}return n}function N(e,t){let n=[];return typeof e==`string`?n.push(`${t}- text: ${e}`):A(e,t,n),n}function P(e,t,n,r){if(e=e.flatMap(e=>typeof e!=`string`&&e.role===`fragment`?e.children:[e]),t=t.flatMap(e=>e.kind===`role`&&e.role===`fragment`?e.children||[]:[e]),r===`equal`||r===`deep-equal`)return Xe(e,t,n,r===`deep-equal`);let i=[],a=Je(e,t);if(t.length!==a.size){let r=Ye(e,t);for(let a=0;a<e.length;a++){let o=r.get(a);o===void 0?i.push(...N(e[a],n)):i.push(...F(e[a],t[o],n))}return{resolved:i,pass:!1}}for(let r=0;r<e.length;r++){let o=a.get(r);o!==void 0&&i.push(...F(e[r],t[o],n))}return{resolved:i,pass:!0}}function Xe(e,t,n,r){let i=[],a=e.length===t.length&&e.every((e,n)=>C(e,t[n],r));for(let a=0;a<e.length;a++)a<t.length?i.push(...F(e[a],t[a],n,r)):i.push(...N(e[a],n));return{resolved:i,pass:a}}function F(e,t,n,r=!1){if(typeof e==`string`&&t.kind===`text`)return[`${n}- text: ${b(e,t.text)&&S(t.text)?j(t.text):e}`];if(typeof e==`string`||t.kind===`text`)return N(e,n);let i=qe(e,t),a=P(e.children,t.children||[],`${n} `,t.containerMode??(r?`equal`:`contain`)),o=[];t.containerMode&&t.containerMode!==`contain`&&o.push(`${n} - /children: ${t.containerMode}`);let s=new Set([...Object.keys(e.props),...Object.keys(t.props||{})]);for(let r of s){let i=e.props[r],a=t.props?.[r];if(i!==void 0){let e=(a===void 0||b(i,a))&&a&&S(a)?j(a):i;o.push(`${n} - /${r}: ${e}`)}}let c=[];if(!a.resolved.length&&!o.length)c.push(`${n}- ${i}`);else if(a.resolved.length===1&&a.resolved[0].trimStart().startsWith(`- text: `)&&!o.length){let e=a.resolved[0].trimStart().slice(8);c.push(`${n}- ${i}: ${e}`)}else c.push(`${n}- ${i}:`),c.push(...o),c.push(...a.resolved);return c}function Ze(e){return Se(ke,e)}var I=Object.freeze({__proto__:null,generateAriaTree:Ie,matchAriaTree:Ge,parseAriaTemplate:Ze,renderAriaTemplate:Ue,renderAriaTree:Ve});m().aria=I;const{generateAriaTree:Qe,matchAriaTree:$e,parseAriaTemplate:et,renderAriaTemplate:tt,renderAriaTree:nt}=I,L={name:`aria`,capture(e){if(e instanceof Element)return Qe(e);throw TypeError(`aria adapter expects an Element`)},render(e){return R(nt(e))},parseExpected(e){let t=Error.stackTraceLimit;Error.stackTraceLimit=t+20;try{return et(e.trim())}finally{Error.stackTraceLimit=t}},match(e,t){let n=$e(e,t);return n.pass?{pass:!0}:{pass:!1,message:`Accessibility tree does not match expected template`,resolved:R(n.resolved),expected:R(tt(t))}}};function R(e){return`\n${e}\n`}const z={toMatchAriaSnapshot(t){return e.toMatchDomainSnapshot.call(this,L,t)},toMatchAriaInlineSnapshot(t,n){return e.toMatchDomainInlineSnapshot.call(this,L,t,n)}};for(let e of Object.values(z))Object.assign(e,{__vitest_poll_takeover__:!0});function rt(){return[...d]}function it(e,t,n){return e instanceof h&&(e=e.query()),e==null?null:B(e,t,n)}function B(e,t,n){e instanceof h&&(e=e.element());let r=e?.ownerDocument?.defaultView||window;if(e instanceof r.HTMLElement||e instanceof r.SVGElement)return e;throw new ut(e,t,n)}function at(e,t,n){e instanceof h&&(e=e.element());let r=e.ownerDocument?.defaultView||window;if(e instanceof r.Node)return e;throw new dt(e,t,n)}function V(e,t,n,r,i,a){return[`${t}\n`,`${n}:\n${e.utils.EXPECTED_COLOR(H(U(e,r),2))}`,`${i}:\n${e.utils.RECEIVED_COLOR(H(U(e,a),2))}`].join(`
9
+ `)}function H(e,t){return ot(ct(e),t)}function ot(e,t){return e.replace(/^(?!\s*$)/gm,` `.repeat(t))}function st(e){let t=e.match(/^[ \t]*(?=\S)/gm);return t?t.reduce((e,t)=>Math.min(e,t.length),1/0):0}function ct(e){let t=st(e);if(t===0)return e;let n=RegExp(`^[ \\t]{${t}}`,`gm`);return e.replace(n,``)}function U(e,t){return typeof t==`string`?t:e.utils.stringify(t)}function lt(e,{wordConnector:t=`, `,lastWordConnector:n=` and `}={}){return[e.slice(0,-1).join(t),e.at(-1)].join(e.length>1?n:``)}class W extends Error{constructor(e,t,n,r){super(),Error.captureStackTrace&&Error.captureStackTrace(this,n);let i=``;try{i=r.utils.printWithType(`Received`,t,r.utils.printReceived)}catch{}this.message=[r.utils.matcherHint(`${r.isNot?`.not`:``}.${n.name}`,`received`,``),``,`${r.utils.RECEIVED_COLOR(`received`)} value must ${e} or a Locator that returns ${e}.`,i].join(`
10
+ `)}}class ut extends W{constructor(e,t,n){super(`an HTMLElement or an SVGElement`,e,t,n)}}class dt extends W{constructor(e,t,n){super(`a Node`,e,t,n)}}function G(e){return e instanceof HTMLFormElement?`FORM`:e.tagName.toUpperCase()}function K(e){return G(e)===`INPUT`}function ft(e){if(e)switch(G(e)){case`INPUT`:return mt(e);case`SELECT`:return pt(e);default:return e.value??gt(e)}}function pt({multiple:e,options:t}){let n=[...t].filter(e=>e.selected);if(e)return[...n].map(e=>e.value);if(n.length!==0)return n[0].value}function mt(e){switch(e.type){case`number`:return e.value===``?null:Number(e.value);case`checkbox`:return e.checked;default:return e.value}}const ht=[`meter`,`progressbar`,`slider`,`spinbutton`];function gt(e){if(ht.includes(e.getAttribute(`role`)||``))return Number(e.getAttribute(`aria-valuenow`))}function _t(e){return e.replace(/\s+/g,` `).trim()}function vt(e,t){return t instanceof RegExp?t.test(e):e.includes(String(t))}function q(e,t){if(Array.isArray(e)&&Array.isArray(t)){let n=new Set(t);for(let t of new Set(e))if(!n.has(t))return!1;return!0}}const yt=rt();function bt(e){let t=B(e,bt,this);if(!(K(t)&&[`checkbox`,`radio`].includes(t.type))&&!(yt.includes(c(t)||``)&&[`true`,`false`].includes(t.getAttribute(`aria-checked`)||``)))return{pass:!1,message:()=>`only inputs with type="checkbox" or type="radio" or elements with ${xt()} and a valid aria-checked attribute can be used with .toBeChecked(). Use .toHaveValue() instead`};let n=f(t)===!0;return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeChecked`,`element`,``),``,`Received element ${e} checked:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
11
+ `)}}}function xt(){return lt(yt.map(e=>`role="${e}"`),{lastWordConnector:` or `})}function St(e){let t=B(e,St,this);return{pass:Ct(t),message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeEmptyDOMElement`,`element`,``),``,`Received:`,` ${this.utils.printReceived(t.innerHTML)}`].join(`
12
+ `)}}function Ct(e){return[...e.childNodes].filter(e=>e.nodeType!==Node.COMMENT_NODE).length===0}function wt(e){let t=B(e,wt,this),n=J(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeDisabled`,`element`,``),``,`Received element ${e} disabled:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
13
+ `)}}}function Tt(e){let t=B(e,Tt,this),n=J(t);return{pass:!n,message:()=>{let e=n?`is not`:`is`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeEnabled`,`element`,``),``,`Received element ${e} enabled:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
14
+ `)}}}function J(e){return G(e).includes(`-`)?e.hasAttribute(`disabled`):te(e)}function Et(e){let t=null;(e!==null||!this.isNot)&&(t=it(e,Et,this));let n=t===null?!1:t.ownerDocument===t.getRootNode({composed:!0}),r=()=>`expected document not to contain element, found ${this.utils.stringify(t?.cloneNode(!0))} instead`,i=()=>`element could not be found in the document`;return{pass:n,message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeInTheDocument`,`element`,``),``,this.utils.RECEIVED_COLOR(this.isNot?r():i())].join(`
15
+ `)}}const Dt=[`FORM`,`INPUT`,`SELECT`,`TEXTAREA`];function Ot(e){return e.hasAttribute(`aria-invalid`)&&e.getAttribute(`aria-invalid`)!==`false`}function kt(e){return Dt.includes(G(e))}function At(e){let t=Ot(e);return kt(e)?t||!e.checkValidity():t}function Y(e){let t=B(e,Y,this),n=At(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeInvalid`,`element`,``),``,`Received element ${e} currently invalid:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
16
+ `)}}}function jt(e){let t=B(e,Y,this),n=!At(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeValid`,`element`,``),``,`Received element ${e} currently valid:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
17
+ `)}}}function Mt(e,t){let n=B(e,Mt,this),r=t?.ratio??0;return Nt(n,r).then(({pass:e,ratio:t})=>({pass:e,message:()=>{let i=e?`is`:`is not`,a=r>0?` with ratio ${r}`:``,o=t===void 0?``:` (actual ratio: ${t.toFixed(3)})`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeInViewport`,`element`,``),``,`Received element ${i} in viewport${a}${o}:`,` ${this.utils.printReceived(n.cloneNode(!1))}`].join(`
18
+ `)}}))}async function Nt(e,t){let n=await new Promise(t=>{let n=new IntersectionObserver(e=>{e.length>0?t(e[0].intersectionRatio):t(0),n.disconnect()});n.observe(e),requestAnimationFrame(()=>{})});return{pass:n>0&&n>t-1e-9,ratio:n}}function Pt(e){let t=B(e,Pt,this);if(!(K(t)&&t.type===`checkbox`)&&t.getAttribute(`role`)!==`checkbox`)return{pass:!1,message:()=>`only inputs with type="checkbox" or elements with role="checkbox" and a valid aria-checked attribute can be used with .toBePartiallyChecked(). Use .toHaveValue() instead`};let n=Ft(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBePartiallyChecked`,`element`,``),``,`Received element ${e} partially checked:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
19
+ `)}}}function Ft(e){let t=f(e)===`mixed`;return!t&&K(e)&&[`checkbox`,`radio`].includes(e.type)&&e.getAttribute(`aria-checked`)===`mixed`?!0:t}const It=[`SELECT`,`TEXTAREA`],Lt=[`INPUT`,`SELECT`,`TEXTAREA`],Rt=[`color`,`hidden`,`range`,`submit`,`image`,`reset`],zt=[`checkbox`,`combobox`,`gridcell`,`listbox`,`radiogroup`,`spinbutton`,`textbox`,`tree`];function Bt(e){return It.includes(G(e))&&e.hasAttribute(`required`)}function Vt(e){return G(e)===`INPUT`&&e.hasAttribute(`required`)&&(e.hasAttribute(`type`)&&!Rt.includes(e.getAttribute(`type`)||``)||!e.hasAttribute(`type`))}function Ht(e){return e.hasAttribute(`aria-required`)&&e.getAttribute(`aria-required`)===`true`&&(Lt.includes(G(e))||e.hasAttribute(`role`)&&zt.includes(e.getAttribute(`role`)||``))}function Ut(e){let t=B(e,Ut,this),n=Bt(t)||Vt(t)||Ht(t);return{pass:n,message:()=>{let e=n?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeRequired`,`element`,``),``,`Received element ${e} required:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
20
+ `)}}}function Wt(e){let t=B(e,Wt,this),n=t.ownerDocument===t.getRootNode({composed:!0});a();let r=n&&Gt(t);return o(),{pass:r,message:()=>{let e=r?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeVisible`,`element`,``),``,`Received element ${e} visible${n?``:` (element is not in the document)`}:`,` ${this.utils.printReceived(t.cloneNode(!1))}`].join(`
21
+ `)}}}function Gt(e){let t=fe(e);if(be.browser!==`webkit`)return t;let n=e.closest(`details`);return!n||e===n?t:Kt(e)}function Kt(e){let t=e;for(;t;){if(t.tagName===`DETAILS`){let n=t.querySelector(`summary`)===e;if(!t.open&&!n)return!1}t=t.parentElement}return e.offsetParent!==null}function X(e,t){let n=B(e,X,this),r=t===null?null:B(t,X,this);return{pass:n.contains(r),message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toContainElement`,`element`,`element`),``,this.utils.RECEIVED_COLOR(`${this.utils.stringify(n.cloneNode(!1))} ${this.isNot?`contains:`:`does not contain:`} ${this.utils.stringify(r?r.cloneNode(!1):null)}
22
22
  `)].join(`
23
- `)}}function Bt(e,t){let n=e.ownerDocument.createElement(`div`);return n.innerHTML=t,n.innerHTML}function Vt(e,t){let n=H(e,Vt,this);if(typeof t!=`string`)throw TypeError(`.toContainHTML() expects a string value, got ${t}`);return{pass:n.outerHTML.includes(Bt(n,t)),message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toContainHTML`,`element`,``),`Expected:`,` ${this.utils.EXPECTED_COLOR(t)}`,`Received:`,` ${this.utils.printReceived(n.cloneNode(!0))}`].join(`
24
- `)}}function Ht(e,t){let n=H(e,Ht,this),r=de(n,!1),i=n.ownerDocument.defaultView||window,a=arguments.length===1,o=!1;return o=a?r!==``:t instanceof i.RegExp?t.test(r):this.equals(r,t,this.customTesters),{pass:o,message:()=>{let e=this.isNot?`not to`:`to`;return U(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveAccessibleDescription`,`element`,``),`Expected element ${e} have accessible description`,t,`Received`,r)}}}function Ut(e,t){let n=H(e,Ut,this),r=fe(n)??``,i=n.ownerDocument.defaultView||window,a=arguments.length===1,o=!1;return o=a?r!==``:t instanceof i.RegExp?t.test(r):this.equals(r,t,this.customTesters),{pass:o,message:()=>{let e=this.isNot?`not to`:`to`;return t==null?[this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveAccessibleErrorMessage`,`element`,``),`Expected element ${e} have accessible error message, but got${this.isNot?``:` nothing`}`,this.isNot?this.utils.RECEIVED_COLOR(W(r,2)):``].filter(Boolean).join(`
23
+ `)}}function qt(e,t){let n=e.ownerDocument.createElement(`div`);return n.innerHTML=t,n.innerHTML}function Jt(e,t){let n=B(e,Jt,this);if(typeof t!=`string`)throw TypeError(`.toContainHTML() expects a string value, got ${t}`);return{pass:n.outerHTML.includes(qt(n,t)),message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toContainHTML`,`element`,``),`Expected:`,` ${this.utils.EXPECTED_COLOR(t)}`,`Received:`,` ${this.utils.printReceived(n.cloneNode(!0))}`].join(`
24
+ `)}}function Yt(e,t){let n=B(e,Yt,this),r=pe(n,!1),i=n.ownerDocument.defaultView||window,a=arguments.length===1,o=!1;return o=a?r!==``:t instanceof i.RegExp?t.test(r):this.equals(r,t,this.customTesters),{pass:o,message:()=>{let e=this.isNot?`not to`:`to`;return V(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveAccessibleDescription`,`element`,``),`Expected element ${e} have accessible description`,t,`Received`,r)}}}function Xt(e,t){let n=B(e,Xt,this),r=me(n)??``,i=n.ownerDocument.defaultView||window,a=arguments.length===1,o=!1;return o=a?r!==``:t instanceof i.RegExp?t.test(r):this.equals(r,t,this.customTesters),{pass:o,message:()=>{let e=this.isNot?`not to`:`to`;return t==null?[this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveAccessibleErrorMessage`,`element`,``),`Expected element ${e} have accessible error message, but got${this.isNot?``:` nothing`}`,this.isNot?this.utils.RECEIVED_COLOR(H(r,2)):``].filter(Boolean).join(`
25
25
 
26
- `):U(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveAccessibleErrorMessage`,`element`,``),`Expected element ${e} have accessible error message`,t,`Received`,r)}}}function X(e,t){let n=H(e,X,this),r=u(n,!1),i=arguments.length===1,a=n.ownerDocument.defaultView||window,o=!1;return o=i?r!==``:t instanceof a.RegExp?t.test(r):this.equals(r,t,this.customTesters),{pass:o,message:()=>{let e=this.isNot?`not to`:`to`;return U(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.${X.name}`,`element`,``),`Expected element ${e} have accessible name`,t,`Received`,r)}}}function Wt(e,t,n){let r=H(e,Wt,this),i=n!==void 0,a=r.hasAttribute(t),o=r.getAttribute(t);return{pass:i?a&&this.equals(o,n,this.customTesters):a,message:()=>{let e=this.isNot?`not to`:`to`,r=a?Gt(this.utils.stringify,t,o):null,s=this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveAttribute`,`element`,this.utils.printExpected(t),{secondArgument:i?this.utils.printExpected(n):void 0,comment:Kt(this.utils.stringify,t,n)});return U(this,s,`Expected the element ${e} have attribute`,Gt(this.utils.stringify,t,n),`Received`,r)}}}function Gt(e,t,n){return n===void 0?t:`${t}=${e(n)}`}function Kt(e,t,n){return n===void 0?`element.hasAttribute(${e(t)})`:`element.getAttribute(${e(t)}) === ${e(n)}`}function qt(e,...t){let n=H(e,qt,this),{expectedClassNames:r,options:i}=Jt(t),a=Z(n.getAttribute(`class`)),o=r.reduce((e,t)=>e.concat(typeof t==`string`||!t?Z(t):t),[]),s=o.some(e=>e instanceof RegExp);if(i.exact&&s)throw Error(`Exact option does not support RegExp expected class names`);return i.exact?{pass:Yt(o,a)&&o.length===a.length,message:()=>{let e=this.isNot?`not to`:`to`;return U(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveClass`,`element`,this.utils.printExpected(o.join(` `))),`Expected the element ${e} have EXACTLY defined classes`,o.join(` `),`Received`,a.join(` `))}}:o.length>0?{pass:Yt(o,a),message:()=>{let e=this.isNot?`not to`:`to`;return U(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveClass`,`element`,this.utils.printExpected(o.join(` `))),`Expected the element ${e} have class`,o.join(` `),`Received`,a.join(` `))}}:{pass:this.isNot?a.length>0:!1,message:()=>this.isNot?U(this,this.utils.matcherHint(`.not.toHaveClass`,`element`,``),`Expected the element to have classes`,`(none)`,`Received`,a.join(` `)):[this.utils.matcherHint(`.toHaveClass`,`element`),`At least one expected class must be provided.`].join(`
27
- `)}}function Jt(e){let t=e.pop(),n,r;return typeof t==`object`&&!(t instanceof RegExp)?(n=e,r=t):(n=e.concat(t),r={exact:!1}),{expectedClassNames:n,options:r}}function Z(e){return e?e.split(/\s+/).filter(e=>e.length>0):[]}function Yt(e,t){return e.every(e=>typeof e==`string`?t.includes(e):t.some(t=>e.test(t)))}function Xt(e,t){let n=H(e,Xt,this),r=G(n);if(![`SELECT`,`INPUT`,`TEXTAREA`].includes(r))throw Error(`.toHaveDisplayValue() currently supports only input, textarea or select elements, try with another matcher instead.`);if(K(n)&&[`radio`,`checkbox`].includes(n.type))throw Error(`.toHaveDisplayValue() currently does not support input[type="${n.type}"], try with another matcher instead.`);let i=Zt(r,n),a=Qt(t),o=a.filter(e=>i.some(t=>e instanceof RegExp?e.test(t):this.equals(t,String(e),this.customTesters))).length,s=o===i.length,c=o===a.length;return{pass:s&&c,message:()=>U(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveDisplayValue`,`element`,``),`Expected element ${this.isNot?`not `:``}to have display value`,t,`Received`,i)}}function Zt(e,t){return e===`SELECT`?Array.from(t).filter(e=>e.selected).map(e=>e.textContent||``):[t.value]}function Qt(e){return Array.isArray(e)?e:[e]}function $t(e){let t=H(e,$t,this);return{pass:t.ownerDocument.activeElement===t,message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveFocus`,`element`,``),``,...this.isNot?[`Received element is focused:`,` ${this.utils.printReceived(t)}`]:[`Expected element with focus:`,` ${this.utils.printExpected(t)}`,`Received element with focus:`,` ${this.utils.printReceived(t.ownerDocument.activeElement)}`]].join(`
28
- `)}}function en(e,t){let n=H(e,en,this),r=n.ownerDocument.defaultView||window;if(!(n instanceof r.HTMLFieldSetElement)&&!(n instanceof r.HTMLFormElement))throw TypeError(`toHaveFormValues must be called on a form or a fieldset, instead got ${G(n)}`);if(!t||typeof t!=`object`)throw TypeError(`toHaveFormValues must be called with an object of expected form values. Got ${t}`);let i=an(n);return{pass:Object.entries(t).every(([e,t])=>this.equals(i[e],t,[q,...this.customTesters])),message:()=>{let e=this.isNot?`not to`:`to`,n=`${this.isNot?`.not`:``}.toHaveFormValues`,r={};for(let e in i)Object.hasOwn(t,e)&&(r[e]=i[e]);return[this.utils.matcherHint(n,`element`,``),`Expected the element ${e} have form values`,this.utils.diff(t,r)].join(`
26
+ `):V(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveAccessibleErrorMessage`,`element`,``),`Expected element ${e} have accessible error message`,t,`Received`,r)}}}function Z(e,t){let n=B(e,Z,this),r=u(n,!1),i=arguments.length===1,a=n.ownerDocument.defaultView||window,o=!1;return o=i?r!==``:t instanceof a.RegExp?t.test(r):this.equals(r,t,this.customTesters),{pass:o,message:()=>{let e=this.isNot?`not to`:`to`;return V(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.${Z.name}`,`element`,``),`Expected element ${e} have accessible name`,t,`Received`,r)}}}function Zt(e,t,n){let r=B(e,Zt,this),i=n!==void 0,a=r.hasAttribute(t),o=r.getAttribute(t);return{pass:i?a&&this.equals(o,n,this.customTesters):a,message:()=>{let e=this.isNot?`not to`:`to`,r=a?Qt(this.utils.stringify,t,o):null,s=this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveAttribute`,`element`,this.utils.printExpected(t),{secondArgument:i?this.utils.printExpected(n):void 0,comment:$t(this.utils.stringify,t,n)});return V(this,s,`Expected the element ${e} have attribute`,Qt(this.utils.stringify,t,n),`Received`,r)}}}function Qt(e,t,n){return n===void 0?t:`${t}=${e(n)}`}function $t(e,t,n){return n===void 0?`element.hasAttribute(${e(t)})`:`element.getAttribute(${e(t)}) === ${e(n)}`}function en(e,...t){let n=B(e,en,this),{expectedClassNames:r,options:i}=tn(t),a=nn(n.getAttribute(`class`)),o=r.reduce((e,t)=>e.concat(typeof t==`string`||!t?nn(t):t),[]),s=o.some(e=>e instanceof RegExp);if(i.exact&&s)throw Error(`Exact option does not support RegExp expected class names`);return i.exact?{pass:rn(o,a)&&o.length===a.length,message:()=>{let e=this.isNot?`not to`:`to`;return V(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveClass`,`element`,this.utils.printExpected(o.join(` `))),`Expected the element ${e} have EXACTLY defined classes`,o.join(` `),`Received`,a.join(` `))}}:o.length>0?{pass:rn(o,a),message:()=>{let e=this.isNot?`not to`:`to`;return V(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveClass`,`element`,this.utils.printExpected(o.join(` `))),`Expected the element ${e} have class`,o.join(` `),`Received`,a.join(` `))}}:{pass:this.isNot?a.length>0:!1,message:()=>this.isNot?V(this,this.utils.matcherHint(`.not.toHaveClass`,`element`,``),`Expected the element to have classes`,`(none)`,`Received`,a.join(` `)):[this.utils.matcherHint(`.toHaveClass`,`element`),`At least one expected class must be provided.`].join(`
27
+ `)}}function tn(e){let t=e.pop(),n,r;return typeof t==`object`&&!(t instanceof RegExp)?(n=e,r=t):(n=e.concat(t),r={exact:!1}),{expectedClassNames:n,options:r}}function nn(e){return e?e.split(/\s+/).filter(e=>e.length>0):[]}function rn(e,t){return e.every(e=>typeof e==`string`?t.includes(e):t.some(t=>e.test(t)))}function an(e,t){let n=B(e,an,this),r=G(n);if(![`SELECT`,`INPUT`,`TEXTAREA`].includes(r))throw Error(`.toHaveDisplayValue() currently supports only input, textarea or select elements, try with another matcher instead.`);if(K(n)&&[`radio`,`checkbox`].includes(n.type))throw Error(`.toHaveDisplayValue() currently does not support input[type="${n.type}"], try with another matcher instead.`);let i=on(r,n),a=sn(t),o=a.filter(e=>i.some(t=>e instanceof RegExp?e.test(t):this.equals(t,String(e),this.customTesters))).length,s=o===i.length,c=o===a.length;return{pass:s&&c,message:()=>V(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveDisplayValue`,`element`,``),`Expected element ${this.isNot?`not `:``}to have display value`,t,`Received`,i)}}function on(e,t){return e===`SELECT`?Array.from(t).filter(e=>e.selected).map(e=>e.textContent||``):[t.value]}function sn(e){return Array.isArray(e)?e:[e]}function cn(e){let t=B(e,cn,this);return{pass:t.ownerDocument.activeElement===t,message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveFocus`,`element`,``),``,...this.isNot?[`Received element is focused:`,` ${this.utils.printReceived(t)}`]:[`Expected element with focus:`,` ${this.utils.printExpected(t)}`,`Received element with focus:`,` ${this.utils.printReceived(t.ownerDocument.activeElement)}`]].join(`
28
+ `)}}function ln(e,t){let n=B(e,ln,this),r=n.ownerDocument.defaultView||window;if(!(n instanceof r.HTMLFieldSetElement)&&!(n instanceof r.HTMLFormElement))throw TypeError(`toHaveFormValues must be called on a form or a fieldset, instead got ${G(n)}`);if(!t||typeof t!=`object`)throw TypeError(`toHaveFormValues must be called with an object of expected form values. Got ${t}`);let i=pn(n);return{pass:Object.entries(t).every(([e,t])=>this.equals(i[e],t,[q,...this.customTesters])),message:()=>{let e=this.isNot?`not to`:`to`,n=`${this.isNot?`.not`:``}.toHaveFormValues`,r={};for(let e in i)Object.hasOwn(t,e)&&(r[e]=i[e]);return[this.utils.matcherHint(n,`element`,``),`Expected the element ${e} have form values`,this.utils.diff(t,r)].join(`
29
29
 
30
- `)}}}function tn(e){let t=``;for(let n of e){if(t&&t!==n.type)throw Error(`Multiple form elements with the same name must be of the same type`);t=n.type}switch(t){case`radio`:{let t=e.find(e=>e.checked);return t?t.value:void 0}case`checkbox`:return e.filter(e=>e.checked).map(e=>e.value);default:return e.map(e=>e.value)}}function nn(e,t){let n=[...e.querySelectorAll(`[name="${pe(t)}"]`)];if(n.length!==0)switch(n.length){case 1:return it(n[0]);default:return tn(n)}}function rn(e){return/\[\]$/.test(e)?e.slice(0,-2):e}function an(e){let t={};for(let n of e.elements){if(!(`name`in n))continue;let r=n.name;t[rn(r)]=nn(e,r)}return t}function on(e,t){let n=H(e,on,this);a();let r=c(n);return o(),{pass:r===t,message:()=>{let e=this.isNot?`not to`:`to`;return U(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveRole`,`element`,``),`Expected element ${e} have role`,t,`Received`,r)}}}function sn(e,t){let n=H(e,sn,this),r=t!==void 0;if(r&&typeof t!=`string`)throw Error(`expected selection must be a string or undefined`);let i=cn(n);return{pass:r?this.equals(i,t,[q,...this.customTesters]):!!i,message:()=>{let e=this.isNot?`not to`:`to`,n=this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveSelection`,`element`,t);return U(this,n,`Expected the element ${e} have selection`,r?t:`(any)`,`Received`,i)}}}function cn(e){let t=e.ownerDocument.getSelection();if(!t)return``;if([`INPUT`,`TEXTAREA`].includes(G(e))){let t=e;return[`radio`,`checkbox`].includes(t.type)||t.selectionStart==null||t.selectionEnd==null?``:t.value.toString().substring(t.selectionStart,t.selectionEnd)}if(t.anchorNode===null||t.focusNode===null)return``;let n=t.getRangeAt(0),r=e.ownerDocument.createRange();if(t.containsNode(e,!1))r.selectNodeContents(e),t.removeAllRanges(),t.addRange(r);else if(!(e.contains(t.anchorNode)&&e.contains(t.focusNode))){let i=e===n.startContainer||e.contains(n.startContainer),a=e===n.endContainer||e.contains(n.endContainer);t.removeAllRanges(),(i||a)&&(r.selectNodeContents(e),i&&r.setStart(n.startContainer,n.startOffset),a&&r.setEnd(n.endContainer,n.endOffset),t.addRange(r))}let i=t.toString();return t.removeAllRanges(),t.addRange(n),i}const Q=_e.config.browser.name,$=new Set(`backgroundPosition.background-position.bottom.left.right.top.height.width.margin-bottom.marginBottom.margin-left.marginLeft.margin-right.marginRight.margin-top.marginTop.min-height.minHeight.min-width.minWidth.padding-bottom.padding-left.padding-right.padding-top.text-indent.paddingBottom.paddingLeft.paddingRight.paddingTop.textIndent`.split(`.`));function ln(e,t){let n=H(e,ln,this),{getComputedStyle:r}=n.ownerDocument.defaultView,i=typeof t==`object`?un(t):dn(t),a=r(n),o=new Set(Array.from(n.style));return{pass:pn(i,n,a,o),message:()=>{let e=`${this.isNot?`.not`:``}.toHaveStyle`,t=new Set(Object.keys(i)),r=fn(Array.from(a).filter(e=>t.has(e)).reduce((e,t)=>(e[t]=(o.has(t)&&$.has(t)?n.style:a)[t],e),{})),s=r===``?`Expected styles could not be parsed by the browser. Did you make a typo?`:this.utils.diff(fn(i),r);return[this.utils.matcherHint(e,`element`,``),s].join(`
30
+ `)}}}function un(e){let t=``;for(let n of e){if(t&&t!==n.type)throw Error(`Multiple form elements with the same name must be of the same type`);t=n.type}switch(t){case`radio`:{let t=e.find(e=>e.checked);return t?t.value:void 0}case`checkbox`:return e.filter(e=>e.checked).map(e=>e.value);default:return e.map(e=>e.value)}}function dn(e,t){let n=[...e.querySelectorAll(`[name="${he(t)}"]`)];if(n.length!==0)switch(n.length){case 1:return ft(n[0]);default:return un(n)}}function fn(e){return/\[\]$/.test(e)?e.slice(0,-2):e}function pn(e){let t={};for(let n of e.elements){if(!(`name`in n))continue;let r=n.name;t[fn(r)]=dn(e,r)}return t}function mn(e,t){let n=B(e,mn,this);a();let r=c(n);return o(),{pass:r===t,message:()=>{let e=this.isNot?`not to`:`to`;return V(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveRole`,`element`,``),`Expected element ${e} have role`,t,`Received`,r)}}}function hn(e,t){let n=B(e,hn,this),r=t!==void 0;if(r&&typeof t!=`string`)throw Error(`expected selection must be a string or undefined`);let i=gn(n);return{pass:r?this.equals(i,t,[q,...this.customTesters]):!!i,message:()=>{let e=this.isNot?`not to`:`to`,n=this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveSelection`,`element`,t);return V(this,n,`Expected the element ${e} have selection`,r?t:`(any)`,`Received`,i)}}}function gn(e){let t=e.ownerDocument.getSelection();if(!t)return``;if([`INPUT`,`TEXTAREA`].includes(G(e))){let t=e;return[`radio`,`checkbox`].includes(t.type)||t.selectionStart==null||t.selectionEnd==null?``:t.value.toString().substring(t.selectionStart,t.selectionEnd)}if(t.anchorNode===null||t.focusNode===null)return``;let n=t.getRangeAt(0),r=e.ownerDocument.createRange();if(t.containsNode(e,!1))r.selectNodeContents(e),t.removeAllRanges(),t.addRange(r);else if(!(e.contains(t.anchorNode)&&e.contains(t.focusNode))){let i=e===n.startContainer||e.contains(n.startContainer),a=e===n.endContainer||e.contains(n.endContainer);t.removeAllRanges(),(i||a)&&(r.selectNodeContents(e),i&&r.setStart(n.startContainer,n.startOffset),a&&r.setEnd(n.endContainer,n.endOffset),t.addRange(r))}let i=t.toString();return t.removeAllRanges(),t.addRange(n),i}const Q=be.config.browser.name,$=new Set(`backgroundPosition.background-position.bottom.left.right.top.height.width.margin-bottom.marginBottom.margin-left.marginLeft.margin-right.marginRight.margin-top.marginTop.min-height.minHeight.min-width.minWidth.padding-bottom.padding-left.padding-right.padding-top.text-indent.paddingBottom.paddingLeft.paddingRight.paddingTop.textIndent`.split(`.`));function _n(e,t){let n=B(e,_n,this),{getComputedStyle:r}=n.ownerDocument.defaultView,i=typeof t==`object`?vn(t):yn(t),a=r(n),o=new Set(Array.from(n.style));return{pass:xn(i,n,a,o),message:()=>{let e=`${this.isNot?`.not`:``}.toHaveStyle`,t=new Set(Object.keys(i)),r=bn(Array.from(a).filter(e=>t.has(e)).reduce((e,t)=>(e[t]=(o.has(t)&&$.has(t)?n.style:a)[t],e),{})),s=r===``?`Expected styles could not be parsed by the browser. Did you make a typo?`:this.utils.diff(bn(i),r);return[this.utils.matcherHint(e,`element`,``),s].join(`
31
31
 
32
- `)}}}function un(e){let t=Q===`chrome`||Q===`chromium`?document:document.implementation.createHTMLDocument(``),n=t.createElement(`div`);t.body.appendChild(n);let r=Object.keys(e);r.forEach(t=>{n.style[t]=e[t]});let i={},a=window.getComputedStyle(n);return r.forEach(e=>{let t=($.has(e)?n.style:a)[e];t!=null&&(i[e]=t)}),n.remove(),i}function dn(e){let t=Q===`chrome`||Q===`chromium`||Q===`webkit`?document:document.implementation.createHTMLDocument(``),n=t.createElement(`div`);n.setAttribute(`style`,e.replace(/\n/g,``)),t.body.appendChild(n);let r=window.getComputedStyle(n),i=Array.from(n.style).reduce((e,t)=>(e[t]=$.has(t)?n.style.getPropertyValue(t):r.getPropertyValue(t),e),{});return n.remove(),i}function fn(e){return Object.keys(e).sort().map(t=>`${t}: ${e[t]};`).join(`
33
- `)}function pn(e,t,n,r){let i=Object.keys(e);return i.length?i.every(i=>{let a=e[i],o=i.startsWith(`--`),s=[i];return o||s.push(i.toLowerCase()),s.some(e=>{let o=r.has(i)&&$.has(i)?t.style:n;return o[e]===a||o.getPropertyValue(e)===a})}):!1}function mn(e,t,n={normalizeWhitespace:!0}){let r=Ye(e,mn,this),i=n.normalizeWhitespace?lt(r.textContent||``):(r.textContent||``).replace(/\u00A0/g,` `),a=i!==``&&t===``;return{pass:!a&&ut(i,t),message:()=>{let e=this.isNot?`not to`:`to`;return U(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveTextContent`,`element`,``),a?`Checking with empty string will always match, use .toBeEmptyDOMElement() instead`:`Expected element ${e} have text content`,t,`Received`,i)}}}function hn(e,t){let n=H(e,hn,this);if(K(n)&&[`checkbox`,`radio`].includes(n.type))throw Error(`input with type=checkbox or type=radio cannot be used with .toHaveValue(). Use .toBeChecked() for type=checkbox or .toHaveFormValues() instead`);let r=it(n),i=t!==void 0,a=t,o=r;return t==r&&t!==r&&(a=`${t} (${typeof t})`,o=`${r} (${typeof r})`),{pass:i?this.equals(r,t,[q,...this.customTesters]):!!r,message:()=>{let e=this.isNot?`not to`:`to`,n=this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveValue`,`element`,t);return U(this,n,`Expected the element ${e} have value`,i?a:`(any)`,`Received`,o)}}}const gn=new Map([]);async function _n(e,n,r=typeof n==`object`?n:{}){if(this.isNot)throw Error(`'toMatchScreenshot' cannot be used with "not"`);if(this.task===void 0||this.currentTestName===void 0)throw Error(`'toMatchScreenshot' cannot be used without test context`);let i=`${this.task.result?.repeatCount??0}${this.testPath}${this.currentTestName}`,a=gn.get(i);a===void 0&&(a={current:0},gn.set(i,a)),a.current+=1;let o=typeof n==`string`?n:`${this.currentTestName} ${a.current}`,[s,...c]=await Promise.all([me(e,r),...r.screenshotOptions&&`mask`in r.screenshotOptions?r.screenshotOptions.mask.map(e=>me(e,r)):[]]),l=r.screenshotOptions&&`mask`in r.screenshotOptions?{...r,screenshotOptions:{...r.screenshotOptions,mask:c}}:r,u=await _().commands.triggerCommand(`__vitest_screenshotMatcher`,[o,this.currentTestName,{element:s,...l}]);if(u.pass===!1){let e=[];u.reference&&e.push({name:`reference`,...u.reference}),u.actual&&e.push({name:`actual`,...u.actual}),u.diff&&e.push({name:`diff`,...u.diff}),e.length>0&&await t(this.task,{type:`internal:toMatchScreenshot`,kind:`visual-regression`,message:u.message,attachments:e})}return{pass:u.pass,message:()=>u.pass?``:[this.utils.matcherHint(`toMatchScreenshot`,`element`,``),``,u.message,u.reference?`\nReference screenshot:\n ${this.utils.EXPECTED_COLOR(u.reference.path)}`:null,u.actual?`\nActual screenshot:\n ${this.utils.RECEIVED_COLOR(u.actual.path)}`:null,u.diff?this.utils.DIM_COLOR(`\nDiff image:\n ${u.diff.path}`):null,``].filter(e=>e!==null).join(`
34
- `),meta:{outcome:u.outcome}}}const vn={toBeDisabled:gt,toBeEnabled:_t,toBeEmptyDOMElement:mt,toBeInTheDocument:yt,toBeInViewport:Tt,toBeInvalid:J,toBeRequired:It,toBeValid:wt,toBeVisible:Lt,toContainElement:Y,toContainHTML:Vt,toHaveAccessibleDescription:Ht,toHaveAccessibleErrorMessage:Ut,toHaveAccessibleName:X,toHaveAttribute:Wt,toHaveClass:qt,toHaveFocus:$t,toHaveFormValues:en,toHaveStyle:ln,toHaveTextContent:mn,toHaveValue:hn,toHaveDisplayValue:Xt,toBeChecked:ft,toBePartiallyChecked:Dt,toHaveRole:on,toHaveSelection:sn,toMatchScreenshot:_n},yn=Symbol.for(`$$vitest:locator`);function bn(e,t){if(e!=null&&!(e instanceof HTMLElement)&&!(e instanceof SVGElement)&&!(yn in e))throw Error(`Invalid element or locator: ${e}. Expected an instance of HTMLElement, SVGElement or Locator, received ${i(e)}`);let a=n.poll(function(){if(e instanceof Element||e==null)return e;let t=r.util.flag(this,`negate`),n=r.util.flag(this,`_name`);if(t&&n===`toBeInTheDocument`)return e.query();if(n===`toHaveLength`)return e.elements();if(n===`toMatchScreenshot`&&!r.util.flag(this,`_poll.assert_once`)&&r.util.flag(this,`_poll.assert_once`,!0),r.util.flag(this,`_isLastPollAttempt`))return e.element();let i=e.query();if(!i)throw Error(`Cannot find element with locator: ${JSON.stringify(e)}`);return i},he(t));r.util.flag(a,`_poll.element`,!0);let o=ge().current;if(o&&_().activeTraceTaskIds.has(o.id)){let t=Error(`__vitest_mark_trace__`);r.util.flag(a,`_poll.onSettled`,async n=>{let i=r.util.flag(n.assertion,`negate`),a=r.util.flag(n.assertion,`_name`)||`<unknown>`,o=`expect.element().${i?`not.`:``}${a}`,s=n.status===`fail`?`${o} [ERROR]`:o,c=!e||e instanceof Element?void 0:e.selector;await _().commands.triggerCommand(`__vitest_markTrace`,[{name:s,selector:c,stack:t.stack}],t)})}return a}n.extend(vn),n.extend(Ke),n.element=bn;
32
+ `)}}}function vn(e){let t=Q===`chrome`||Q===`chromium`?document:document.implementation.createHTMLDocument(``),n=t.createElement(`div`);t.body.appendChild(n);let r=Object.keys(e);r.forEach(t=>{n.style[t]=e[t]});let i={},a=window.getComputedStyle(n);return r.forEach(e=>{let t=($.has(e)?n.style:a)[e];t!=null&&(i[e]=t)}),n.remove(),i}function yn(e){let t=Q===`chrome`||Q===`chromium`||Q===`webkit`?document:document.implementation.createHTMLDocument(``),n=t.createElement(`div`);n.setAttribute(`style`,e.replace(/\n/g,``)),t.body.appendChild(n);let r=window.getComputedStyle(n),i=Array.from(n.style).reduce((e,t)=>(e[t]=$.has(t)?n.style.getPropertyValue(t):r.getPropertyValue(t),e),{});return n.remove(),i}function bn(e){return Object.keys(e).sort().map(t=>`${t}: ${e[t]};`).join(`
33
+ `)}function xn(e,t,n,r){let i=Object.keys(e);return i.length?i.every(i=>{let a=e[i],o=i.startsWith(`--`),s=[i];return o||s.push(i.toLowerCase()),s.some(e=>{let o=r.has(i)&&$.has(i)?t.style:n;return o[e]===a||o.getPropertyValue(e)===a})}):!1}function Sn(e,t,n={normalizeWhitespace:!0}){let r=at(e,Sn,this),i=n.normalizeWhitespace?_t(r.textContent||``):(r.textContent||``).replace(/\u00A0/g,` `),a=i!==``&&t===``;return{pass:!a&&vt(i,t),message:()=>{let e=this.isNot?`not to`:`to`;return V(this,this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveTextContent`,`element`,``),a?`Checking with empty string will always match, use .toBeEmptyDOMElement() instead`:`Expected element ${e} have text content`,t,`Received`,i)}}}function Cn(e,t){let n=B(e,Cn,this);if(K(n)&&[`checkbox`,`radio`].includes(n.type))throw Error(`input with type=checkbox or type=radio cannot be used with .toHaveValue(). Use .toBeChecked() for type=checkbox or .toHaveFormValues() instead`);let r=ft(n),i=t!==void 0,a=t,o=r;return t==r&&t!==r&&(a=`${t} (${typeof t})`,o=`${r} (${typeof r})`),{pass:i?this.equals(r,t,[q,...this.customTesters]):!!r,message:()=>{let e=this.isNot?`not to`:`to`,n=this.utils.matcherHint(`${this.isNot?`.not`:``}.toHaveValue`,`element`,t);return V(this,n,`Expected the element ${e} have value`,i?a:`(any)`,`Received`,o)}}}const wn=new Map([]);async function Tn(e,n,r=typeof n==`object`?n:{}){if(this.isNot)throw Error(`'toMatchScreenshot' cannot be used with "not"`);if(this.task===void 0||this.currentTestName===void 0)throw Error(`'toMatchScreenshot' cannot be used without test context`);let i=`${this.task.result?.repeatCount??0}${this.testPath}${this.currentTestName}`,a=wn.get(i);a===void 0&&(a={current:0},wn.set(i,a)),a.current+=1;let o=typeof n==`string`?n:`${this.currentTestName} ${a.current}`,[s,...c]=await Promise.all([ge(e,r),...r.screenshotOptions&&`mask`in r.screenshotOptions?r.screenshotOptions.mask.map(e=>ge(e,r)):[]]),l=r.screenshotOptions&&`mask`in r.screenshotOptions?{...r,screenshotOptions:{...r.screenshotOptions,mask:c}}:r,u=await m().commands.triggerCommand(`__vitest_screenshotMatcher`,[o,this.currentTestName,{element:s,...l}]);if(u.pass===!1){let e=[];u.reference&&e.push({name:`reference`,...u.reference}),u.actual&&e.push({name:`actual`,...u.actual}),u.diff&&e.push({name:`diff`,...u.diff}),e.length>0&&await t(this.task,{type:`internal:toMatchScreenshot`,kind:`visual-regression`,message:u.message,attachments:e})}return{pass:u.pass,message:()=>u.pass?``:[this.utils.matcherHint(`toMatchScreenshot`,`element`,``),``,u.message,u.reference?`\nReference screenshot:\n ${this.utils.EXPECTED_COLOR(u.reference.path)}`:null,u.actual?`\nActual screenshot:\n ${this.utils.RECEIVED_COLOR(u.actual.path)}`:null,u.diff?this.utils.DIM_COLOR(`\nDiff image:\n ${u.diff.path}`):null,``].filter(e=>e!==null).join(`
34
+ `),meta:{outcome:u.outcome}}}const En={toBeDisabled:wt,toBeEnabled:Tt,toBeEmptyDOMElement:St,toBeInTheDocument:Et,toBeInViewport:Mt,toBeInvalid:Y,toBeRequired:Ut,toBeValid:jt,toBeVisible:Wt,toContainElement:X,toContainHTML:Jt,toHaveAccessibleDescription:Yt,toHaveAccessibleErrorMessage:Xt,toHaveAccessibleName:Z,toHaveAttribute:Zt,toHaveClass:en,toHaveFocus:cn,toHaveFormValues:ln,toHaveStyle:_n,toHaveTextContent:Sn,toHaveValue:Cn,toHaveDisplayValue:an,toBeChecked:bt,toBePartiallyChecked:Pt,toHaveRole:mn,toHaveSelection:hn,toMatchScreenshot:Tn},Dn=Symbol.for(`$$vitest:locator`);function On(e,t){if(e!=null&&!(e instanceof HTMLElement)&&!(e instanceof SVGElement)&&!(Dn in e))throw Error(`Invalid element or locator: ${e}. Expected an instance of HTMLElement, SVGElement or Locator, received ${i(e)}`);let a=n.poll(function(){if(e instanceof Element||e==null)return e;let t=r.util.flag(this,`negate`),n=r.util.flag(this,`_name`);if(t&&n===`toBeInTheDocument`)return e.query();if(n===`toHaveLength`)return e.elements();if(n===`toMatchScreenshot`&&!r.util.flag(this,`_poll.assert_once`)&&r.util.flag(this,`_poll.assert_once`,!0),r.util.flag(this,`_isLastPollAttempt`))return e.element();let i=e.query();if(!i)throw Error(`Cannot find element with locator: ${JSON.stringify(e)}`);return i},_e(t));r.util.flag(a,`_poll.element`,!0);let o=ve().current,s=!!o&&m().activeTraceTaskIds.has(o.id),c=!!o&&m().browserTraceAttempts.has(o.id);if(o&&(s||c)){let t=Error(`__vitest_mark_trace__`),n=g();r.util.flag(a,`_poll.onSettled`,async i=>{let a=r.util.flag(i.assertion,`negate`),l=r.util.flag(i.assertion,`_name`)||`<unknown>`,u=`expect.element().${a?`not.`:``}${l}`,d=i.status===`fail`?`${u} [ERROR]`:u,f=!e||e instanceof Element?void 0:e.selector;c&&ye(o,{name:d,kind:`expect`,status:i.status,startTime:n,duration:g()-n,selector:f,stack:t.stack}),s&&await m().commands.triggerCommand(`__vitest_markTrace`,[{name:d,selector:f,stack:t.stack}],t)})}return a}n.extend(En),n.extend(z),n.element=On;