@vitest/browser 3.2.0-beta.1 → 3.2.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/context.d.ts CHANGED
@@ -29,12 +29,19 @@ export interface ScreenshotOptions {
29
29
  element?: Element | Locator
30
30
  /**
31
31
  * Path relative to the current test file.
32
+ * @default `__screenshots__/${testFileName}/${testName}.png`
32
33
  */
33
34
  path?: string
34
35
  /**
35
36
  * Will also return the base64 encoded screenshot alongside the path.
36
37
  */
37
38
  base64?: boolean
39
+ /**
40
+ * Keep the screenshot on the file system. If file is not saved,
41
+ * `page.screenshot` always returns `base64` screenshot.
42
+ * @default true
43
+ */
44
+ save?: boolean
38
45
  }
39
46
 
40
47
  export interface BrowserCommands {
@@ -552,11 +559,16 @@ export interface BrowserPage extends LocatorSelectors {
552
559
  * Make a screenshot of the test iframe or a specific element.
553
560
  * @returns Path to the screenshot file or path and base64.
554
561
  */
562
+ screenshot(options: Omit<ScreenshotOptions, 'save'> & { save: false }): Promise<string>
555
563
  screenshot(options: Omit<ScreenshotOptions, 'base64'> & { base64: true }): Promise<{
556
564
  path: string
557
565
  base64: string
558
566
  }>
559
- screenshot(options?: ScreenshotOptions): Promise<string>
567
+ screenshot(options?: Omit<ScreenshotOptions, 'base64'>): Promise<string>
568
+ screenshot(options?: ScreenshotOptions): Promise<string | {
569
+ path: string
570
+ base64: string
571
+ }>
560
572
  /**
561
573
  * Extend default `page` object with custom methods.
562
574
  */
@@ -568,5 +580,14 @@ export interface BrowserPage extends LocatorSelectors {
568
580
  elementLocator(element: Element): Locator
569
581
  }
570
582
 
583
+ export interface BrowserLocators {
584
+ createElementLocators(element: Element): LocatorSelectors
585
+ extend(methods: {
586
+ [K in keyof LocatorSelectors]?: (...args: Parameters<LocatorSelectors[K]>) => ReturnType<LocatorSelectors[K]> | string
587
+ }): void
588
+ }
589
+
590
+ export const locators: BrowserLocators
591
+
571
592
  export const page: BrowserPage
572
593
  export const cdp: () => CDPSession
package/context.js CHANGED
@@ -6,6 +6,7 @@ export const server = null
6
6
  export const userEvent = null
7
7
  export const cdp = null
8
8
  export const commands = null
9
+ export const locators = null
9
10
 
10
11
  const pool = globalThis.__vitest_worker__?.ctx?.pool
11
12
 
@@ -13,7 +13,7 @@
13
13
  ]
14
14
  },
15
15
  "tester/tester.html": {
16
- "file": "__vitest_browser__/tester-D-yxPeOx.js",
16
+ "file": "__vitest_browser__/tester-CrBz0KXk.js",
17
17
  "name": "tester",
18
18
  "src": "tester/tester.html",
19
19
  "isEntry": true,
@@ -4,8 +4,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
4
4
  import { b as resolve, e as executor, c as getWorkerState, a as getConfig, g as getBrowserState } from "./utils-Owv5OOOf.js";
5
5
  import { onCancel, globalChannel, channel, client } from "@vitest/browser/client";
6
6
  import { userEvent, page, server } from "@vitest/browser/context";
7
- import { loadDiffConfig, loadSnapshotSerializers, takeCoverageInsideWorker, setupCommonEnv, startCoverageInsideWorker, stopCoverageInsideWorker, startTests, collectTests, SpyModule } from "vitest/browser";
8
- import { getSafeTimers, TraceMap, originalPositionFor, stringify, format } from "vitest/utils";
7
+ import { getSafeTimers, TraceMap, originalPositionFor, loadDiffConfig, loadSnapshotSerializers, takeCoverageInsideWorker, stringify, format, setupCommonEnv, startCoverageInsideWorker, stopCoverageInsideWorker, startTests, collectTests, SpyModule } from "vitest/internal/browser";
9
8
  import { VitestTestRunner, NodeBenchmarkRunner } from "vitest/runners";
10
9
  const scriptRel = "modulepreload";
11
10
  const assetsURL = function(dep) {
@@ -5,7 +5,7 @@
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-D-yxPeOx.js"></script>
8
+ <script type="module" crossorigin src="/__vitest_browser__/tester-CrBz0KXk.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/__vitest_browser__/utils-Owv5OOOf.js">
10
10
  </head>
11
11
  <body>
package/dist/context.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { getElementLocatorSelectors } from '@vitest/browser/utils';
2
+
1
3
  function ensureAwaited(promise) {
2
4
  const test = getWorkerState().current;
3
5
  if (!test || test.type !== "test") {
@@ -384,9 +386,12 @@ const page = {
384
386
  elementLocator() {
385
387
  throw new Error(`Method "elementLocator" is not implemented in the "${provider}" provider.`);
386
388
  },
389
+ _createLocator() {
390
+ throw new Error(`Method "_createLocator" is not implemented in the "${provider}" provider.`);
391
+ },
387
392
  extend(methods) {
388
393
  for (const key in methods) {
389
- page[key] = methods[key];
394
+ page[key] = methods[key].bind(page);
390
395
  }
391
396
  return page;
392
397
  }
@@ -412,5 +417,28 @@ function convertToSelector(elementOrLocator) {
412
417
  function getTaskFullName(task) {
413
418
  return task.suite ? `${getTaskFullName(task.suite)} ${task.name}` : task.name;
414
419
  }
420
+ const locators = {
421
+ createElementLocators: getElementLocatorSelectors,
422
+ extend(methods) {
423
+ const Locator = page._createLocator("css=body").constructor;
424
+ for (const method in methods) {
425
+ const cb = methods[method];
426
+ Locator.prototype[method] = function(...args) {
427
+ const selectorOrLocator = cb.call(this, ...args);
428
+ if (typeof selectorOrLocator === "string") {
429
+ return this.locator(selectorOrLocator);
430
+ }
431
+ return selectorOrLocator;
432
+ };
433
+ page[method] = function(...args) {
434
+ const selectorOrLocator = cb.call(this, ...args);
435
+ if (typeof selectorOrLocator === "string") {
436
+ return page._createLocator(selectorOrLocator);
437
+ }
438
+ return selectorOrLocator;
439
+ };
440
+ }
441
+ }
442
+ };
415
443
 
416
- export { cdp, createUserEvent, page };
444
+ export { cdp, createUserEvent, locators, page };
@@ -1,4 +1,4 @@
1
- import{expect,chai}from"vitest";import{k as kAriaCheckedRoles,i as getAriaChecked,j as getAriaRole,l as getAriaDisabled,m as beginAriaCaches,n as endAriaCaches,o as isElementVisible$1,p as getElementAccessibleDescription,q as getElementAccessibleErrorMessage,r as getElementAccessibleName,s as cssEscape}from"./public-utils-DUr23h1p.js";import{L as Locator,p as processTimeoutOptions}from"./index-C3ICQ6zz.js";import{server}from"@vitest/browser/context";import"vitest/utils";function getAriaCheckedRoles(){return[...kAriaCheckedRoles]}function getElementFromUserInput(_,K,q){if(_ instanceof Locator&&(_=_.element()),_ instanceof HTMLElement||_ instanceof SVGElement)return _;throw new UserInputElementTypeError(_,K,q)}function getNodeFromUserInput(_,K,q){if(_ instanceof Locator&&(_=_.element()),_ instanceof Node)return _;throw new UserInputNodeTypeError(_,K,q)}function getMessage(_,K,q,J,Y,X){return[`${K}\n`,`${q}:\n${_.utils.EXPECTED_COLOR(redent(display(_,J),2))}`,`${Y}:\n${_.utils.RECEIVED_COLOR(redent(display(_,X),2))}`].join(`
1
+ import{expect,chai}from"vitest";import{k as kAriaCheckedRoles,i as getAriaChecked,j as getAriaRole,l as getAriaDisabled,m as beginAriaCaches,n as endAriaCaches,o as isElementVisible$1,p as getElementAccessibleDescription,q as getElementAccessibleErrorMessage,r as getElementAccessibleName,s as cssEscape}from"./public-utils-DJ-T0CfF.js";import{L as Locator,p as processTimeoutOptions}from"./index-D0pxULUR.js";import{server}from"@vitest/browser/context";import"vitest/internal/browser";function getAriaCheckedRoles(){return[...kAriaCheckedRoles]}function getElementFromUserInput(_,K,q){if(_ instanceof Locator&&(_=_.element()),_ instanceof HTMLElement||_ instanceof SVGElement)return _;throw new UserInputElementTypeError(_,K,q)}function getNodeFromUserInput(_,K,q){if(_ instanceof Locator&&(_=_.element()),_ instanceof Node)return _;throw new UserInputNodeTypeError(_,K,q)}function getMessage(_,K,q,J,Y,X){return[`${K}\n`,`${q}:\n${_.utils.EXPECTED_COLOR(redent(display(_,J),2))}`,`${Y}:\n${_.utils.RECEIVED_COLOR(redent(display(_,X),2))}`].join(`
2
2
  `)}function redent(_,K){return indentString(stripIndent(_),K)}function indentString(_,K){let q=/^(?!\s*$)/gm;return _.replace(q,` `.repeat(K))}function minIndent(_){let K=_.match(/^[ \t]*(?=\S)/gm);return K?K.reduce((_,K)=>Math.min(_,K.length),1/0):0}function stripIndent(_){let K=minIndent(_);if(K===0)return _;let q=RegExp(`^[ \\t]{${K}}`,`gm`);return _.replace(q,``)}function display(_,K){return typeof K==`string`?K:_.utils.stringify(K)}function toSentence(_,{wordConnector:K=`, `,lastWordConnector:q=` and `}={}){return[_.slice(0,-1).join(K),_[_.length-1]].join(_.length>1?q:``)}class GenericTypeError extends Error{constructor(_,K,q,J){super(),Error.captureStackTrace&&Error.captureStackTrace(this,q);let Y=``;try{Y=J.utils.printWithType(`Received`,K,J.utils.printReceived)}catch{}this.message=[J.utils.matcherHint(`${J.isNot?`.not`:``}.${q.name}`,`received`,``),``,`${J.utils.RECEIVED_COLOR(`received`)} value must ${_} or a Locator that returns ${_}.`,Y].join(`
3
3
  `)}}class UserInputElementTypeError extends GenericTypeError{constructor(_,K,q){super(`an HTMLElement or an SVGElement`,_,K,q)}}class UserInputNodeTypeError extends GenericTypeError{constructor(_,K,q){super(`a Node`,_,K,q)}}function getTag(_){return _ instanceof HTMLFormElement?`FORM`:_.tagName.toUpperCase()}function isInputElement(_){return getTag(_)===`INPUT`}function getSingleElementValue(_){if(_)switch(getTag(_)){case`INPUT`:return getInputValue(_);case`SELECT`:return getSelectValue(_);default:return _.value??getAccessibleValue(_)}}function getSelectValue({multiple:_,options:K}){let q=[...K].filter(_=>_.selected);if(_)return[...q].map(_=>_.value);if(q.length!==0)return q[0].value}function getInputValue(_){switch(_.type){case`number`:return _.value===``?null:Number(_.value);case`checkbox`:return _.checked;default:return _.value}}const rolesSupportingValues=[`meter`,`progressbar`,`slider`,`spinbutton`];function getAccessibleValue(_){if(rolesSupportingValues.includes(_.getAttribute(`role`)||``))return Number(_.getAttribute(`aria-valuenow`))}function normalize(_){return _.replace(/\s+/g,` `).trim()}function matches(_,K){return K instanceof RegExp?K.test(_):_.includes(String(K))}function arrayAsSetComparison(_,K){if(Array.isArray(_)&&Array.isArray(K)){let q=new Set(K);for(let K of new Set(_))if(!q.has(K))return!1;return!0}}const supportedRoles=getAriaCheckedRoles();function toBeChecked(_){let K=getElementFromUserInput(_,toBeChecked,this),q=()=>isInputElement(K)&&[`checkbox`,`radio`].includes(K.type),X=()=>supportedRoles.includes(getAriaRole(K)||``)&&[`true`,`false`].includes(K.getAttribute(`aria-checked`)||``);if(!q()&&!X())return{pass:!1,message:()=>`only inputs with type="checkbox" or type="radio" or elements with ${supportedRolesSentence()} and a valid aria-checked attribute can be used with .toBeChecked(). Use .toHaveValue() instead`};let Z=getAriaChecked(K),Q=Z===!0;return{pass:Q,message:()=>{let _=Q?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeChecked`,`element`,``),``,`Received element ${_} checked:`,` ${this.utils.printReceived(K.cloneNode(!1))}`].join(`
4
4
  `)}}}function supportedRolesSentence(){return toSentence(supportedRoles.map(_=>`role="${_}"`),{lastWordConnector:` or `})}function toBeEmptyDOMElement(_){let K=getElementFromUserInput(_,toBeEmptyDOMElement,this);return{pass:isEmptyElement(K),message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeEmptyDOMElement`,`element`,``),``,`Received:`,` ${this.utils.printReceived(K.innerHTML)}`].join(`
@@ -1 +1 @@
1
- import{server,page}from"@vitest/browser/context";import{I as Ivya,e as getByRoleSelector,c as getByAltTextSelector,f as getByLabelSelector,b as getByPlaceholderSelector,d as getByTestIdSelector,a as getByTextSelector,g as getByTitleSelector,h as getElementError}from"./public-utils-DUr23h1p.js";function ensureAwaited(e){let b=getWorkerState().current;if(!b||b.type!==`test`)return e();let x=!1,S=Error(`STACK_TRACE_ERROR`);b.onFinished??=[],b.onFinished.push(()=>{if(!x){let e=Error(`The call was not awaited. This method is asynchronous and must be awaited; otherwise, the call will not start to avoid unhandled rejections.`);throw e.stack=S.stack?.replace(S.message,e.message),e}});let C;return{then(b,w){return x=!0,(C||=e(S)).then(b,w)},catch(b){return(C||=e(S)).catch(b)},finally(b){return(C||=e(S)).finally(b)},[Symbol.toStringTag]:`Promise`}}function getBrowserState(){return window.__vitest_browser_runner__}function getWorkerState(){let e=window.__vitest_worker__;if(!e)throw Error(`Worker state is not found. This is an issue with Vitest. Please, open an issue.`);return e}const provider=getBrowserState().provider;function convertElementToCssSelector(e){if(!e||!(e instanceof Element))throw Error(`Expected DOM element to be an instance of Element, received ${typeof e}`);return getUniqueCssSelector(e)}function escapeIdForCSSSelector(e){return e.split(``).map(e=>{let b=e.charCodeAt(0);return e===` `||e===`#`||e===`.`||e===`:`||e===`[`||e===`]`||e===`>`||e===`+`||e===`~`||e===`\\`?`\\${e}`:b>=65536?`\\${b.toString(16).toUpperCase().padStart(6,`0`)} `:b<32||b===127||b>=128?`\\${b.toString(16).toUpperCase().padStart(2,`0`)} `:e}).join(``)}function getUniqueCssSelector(e){let b=[],x,S=!1;for(;x=getParent(e);){x.shadowRoot&&(S=!0);let C=e.tagName;if(e.id)b.push(`#${escapeIdForCSSSelector(e.id)}`);else if(!e.nextElementSibling&&!e.previousElementSibling)b.push(C.toLowerCase());else{let S=0,w=0,T=0;for(let b of x.children)S++,b.tagName===C&&w++,b===e&&(T=S);w>1?b.push(`${C.toLowerCase()}:nth-child(${T})`):b.push(C.toLowerCase())}e=x}return`${getBrowserState().provider===`webdriverio`&&S?`>>>`:``}${b.reverse().join(` > `)}`}function getParent(e){let b=e.parentNode;return b instanceof ShadowRoot?b.host:b}const now=Date.now;function processTimeoutOptions(e){if(e&&e.timeout!=null||provider!==`playwright`||getWorkerState().config.browser.providerOptions.actionTimeout!=null)return e;let b=getBrowserState().runner,x=b._currentTaskStartTime;if(!x)return e;let S=b._currentTaskTimeout;if(S===0||S==null||S===1/0)return e;e||={};let C=now(),w=x+S,T=w-C;return T<=0||(e.timeout=T-100),e}function getIframeScale(){let e=window.parent.document.querySelector(`iframe[data-vitest]`)?.parentElement;if(!e)throw Error(`Cannot find Tester element. This is a bug in Vitest. Please, open a new issue with reproduction.`);let b=e.getAttribute(`data-scale`),x=Number(b);if(Number.isNaN(x))throw TypeError(`Cannot parse scale value from Tester element (${b}). This is a bug in Vitest. Please, open a new issue with reproduction.`);return x}function escapeRegexForSelector(e){return e.unicode||e.unicodeSets?String(e):String(e).replace(/(^|[^\\])(\\\\)*(["'`])/g,`$1$2\\$3`).replace(/>>/g,`\\>\\>`)}function escapeForTextSelector(e,b){return typeof e==`string`?`${JSON.stringify(e)}i`:escapeRegexForSelector(e)}const selectorEngine=Ivya.create({browser:(e=>{switch(e){case`edge`:case`chrome`:return`chromium`;case`safari`:return`webkit`;default:return e}})(server.config.browser.name),testIdAttribute:server.config.browser.locators.testIdAttribute});class Locator{_parsedSelector;_container;_pwSelector;click(e={}){return this.triggerCommand(`__vitest_click`,this.selector,e)}dblClick(e={}){return this.triggerCommand(`__vitest_dblClick`,this.selector,e)}tripleClick(e={}){return this.triggerCommand(`__vitest_tripleClick`,this.selector,e)}clear(e){return this.triggerCommand(`__vitest_clear`,this.selector,e)}hover(e){return this.triggerCommand(`__vitest_hover`,this.selector,e)}unhover(e){return this.triggerCommand(`__vitest_hover`,`html > body`,e)}fill(e,b){return this.triggerCommand(`__vitest_fill`,this.selector,e,b)}async upload(e,b){let x=(Array.isArray(e)?e:[e]).map(async e=>{if(typeof e==`string`)return e;let b=await new Promise((b,x)=>{let S=new FileReader;S.onload=()=>b(S.result),S.onerror=()=>x(Error(`Failed to read file: ${e.name}`)),S.readAsDataURL(e)});return{name:e.name,mimeType:e.type,base64:b}});return this.triggerCommand(`__vitest_upload`,this.selector,await Promise.all(x),b)}dropTo(e,b={}){return this.triggerCommand(`__vitest_dragAndDrop`,this.selector,e.selector,b)}selectOptions(e,b){let x=(Array.isArray(e)?e:[e]).map(e=>{if(typeof e!=`string`){let b=`element`in e?e.selector:selectorEngine.generateSelectorSimple(e);return{element:b}}return e});return this.triggerCommand(`__vitest_selectOptions`,this.selector,x,b)}screenshot(e){return page.screenshot({...e,element:this})}getByRole(e,b){return this.locator(getByRoleSelector(e,b))}getByAltText(e,b){return this.locator(getByAltTextSelector(e,b))}getByLabelText(e,b){return this.locator(getByLabelSelector(e,b))}getByPlaceholder(e,b){return this.locator(getByPlaceholderSelector(e,b))}getByTestId(b){return this.locator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,b))}getByText(e,b){return this.locator(getByTextSelector(e,b))}getByTitle(e,b){return this.locator(getByTitleSelector(e,b))}filter(e){let b=[];if(e?.hasText&&b.push(`internal:has-text=${escapeForTextSelector(e.hasText)}`),e?.hasNotText&&b.push(`internal:has-not-text=${escapeForTextSelector(e.hasNotText)}`),e?.has){let x=e.has;b.push(`internal:has=${JSON.stringify(x._pwSelector||x.selector)}`)}if(e?.hasNot){let x=e.hasNot;b.push(`internal:has-not=${JSON.stringify(x._pwSelector||x.selector)}`)}if(!b.length)throw Error(`Locator.filter expects at least one filter. None provided.`);return this.locator(b.join(` >> `))}and(e){return this.locator(`internal:and=${JSON.stringify(e._pwSelector||e.selector)}`)}or(e){return this.locator(`internal:or=${JSON.stringify(e._pwSelector||e.selector)}`)}query(){let e=this._parsedSelector||=selectorEngine.parseSelector(this._pwSelector||this.selector);return selectorEngine.querySelector(e,document.documentElement,!0)}element(){let e=this.query();if(!e)throw getElementError(this._pwSelector||this.selector,this._container||document.body);return e}elements(){let e=this._parsedSelector||=selectorEngine.parseSelector(this._pwSelector||this.selector);return selectorEngine.querySelectorAll(e,document.documentElement)}all(){return this.elements().map(e=>this.elementLocator(e))}nth(e){return this.locator(`nth=${e}`)}first(){return this.nth(0)}last(){return this.nth(-1)}toString(){return this.selector}toJSON(){return this.selector}triggerCommand(e,...b){let x=getBrowserState().commands;return ensureAwaited(S=>x.triggerCommand(e,b,S))}}export{Locator as L,getBrowserState as a,convertElementToCssSelector as c,getIframeScale as g,processTimeoutOptions as p,selectorEngine as s};
1
+ import{server,page}from"@vitest/browser/context";import{I as Ivya,e as getByRoleSelector,c as getByAltTextSelector,f as getByLabelSelector,b as getByPlaceholderSelector,d as getByTestIdSelector,a as getByTextSelector,g as getByTitleSelector,h as getElementError}from"./public-utils-DJ-T0CfF.js";function ensureAwaited(e){let b=getWorkerState().current;if(!b||b.type!==`test`)return e();let x=!1,S=Error(`STACK_TRACE_ERROR`);b.onFinished??=[],b.onFinished.push(()=>{if(!x){let e=Error(`The call was not awaited. This method is asynchronous and must be awaited; otherwise, the call will not start to avoid unhandled rejections.`);throw e.stack=S.stack?.replace(S.message,e.message),e}});let C;return{then(b,w){return x=!0,(C||=e(S)).then(b,w)},catch(b){return(C||=e(S)).catch(b)},finally(b){return(C||=e(S)).finally(b)},[Symbol.toStringTag]:`Promise`}}function getBrowserState(){return window.__vitest_browser_runner__}function getWorkerState(){let e=window.__vitest_worker__;if(!e)throw Error(`Worker state is not found. This is an issue with Vitest. Please, open an issue.`);return e}const provider=getBrowserState().provider;function convertElementToCssSelector(e){if(!e||!(e instanceof Element))throw Error(`Expected DOM element to be an instance of Element, received ${typeof e}`);return getUniqueCssSelector(e)}function escapeIdForCSSSelector(e){return e.split(``).map(e=>{let b=e.charCodeAt(0);return e===` `||e===`#`||e===`.`||e===`:`||e===`[`||e===`]`||e===`>`||e===`+`||e===`~`||e===`\\`?`\\${e}`:b>=65536?`\\${b.toString(16).toUpperCase().padStart(6,`0`)} `:b<32||b===127||b>=128?`\\${b.toString(16).toUpperCase().padStart(2,`0`)} `:e}).join(``)}function getUniqueCssSelector(e){let b=[],x,S=!1;for(;x=getParent(e);){x.shadowRoot&&(S=!0);let C=e.tagName;if(e.id)b.push(`#${escapeIdForCSSSelector(e.id)}`);else if(!e.nextElementSibling&&!e.previousElementSibling)b.push(C.toLowerCase());else{let S=0,w=0,T=0;for(let b of x.children)S++,b.tagName===C&&w++,b===e&&(T=S);w>1?b.push(`${C.toLowerCase()}:nth-child(${T})`):b.push(C.toLowerCase())}e=x}return`${getBrowserState().provider===`webdriverio`&&S?`>>>`:``}${b.reverse().join(` > `)}`}function getParent(e){let b=e.parentNode;return b instanceof ShadowRoot?b.host:b}const now=Date.now;function processTimeoutOptions(e){if(e&&e.timeout!=null||provider!==`playwright`||getWorkerState().config.browser.providerOptions.actionTimeout!=null)return e;let b=getBrowserState().runner,x=b._currentTaskStartTime;if(!x)return e;let S=b._currentTaskTimeout;if(S===0||S==null||S===1/0)return e;e||={};let C=now(),w=x+S,T=w-C;return T<=0||(e.timeout=T-100),e}function getIframeScale(){let e=window.parent.document.querySelector(`iframe[data-vitest]`)?.parentElement;if(!e)throw Error(`Cannot find Tester element. This is a bug in Vitest. Please, open a new issue with reproduction.`);let b=e.getAttribute(`data-scale`),x=Number(b);if(Number.isNaN(x))throw TypeError(`Cannot parse scale value from Tester element (${b}). This is a bug in Vitest. Please, open a new issue with reproduction.`);return x}function escapeRegexForSelector(e){return e.unicode||e.unicodeSets?String(e):String(e).replace(/(^|[^\\])(\\\\)*(["'`])/g,`$1$2\\$3`).replace(/>>/g,`\\>\\>`)}function escapeForTextSelector(e,b){return typeof e==`string`?`${JSON.stringify(e)}i`:escapeRegexForSelector(e)}const selectorEngine=Ivya.create({browser:(e=>{switch(e){case`edge`:case`chrome`:return`chromium`;case`safari`:return`webkit`;default:return e}})(server.config.browser.name),testIdAttribute:server.config.browser.locators.testIdAttribute});class Locator{_parsedSelector;_container;_pwSelector;click(e={}){return this.triggerCommand(`__vitest_click`,this.selector,e)}dblClick(e={}){return this.triggerCommand(`__vitest_dblClick`,this.selector,e)}tripleClick(e={}){return this.triggerCommand(`__vitest_tripleClick`,this.selector,e)}clear(e){return this.triggerCommand(`__vitest_clear`,this.selector,e)}hover(e){return this.triggerCommand(`__vitest_hover`,this.selector,e)}unhover(e){return this.triggerCommand(`__vitest_hover`,`html > body`,e)}fill(e,b){return this.triggerCommand(`__vitest_fill`,this.selector,e,b)}async upload(e,b){let x=(Array.isArray(e)?e:[e]).map(async e=>{if(typeof e==`string`)return e;let b=await new Promise((b,x)=>{let S=new FileReader;S.onload=()=>b(S.result),S.onerror=()=>x(Error(`Failed to read file: ${e.name}`)),S.readAsDataURL(e)});return{name:e.name,mimeType:e.type,base64:b}});return this.triggerCommand(`__vitest_upload`,this.selector,await Promise.all(x),b)}dropTo(e,b={}){return this.triggerCommand(`__vitest_dragAndDrop`,this.selector,e.selector,b)}selectOptions(e,b){let x=(Array.isArray(e)?e:[e]).map(e=>{if(typeof e!=`string`){let b=`element`in e?e.selector:selectorEngine.generateSelectorSimple(e);return{element:b}}return e});return this.triggerCommand(`__vitest_selectOptions`,this.selector,x,b)}screenshot(e){return page.screenshot({...e,element:this})}getByRole(e,b){return this.locator(getByRoleSelector(e,b))}getByAltText(e,b){return this.locator(getByAltTextSelector(e,b))}getByLabelText(e,b){return this.locator(getByLabelSelector(e,b))}getByPlaceholder(e,b){return this.locator(getByPlaceholderSelector(e,b))}getByTestId(b){return this.locator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,b))}getByText(e,b){return this.locator(getByTextSelector(e,b))}getByTitle(e,b){return this.locator(getByTitleSelector(e,b))}filter(e){let b=[];if(e?.hasText&&b.push(`internal:has-text=${escapeForTextSelector(e.hasText)}`),e?.hasNotText&&b.push(`internal:has-not-text=${escapeForTextSelector(e.hasNotText)}`),e?.has){let x=e.has;b.push(`internal:has=${JSON.stringify(x._pwSelector||x.selector)}`)}if(e?.hasNot){let x=e.hasNot;b.push(`internal:has-not=${JSON.stringify(x._pwSelector||x.selector)}`)}if(!b.length)throw Error(`Locator.filter expects at least one filter. None provided.`);return this.locator(b.join(` >> `))}and(e){return this.locator(`internal:and=${JSON.stringify(e._pwSelector||e.selector)}`)}or(e){return this.locator(`internal:or=${JSON.stringify(e._pwSelector||e.selector)}`)}query(){let e=this._parsedSelector||=selectorEngine.parseSelector(this._pwSelector||this.selector);return selectorEngine.querySelector(e,document.documentElement,!0)}element(){let e=this.query();if(!e)throw getElementError(this._pwSelector||this.selector,this._container||document.body);return e}elements(){let e=this._parsedSelector||=selectorEngine.parseSelector(this._pwSelector||this.selector);return selectorEngine.querySelectorAll(e,document.documentElement)}all(){return this.elements().map(e=>this.elementLocator(e))}nth(e){return this.locator(`nth=${e}`)}first(){return this.nth(0)}last(){return this.nth(-1)}toString(){return this.selector}toJSON(){return this.selector}triggerCommand(e,...b){let x=getBrowserState().commands;return ensureAwaited(S=>x.triggerCommand(e,b,S))}}export{Locator as L,getBrowserState as a,convertElementToCssSelector as c,getIframeScale as g,processTimeoutOptions as p,selectorEngine as s};
package/dist/index.js CHANGED
@@ -11,14 +11,14 @@ import * as vite from 'vite';
11
11
  import { coverageConfigDefaults } from 'vitest/config';
12
12
  import { fileURLToPath } from 'node:url';
13
13
  import crypto from 'node:crypto';
14
- import { mkdir, readFile as readFile$1 } from 'node:fs/promises';
14
+ import { mkdir, rm, readFile as readFile$1 } from 'node:fs/promises';
15
15
  import { parseErrorStacktrace, parseStacktrace } from '@vitest/utils/source-map';
16
16
  import { P as PlaywrightBrowserProvider, W as WebdriverBrowserProvider } from './webdriver-D7k26Na7.js';
17
17
  import { resolve as resolve$1, basename as basename$1, dirname as dirname$1, normalize as normalize$1 } from 'node:path';
18
18
  import { WebSocketServer } from 'ws';
19
19
  import * as nodeos from 'node:os';
20
20
 
21
- var version = "3.2.0-beta.1";
21
+ var version = "3.2.0-beta.2";
22
22
 
23
23
  const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
24
24
  function normalizeWindowsPath(input = "") {
@@ -529,7 +529,7 @@ async function generateContextFile(globalServer) {
529
529
  const userEventNonProviderImport = await getUserEventImport(providerName, this.resolve.bind(this));
530
530
  const distContextPath = slash$1(`/@fs/${resolve(__dirname, "context.js")}`);
531
531
  return `
532
- import { page, createUserEvent, cdp } from '${distContextPath}'
532
+ import { page, createUserEvent, cdp, locators } from '${distContextPath}'
533
533
  ${userEventNonProviderImport}
534
534
 
535
535
  export const server = {
@@ -544,7 +544,7 @@ export const server = {
544
544
  }
545
545
  export const commands = server.commands
546
546
  export const userEvent = createUserEvent(_userEventSetup)
547
- export { page, cdp }
547
+ export { page, cdp, locators }
548
548
  `;
549
549
  }
550
550
  async function getUserEventImport(provider, resolve) {
@@ -680,8 +680,7 @@ var BrowserPlugin = (parentServer, base = "/") => {
680
680
  ];
681
681
  const exclude = [
682
682
  "vitest",
683
- "vitest/utils",
684
- "vitest/browser",
683
+ "vitest/internal/browser",
685
684
  "vitest/runners",
686
685
  "@vitest/browser",
687
686
  "@vitest/browser/client",
@@ -2318,6 +2317,10 @@ const screenshot = async (context, name, options = {}) => {
2318
2317
  if (!context.testPath) {
2319
2318
  throw new Error(`Cannot take a screenshot without a test path`);
2320
2319
  }
2320
+ options.save ??= true;
2321
+ if (!options.save) {
2322
+ options.base64 = true;
2323
+ }
2321
2324
  const path = options.path ? resolve(dirname(context.testPath), options.path) : resolveScreenshotPath(context.testPath, name, context.project.config);
2322
2325
  const savePath = normalize$1(path);
2323
2326
  await mkdir(dirname(path), { recursive: true });
@@ -2327,25 +2330,23 @@ const screenshot = async (context, name, options = {}) => {
2327
2330
  const element = context.iframe.locator(`${selector}`);
2328
2331
  const buffer = await element.screenshot({
2329
2332
  ...config,
2330
- path: savePath
2333
+ path: options.save ? savePath : undefined
2331
2334
  });
2332
2335
  return returnResult(options, path, buffer);
2333
2336
  }
2334
2337
  const buffer = await context.iframe.locator("body").screenshot({
2335
2338
  ...options,
2336
- path: savePath
2339
+ path: options.save ? savePath : undefined
2337
2340
  });
2338
2341
  return returnResult(options, path, buffer);
2339
2342
  }
2340
2343
  if (context.provider instanceof WebdriverBrowserProvider) {
2341
2344
  const page = context.provider.browser;
2342
- if (!options.element) {
2343
- const body = await page.$("body");
2344
- const buffer = await body.saveScreenshot(savePath);
2345
- return returnResult(options, path, buffer);
2346
- }
2347
- const element = await page.$(`${options.element}`);
2345
+ const element = !options.element ? await page.$("body") : await page.$(`${options.element}`);
2348
2346
  const buffer = await element.saveScreenshot(savePath);
2347
+ if (!options.save) {
2348
+ await rm(savePath, { force: true });
2349
+ }
2349
2350
  return returnResult(options, path, buffer);
2350
2351
  }
2351
2352
  throw new Error(`Provider "${context.provider.name}" does not support screenshots`);
@@ -2359,6 +2360,9 @@ function resolveScreenshotPath(testPath, name, config) {
2359
2360
  return resolve(dir, "__screenshots__", base, name);
2360
2361
  }
2361
2362
  function returnResult(options, path, buffer) {
2363
+ if (!options.save) {
2364
+ return buffer.toString("base64");
2365
+ }
2362
2366
  if (options.base64) {
2363
2367
  return {
2364
2368
  path,
@@ -1 +1 @@
1
- import"@vitest/browser/context";import"../public-utils-DUr23h1p.js";export{L as Locator,s as selectorEngine}from"../index-C3ICQ6zz.js";import"vitest/utils";
1
+ import"@vitest/browser/context";import"../public-utils-DJ-T0CfF.js";export{L as Locator,s as selectorEngine}from"../index-D0pxULUR.js";import"vitest/internal/browser";
@@ -1 +1 @@
1
- import{page,server}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector}from"../public-utils-DUr23h1p.js";import{s as selectorEngine,L as Locator,p as processTimeoutOptions,g as getIframeScale}from"../index-C3ICQ6zz.js";import"vitest/utils";page.extend({getByLabelText(e,_){return new PlaywrightLocator(getByLabelSelector(e,_))},getByRole(e,_){return new PlaywrightLocator(getByRoleSelector(e,_))},getByTestId(e){return new PlaywrightLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,_){return new PlaywrightLocator(getByAltTextSelector(e,_))},getByPlaceholder(e,_){return new PlaywrightLocator(getByPlaceholderSelector(e,_))},getByText(e,_){return new PlaywrightLocator(getByTextSelector(e,_))},getByTitle(e,_){return new PlaywrightLocator(getByTitleSelector(e,_))},elementLocator(e){return new PlaywrightLocator(selectorEngine.generateSelectorSimple(e),e)}});class PlaywrightLocator extends Locator{constructor(e,_){super(),this.selector=e,this._container=_}click(e){return super.click(processTimeoutOptions(processClickOptions(e)))}dblClick(e){return super.dblClick(processTimeoutOptions(processClickOptions(e)))}tripleClick(e){return super.tripleClick(processTimeoutOptions(processClickOptions(e)))}selectOptions(e,_){return super.selectOptions(e,processTimeoutOptions(_))}clear(e){return super.clear(processTimeoutOptions(e))}hover(e){return super.hover(processTimeoutOptions(processHoverOptions(e)))}upload(e,_){return super.upload(e,processTimeoutOptions(_))}fill(e,_){return super.fill(e,processTimeoutOptions(_))}dropTo(e,_){return super.dropTo(e,processTimeoutOptions(processDragAndDropOptions(_)))}locator(e){return new PlaywrightLocator(`${this.selector} >> ${e}`,this._container)}elementLocator(e){return new PlaywrightLocator(selectorEngine.generateSelectorSimple(e),e)}}function processDragAndDropOptions(e){if(!e)return e;let _=e;return _.sourcePosition&&=processPlaywrightPosition(_.sourcePosition),_.targetPosition&&=processPlaywrightPosition(_.targetPosition),e}function processHoverOptions(e){if(!e)return e;let _=e;return _.position&&=processPlaywrightPosition(_.position),e}function processClickOptions(e){if(!e)return e;let _=e;return _.position&&=processPlaywrightPosition(_.position),_}function processPlaywrightPosition(e){let _=getIframeScale();return e.x!=null&&(e.x*=_),e.y!=null&&(e.y*=_),e}
1
+ import{page,server}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector}from"../public-utils-DJ-T0CfF.js";import{s as selectorEngine,L as Locator,p as processTimeoutOptions,g as getIframeScale}from"../index-D0pxULUR.js";import"vitest/internal/browser";page.extend({getByLabelText(e,_){return new PlaywrightLocator(getByLabelSelector(e,_))},getByRole(e,_){return new PlaywrightLocator(getByRoleSelector(e,_))},getByTestId(e){return new PlaywrightLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,_){return new PlaywrightLocator(getByAltTextSelector(e,_))},getByPlaceholder(e,_){return new PlaywrightLocator(getByPlaceholderSelector(e,_))},getByText(e,_){return new PlaywrightLocator(getByTextSelector(e,_))},getByTitle(e,_){return new PlaywrightLocator(getByTitleSelector(e,_))},_createLocator(e){return new PlaywrightLocator(e)},elementLocator(e){return new PlaywrightLocator(selectorEngine.generateSelectorSimple(e),e)}});class PlaywrightLocator extends Locator{constructor(e,_){super(),this.selector=e,this._container=_}click(e){return super.click(processTimeoutOptions(processClickOptions(e)))}dblClick(e){return super.dblClick(processTimeoutOptions(processClickOptions(e)))}tripleClick(e){return super.tripleClick(processTimeoutOptions(processClickOptions(e)))}selectOptions(e,_){return super.selectOptions(e,processTimeoutOptions(_))}clear(e){return super.clear(processTimeoutOptions(e))}hover(e){return super.hover(processTimeoutOptions(processHoverOptions(e)))}upload(e,_){return super.upload(e,processTimeoutOptions(_))}fill(e,_){return super.fill(e,processTimeoutOptions(_))}dropTo(e,_){return super.dropTo(e,processTimeoutOptions(processDragAndDropOptions(_)))}locator(e){return new PlaywrightLocator(`${this.selector} >> ${e}`,this._container)}elementLocator(e){return new PlaywrightLocator(selectorEngine.generateSelectorSimple(e),e)}}function processDragAndDropOptions(e){if(!e)return e;let _=e;return _.sourcePosition&&=processPlaywrightPosition(_.sourcePosition),_.targetPosition&&=processPlaywrightPosition(_.targetPosition),e}function processHoverOptions(e){if(!e)return e;let _=e;return _.position&&=processPlaywrightPosition(_.position),e}function processClickOptions(e){if(!e)return e;let _=e;return _.position&&=processPlaywrightPosition(_.position),_}function processPlaywrightPosition(e){let _=getIframeScale();return e.x!=null&&(e.x*=_),e.y!=null&&(e.y*=_),e}
@@ -1 +1 @@
1
- import{page,server,userEvent}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector,h as getElementError}from"../public-utils-DUr23h1p.js";import{s as selectorEngine,L as Locator,c as convertElementToCssSelector}from"../index-C3ICQ6zz.js";import"vitest/utils";page.extend({getByLabelText(e,m){return new PreviewLocator(getByLabelSelector(e,m))},getByRole(e,m){return new PreviewLocator(getByRoleSelector(e,m))},getByTestId(e){return new PreviewLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,m){return new PreviewLocator(getByAltTextSelector(e,m))},getByPlaceholder(e,m){return new PreviewLocator(getByPlaceholderSelector(e,m))},getByText(e,m){return new PreviewLocator(getByTextSelector(e,m))},getByTitle(e,m){return new PreviewLocator(getByTitleSelector(e,m))},elementLocator(e){return new PreviewLocator(selectorEngine.generateSelectorSimple(e),e)}});class PreviewLocator extends Locator{constructor(e,m){super(),this._pwSelector=e,this._container=m}get selector(){let e=this.elements().map(e=>convertElementToCssSelector(e));if(!e.length)throw getElementError(this._pwSelector,this._container||document.body);return e.join(`, `)}click(){return userEvent.click(this.element())}dblClick(){return userEvent.dblClick(this.element())}tripleClick(){return userEvent.tripleClick(this.element())}hover(){return userEvent.hover(this.element())}unhover(){return userEvent.unhover(this.element())}async fill(e){return userEvent.fill(this.element(),e)}async upload(e){return userEvent.upload(this.element(),e)}selectOptions(e){return userEvent.selectOptions(this.element(),e)}clear(){return userEvent.clear(this.element())}locator(e){return new PreviewLocator(`${this._pwSelector} >> ${e}`,this._container)}elementLocator(e){return new PreviewLocator(selectorEngine.generateSelectorSimple(e),e)}}
1
+ import{page,server,userEvent}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector,h as getElementError}from"../public-utils-DJ-T0CfF.js";import{s as selectorEngine,L as Locator,c as convertElementToCssSelector}from"../index-D0pxULUR.js";import"vitest/internal/browser";page.extend({getByLabelText(e,m){return new PreviewLocator(getByLabelSelector(e,m))},getByRole(e,m){return new PreviewLocator(getByRoleSelector(e,m))},getByTestId(e){return new PreviewLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,m){return new PreviewLocator(getByAltTextSelector(e,m))},getByPlaceholder(e,m){return new PreviewLocator(getByPlaceholderSelector(e,m))},getByText(e,m){return new PreviewLocator(getByTextSelector(e,m))},getByTitle(e,m){return new PreviewLocator(getByTitleSelector(e,m))},_createLocator(e){return new PreviewLocator(e)},elementLocator(e){return new PreviewLocator(selectorEngine.generateSelectorSimple(e),e)}});class PreviewLocator extends Locator{constructor(e,m){super(),this._pwSelector=e,this._container=m}get selector(){let e=this.elements().map(e=>convertElementToCssSelector(e));if(!e.length)throw getElementError(this._pwSelector,this._container||document.body);return e.join(`, `)}click(){return userEvent.click(this.element())}dblClick(){return userEvent.dblClick(this.element())}tripleClick(){return userEvent.tripleClick(this.element())}hover(){return userEvent.hover(this.element())}unhover(){return userEvent.unhover(this.element())}async fill(e){return userEvent.fill(this.element(),e)}async upload(e){return userEvent.upload(this.element(),e)}selectOptions(e){return userEvent.selectOptions(this.element(),e)}clear(){return userEvent.clear(this.element())}locator(e){return new PreviewLocator(`${this._pwSelector} >> ${e}`,this._container)}elementLocator(e){return new PreviewLocator(selectorEngine.generateSelectorSimple(e),e)}}
@@ -1 +1 @@
1
- import{page,server}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector,h as getElementError}from"../public-utils-DUr23h1p.js";import{s as selectorEngine,L as Locator,c as convertElementToCssSelector,a as getBrowserState,g as getIframeScale}from"../index-C3ICQ6zz.js";import"vitest/utils";page.extend({getByLabelText(e,g){return new WebdriverIOLocator(getByLabelSelector(e,g))},getByRole(e,g){return new WebdriverIOLocator(getByRoleSelector(e,g))},getByTestId(e){return new WebdriverIOLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,g){return new WebdriverIOLocator(getByAltTextSelector(e,g))},getByPlaceholder(e,g){return new WebdriverIOLocator(getByPlaceholderSelector(e,g))},getByText(e,g){return new WebdriverIOLocator(getByTextSelector(e,g))},getByTitle(e,g){return new WebdriverIOLocator(getByTitleSelector(e,g))},elementLocator(e){return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(e))}});class WebdriverIOLocator extends Locator{constructor(e,g){super(),this._pwSelector=e,this._container=g}get selector(){let e=this.elements().map(e=>convertElementToCssSelector(e));if(!e.length)throw getElementError(this._pwSelector,this._container||document.body);return e.join(`, `)}click(e){return super.click(processClickOptions(e))}dblClick(e){return super.dblClick(processClickOptions(e))}tripleClick(e){return super.tripleClick(processClickOptions(e))}selectOptions(e,g){let _=getWebdriverioSelectOptions(this.element(),e);return this.triggerCommand(`__vitest_selectOptions`,this.selector,_,g)}hover(e){return super.hover(processHoverOptions(e))}dropTo(e,g){return super.dropTo(e,processDragAndDropOptions(g))}locator(e){return new WebdriverIOLocator(`${this._pwSelector} >> ${e}`,this._container)}elementLocator(e){return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(e),e)}}function getWebdriverioSelectOptions(e,g){let _=[...e.querySelectorAll(`option`)],v=Array.isArray(g)?g:[g];if(!v.length)return[];if(v.length>1)throw Error(`Provider "webdriverio" doesn't support selecting multiple values at once`);let y=v[0];if(typeof y!=`string`){let e=`element`in y?y.element():y,g=_.indexOf(e);if(g===-1)throw Error(`The element ${selectorEngine.previewNode(e)} was not found in the "select" options.`);return[{index:g}]}let b=_.findIndex(e=>e.value===y);if(b!==-1)return[{index:b}];let x=_.findIndex(e=>e.textContent?.trim()===y||e.ariaLabel===y);if(x===-1)throw Error(`The option "${y}" was not found in the "select" options.`);return[{index:x}]}function processClickOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g=e;if(g.x!=null||g.y!=null){let e={};g.x!=null&&(g.x=scaleCoordinate(g.x,e)),g.y!=null&&(g.y=scaleCoordinate(g.y,e))}return e}function processHoverOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g=e,_={};return g.xOffset!=null&&(g.xOffset=scaleCoordinate(g.xOffset,_)),g.yOffset!=null&&(g.yOffset=scaleCoordinate(g.yOffset,_)),e}function processDragAndDropOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g={},_=e;return _.sourceX!=null&&(_.sourceX=scaleCoordinate(_.sourceX,g)),_.sourceY!=null&&(_.sourceY=scaleCoordinate(_.sourceY,g)),_.targetX!=null&&(_.targetX=scaleCoordinate(_.targetX,g)),_.targetY!=null&&(_.targetY=scaleCoordinate(_.targetY,g)),e}function scaleCoordinate(e,g){return Math.round(e*getCachedScale(g))}function getCachedScale(e){return e.scale??=getIframeScale()}
1
+ import{page,server}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector,h as getElementError}from"../public-utils-DJ-T0CfF.js";import{s as selectorEngine,L as Locator,c as convertElementToCssSelector,a as getBrowserState,g as getIframeScale}from"../index-D0pxULUR.js";import"vitest/internal/browser";page.extend({getByLabelText(e,g){return new WebdriverIOLocator(getByLabelSelector(e,g))},getByRole(e,g){return new WebdriverIOLocator(getByRoleSelector(e,g))},getByTestId(e){return new WebdriverIOLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,g){return new WebdriverIOLocator(getByAltTextSelector(e,g))},getByPlaceholder(e,g){return new WebdriverIOLocator(getByPlaceholderSelector(e,g))},getByText(e,g){return new WebdriverIOLocator(getByTextSelector(e,g))},getByTitle(e,g){return new WebdriverIOLocator(getByTitleSelector(e,g))},_createLocator(e){return new WebdriverIOLocator(e)},elementLocator(e){return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(e))}});class WebdriverIOLocator extends Locator{constructor(e,g){super(),this._pwSelector=e,this._container=g}get selector(){let e=this.elements().map(e=>convertElementToCssSelector(e));if(!e.length)throw getElementError(this._pwSelector,this._container||document.body);return e.join(`, `)}click(e){return super.click(processClickOptions(e))}dblClick(e){return super.dblClick(processClickOptions(e))}tripleClick(e){return super.tripleClick(processClickOptions(e))}selectOptions(e,g){let _=getWebdriverioSelectOptions(this.element(),e);return this.triggerCommand(`__vitest_selectOptions`,this.selector,_,g)}hover(e){return super.hover(processHoverOptions(e))}dropTo(e,g){return super.dropTo(e,processDragAndDropOptions(g))}locator(e){return new WebdriverIOLocator(`${this._pwSelector} >> ${e}`,this._container)}elementLocator(e){return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(e),e)}}function getWebdriverioSelectOptions(e,g){let _=[...e.querySelectorAll(`option`)],v=Array.isArray(g)?g:[g];if(!v.length)return[];if(v.length>1)throw Error(`Provider "webdriverio" doesn't support selecting multiple values at once`);let y=v[0];if(typeof y!=`string`){let e=`element`in y?y.element():y,g=_.indexOf(e);if(g===-1)throw Error(`The element ${selectorEngine.previewNode(e)} was not found in the "select" options.`);return[{index:g}]}let b=_.findIndex(e=>e.value===y);if(b!==-1)return[{index:b}];let x=_.findIndex(e=>e.textContent?.trim()===y||e.ariaLabel===y);if(x===-1)throw Error(`The option "${y}" was not found in the "select" options.`);return[{index:x}]}function processClickOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g=e;if(g.x!=null||g.y!=null){let e={};g.x!=null&&(g.x=scaleCoordinate(g.x,e)),g.y!=null&&(g.y=scaleCoordinate(g.y,e))}return e}function processHoverOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g=e,_={};return g.xOffset!=null&&(g.xOffset=scaleCoordinate(g.xOffset,_)),g.yOffset!=null&&(g.yOffset=scaleCoordinate(g.yOffset,_)),e}function processDragAndDropOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g={},_=e;return _.sourceX!=null&&(_.sourceX=scaleCoordinate(_.sourceX,g)),_.sourceY!=null&&(_.sourceY=scaleCoordinate(_.sourceY,g)),_.targetX!=null&&(_.targetX=scaleCoordinate(_.targetX,g)),_.targetY!=null&&(_.targetY=scaleCoordinate(_.targetY,g)),e}function scaleCoordinate(e,g){return Math.round(e*getCachedScale(g))}function getCachedScale(e){return e.scale??=getIframeScale()}
@@ -1,4 +1,4 @@
1
- import{page}from"@vitest/browser/context";import{stringify}from"vitest/utils";var __defProp=Object.defineProperty,__defNormalProp=(e,w,E)=>w in e?__defProp(e,w,{enumerable:!0,configurable:!0,writable:!0,value:E}):e[w]=E,__publicField=(e,w,T)=>__defNormalProp(e,typeof w==`symbol`?w:w+``,T);function escapeWithQuotes(e,w=`'`){let T=JSON.stringify(e),E=T.substring(1,T.length-1).replace(/\\"/g,`"`);if(w===`'`)return w+E.replace(/'/g,`\\'`)+w;if(w===`"`)return w+E.replace(/"/g,`\\"`)+w;if(w==="`")return w+E.replace(/`/g,"`")+w;throw Error(`Invalid escape char`)}function cssEscape(e){let w=``;for(let T=0;T<e.length;T++)w+=cssEscapeOne(e,T);return w}function quoteCSSAttributeValue(e){return`"${cssEscape(e).replace(/\\ /g,` `)}"`}function cssEscapeOne(e,w){let T=e.charCodeAt(w);return T===0?`�`:T>=1&&T<=31||T>=48&&T<=57&&(w===0||w===1&&e.charCodeAt(0)===45)?`\\${T.toString(16)} `:w===0&&T===45&&e.length===1?`\\${e.charAt(w)}`:T>=128||T===45||T===95||T>=48&&T<=57||T>=65&&T<=90||T>=97&&T<=122?e.charAt(w):`\\${e.charAt(w)}`}function normalizeWhiteSpace(e){let w=e.replace(/[\u200b\u00ad]/g,``).trim().replace(/\s+/g,` `);return w}function normalizeEscapedRegexQuotes(e){return e.replace(/(^|[^\\])(\\\\)*\\(['"`])/g,`$1$2$3`)}function escapeRegexForSelector(e){return e.unicode||e.unicodeSets?String(e):String(e).replace(/(^|[^\\])(\\\\)*(["'`])/g,`$1$2\\$3`).replace(/>>/g,`\\>\\>`)}function escapeForTextSelector(e,w){return typeof e==`string`?`${JSON.stringify(e)}${w?`s`:`i`}`:escapeRegexForSelector(e)}function escapeForAttributeSelector(e,w){return typeof e==`string`?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"${w?`s`:`i`}`:escapeRegexForSelector(e)}function trimString(e,w,T=``){if(e.length<=w)return e;let E=[...e];return E.length>w?E.slice(0,w-T.length).join(``)+T:E.join(``)}function trimStringWithEllipsis(e,w){return trimString(e,w,`…`)}function escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}var between=function(e,w,T){return e>=w&&e<=T};function digit(e){return between(e,48,57)}function hexdigit(e){return digit(e)||between(e,65,70)||between(e,97,102)}function uppercaseletter(e){return between(e,65,90)}function lowercaseletter(e){return between(e,97,122)}function letter(e){return uppercaseletter(e)||lowercaseletter(e)}function nonascii(e){return e>=128}function namestartchar(e){return letter(e)||nonascii(e)||e===95}function namechar(e){return namestartchar(e)||digit(e)||e===45}function nonprintable(e){return between(e,0,8)||e===11||between(e,14,31)||e===127}function newline(e){return e===10}function whitespace(e){return newline(e)||e===9||e===32}var maximumallowedcodepoint=1114111,InvalidCharacterError=class extends Error{constructor(e){super(e),this.name=`InvalidCharacterError`}};function preprocess(e){let w=[];for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===13&&e.charCodeAt(T+1)===10&&(E=10,T++),(E===13||E===12)&&(E=10),E===0&&(E=65533),between(E,55296,56319)&&between(e.charCodeAt(T+1),56320,57343)){let w=E-55296,D=e.charCodeAt(T+1)-56320;E=2**16+w*2**10+D,T++}w.push(E)}return w}function stringFromCode(e){if(e<=65535)return String.fromCharCode(e);e-=2**16;let w=Math.floor(e/2**10)+55296,T=e%2**10+56320;return String.fromCharCode(w)+String.fromCharCode(T)}function tokenize(e){let w=preprocess(e),T=-1,E=[],D,O=function(e){return e>=w.length?-1:w[e]},k=function(e){if(e===void 0&&(e=1),e>3)throw`Spec Error: no more than three codepoints of lookahead.`;return O(T+e)},A=function(e){return e===void 0&&(e=1),T+=e,D=O(T),!0},j=function(){return--T,!0},M=function(e){return e===void 0&&(e=D),e===-1},N=function(){if(P(),A(),whitespace(D)){for(;whitespace(k());)A();return new WhitespaceToken}else if(D===34)return L();else if(D===35)if(namechar(k())||B(k(1),k(2))){let e=new HashToken(``);return W(k(1),k(2),k(3))&&(e.type=`id`),e.value=Y(),e}else return new DelimToken(D);else if(D===36)return k()===61?(A(),new SuffixMatchToken):new DelimToken(D);else if(D===39)return L();else if(D===40)return new OpenParenToken;else if(D===41)return new CloseParenToken;else if(D===42)return k()===61?(A(),new SubstringMatchToken):new DelimToken(D);else if(D===43)return J()?(j(),F()):new DelimToken(D);else if(D===44)return new CommaToken;else if(D===45)return J()?(j(),F()):k(1)===45&&k(2)===62?(A(2),new CDCToken):G()?(j(),I()):new DelimToken(D);else if(D===46)return J()?(j(),F()):new DelimToken(D);else if(D===58)return new ColonToken;else if(D===59)return new SemicolonToken;else if(D===60)return k(1)===33&&k(2)===45&&k(3)===45?(A(3),new CDOToken):new DelimToken(D);else if(D===64)return W(k(1),k(2),k(3))?new AtKeywordToken(Y()):new DelimToken(D);else if(D===91)return new OpenSquareToken;else if(D===92)return U()?(j(),I()):new DelimToken(D);else if(D===93)return new CloseSquareToken;else if(D===94)return k()===61?(A(),new PrefixMatchToken):new DelimToken(D);else if(D===123)return new OpenCurlyToken;else if(D===124)return k()===61?(A(),new DashMatchToken):k()===124?(A(),new ColumnToken):new DelimToken(D);else if(D===125)return new CloseCurlyToken;else if(D===126)return k()===61?(A(),new IncludeMatchToken):new DelimToken(D);else if(digit(D))return j(),F();else if(namestartchar(D))return j(),I();else if(M())return new EOFToken;else return new DelimToken(D)},P=function(){for(;k(1)===47&&k(2)===42;)for(A(2);;)if(A(),D===42&&k()===47){A();break}else if(M())return},F=function(){let e=X();if(W(k(1),k(2),k(3))){let w=new DimensionToken;return w.value=e.value,w.repr=e.repr,w.type=e.type,w.unit=Y(),w}else if(k()===37){A();let w=new PercentageToken;return w.value=e.value,w.repr=e.repr,w}else{let w=new NumberToken;return w.value=e.value,w.repr=e.repr,w.type=e.type,w}},I=function(){let e=Y();if(e.toLowerCase()===`url`&&k()===40){for(A();whitespace(k(1))&&whitespace(k(2));)A();return k()===34||k()===39||whitespace(k())&&(k(2)===34||k(2)===39)?new FunctionToken(e):R()}else if(k()===40)return A(),new FunctionToken(e);else return new IdentToken(e)},L=function(e){e===void 0&&(e=D);let w=``;for(;A();){if(D===e||M())return new StringToken(w);if(newline(D))return j(),new BadStringToken;D===92?M(k())||(newline(k())?A():w+=stringFromCode(z())):w+=stringFromCode(D)}throw Error(`Internal error`)},R=function(){let e=new URLToken(``);for(;whitespace(k());)A();if(M(k()))return e;for(;A();){if(D===41||M())return e;if(whitespace(D)){for(;whitespace(k());)A();return k()===41||M(k())?(A(),e):(Q(),new BadURLToken)}else if(D===34||D===39||D===40||nonprintable(D))return Q(),new BadURLToken;else if(D===92)if(U())e.value+=stringFromCode(z());else return Q(),new BadURLToken;else e.value+=stringFromCode(D)}throw Error(`Internal error`)},z=function(){if(A(),hexdigit(D)){let e=[D];for(let w=0;w<5&&hexdigit(k());w++)A(),e.push(D);whitespace(k())&&A();let w=Number.parseInt(e.map(e=>String.fromCharCode(e)).join(``),16);return w>maximumallowedcodepoint&&(w=65533),w}else if(M())return 65533;else return D},B=function(e,w){return!(e!==92||newline(w))},U=function(){return B(D,k())},W=function(e,w,T){return e===45?namestartchar(w)||w===45||B(w,T):namestartchar(e)?!0:e===92?B(e,w):!1},G=function(){return W(D,k(1),k(2))},K=function(e,w,T){return e===43||e===45?!!(digit(w)||w===46&&digit(T)):e===46?!!digit(w):!!digit(e)},J=function(){return K(D,k(1),k(2))},Y=function(){let e=``;for(;A();)if(namechar(D))e+=stringFromCode(D);else if(U())e+=stringFromCode(z());else return j(),e;throw Error(`Internal parse error`)},X=function(){let e=``,w=`integer`;for((k()===43||k()===45)&&(A(),e+=stringFromCode(D));digit(k());)A(),e+=stringFromCode(D);if(k(1)===46&&digit(k(2)))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);let T=k(1),E=k(2),O=k(3);if((T===69||T===101)&&digit(E))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);else if((T===69||T===101)&&(E===43||E===45)&&digit(O))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);let j=Z(e);return{type:w,value:j,repr:e}},Z=function(e){return+e},Q=function(){for(;A();){if(D===41||M())return;U()&&z()}},$=0;for(;!M(k());)if(E.push(N()),$++,$>w.length*2)throw Error(`I'm infinite-looping!`);return E}var CSSParserToken=class{constructor(){__publicField(this,`tokenType`,``),__publicField(this,`value`)}toJSON(){return{token:this.tokenType}}toString(){return this.tokenType}toSource(){return`${this}`}},BadStringToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`BADSTRING`)}},BadURLToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`BADURL`)}},WhitespaceToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`WHITESPACE`)}toString(){return`WS`}toSource(){return` `}},CDOToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`CDO`)}toSource(){return`<!--`}},CDCToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`CDC`)}toSource(){return`-->`}},ColonToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`:`)}},SemicolonToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`;`)}},CommaToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`,`)}},GroupingToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`value`,``),__publicField(this,`mirror`,``)}},OpenCurlyToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`{`),this.value=`{`,this.mirror=`}`}},CloseCurlyToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`}`),this.value=`}`,this.mirror=`{`}},OpenSquareToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`[`),this.value=`[`,this.mirror=`]`}},CloseSquareToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`]`),this.value=`]`,this.mirror=`[`}},OpenParenToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`(`),this.value=`(`,this.mirror=`)`}},CloseParenToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`)`),this.value=`)`,this.mirror=`(`}},IncludeMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`~=`)}},DashMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`|=`)}},PrefixMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`^=`)}},SuffixMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`$=`)}},SubstringMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`*=`)}},ColumnToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`||`)}},EOFToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`EOF`)}toSource(){return``}},DelimToken=class extends CSSParserToken{constructor(e){super(),__publicField(this,`tokenType`,`DELIM`),__publicField(this,`value`,``),this.value=stringFromCode(e)}toString(){return`DELIM(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}toSource(){return this.value===`\\`?`\\
1
+ import{page}from"@vitest/browser/context";import{stringify}from"vitest/internal/browser";var __defProp=Object.defineProperty,__defNormalProp=(e,w,E)=>w in e?__defProp(e,w,{enumerable:!0,configurable:!0,writable:!0,value:E}):e[w]=E,__publicField=(e,w,T)=>__defNormalProp(e,typeof w==`symbol`?w:w+``,T);function escapeWithQuotes(e,w=`'`){let T=JSON.stringify(e),E=T.substring(1,T.length-1).replace(/\\"/g,`"`);if(w===`'`)return w+E.replace(/'/g,`\\'`)+w;if(w===`"`)return w+E.replace(/"/g,`\\"`)+w;if(w==="`")return w+E.replace(/`/g,"`")+w;throw Error(`Invalid escape char`)}function cssEscape(e){let w=``;for(let T=0;T<e.length;T++)w+=cssEscapeOne(e,T);return w}function quoteCSSAttributeValue(e){return`"${cssEscape(e).replace(/\\ /g,` `)}"`}function cssEscapeOne(e,w){let T=e.charCodeAt(w);return T===0?`�`:T>=1&&T<=31||T>=48&&T<=57&&(w===0||w===1&&e.charCodeAt(0)===45)?`\\${T.toString(16)} `:w===0&&T===45&&e.length===1?`\\${e.charAt(w)}`:T>=128||T===45||T===95||T>=48&&T<=57||T>=65&&T<=90||T>=97&&T<=122?e.charAt(w):`\\${e.charAt(w)}`}function normalizeWhiteSpace(e){let w=e.replace(/[\u200b\u00ad]/g,``).trim().replace(/\s+/g,` `);return w}function normalizeEscapedRegexQuotes(e){return e.replace(/(^|[^\\])(\\\\)*\\(['"`])/g,`$1$2$3`)}function escapeRegexForSelector(e){return e.unicode||e.unicodeSets?String(e):String(e).replace(/(^|[^\\])(\\\\)*(["'`])/g,`$1$2\\$3`).replace(/>>/g,`\\>\\>`)}function escapeForTextSelector(e,w){return typeof e==`string`?`${JSON.stringify(e)}${w?`s`:`i`}`:escapeRegexForSelector(e)}function escapeForAttributeSelector(e,w){return typeof e==`string`?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"${w?`s`:`i`}`:escapeRegexForSelector(e)}function trimString(e,w,T=``){if(e.length<=w)return e;let E=[...e];return E.length>w?E.slice(0,w-T.length).join(``)+T:E.join(``)}function trimStringWithEllipsis(e,w){return trimString(e,w,`…`)}function escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}var between=function(e,w,T){return e>=w&&e<=T};function digit(e){return between(e,48,57)}function hexdigit(e){return digit(e)||between(e,65,70)||between(e,97,102)}function uppercaseletter(e){return between(e,65,90)}function lowercaseletter(e){return between(e,97,122)}function letter(e){return uppercaseletter(e)||lowercaseletter(e)}function nonascii(e){return e>=128}function namestartchar(e){return letter(e)||nonascii(e)||e===95}function namechar(e){return namestartchar(e)||digit(e)||e===45}function nonprintable(e){return between(e,0,8)||e===11||between(e,14,31)||e===127}function newline(e){return e===10}function whitespace(e){return newline(e)||e===9||e===32}var maximumallowedcodepoint=1114111,InvalidCharacterError=class extends Error{constructor(e){super(e),this.name=`InvalidCharacterError`}};function preprocess(e){let w=[];for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===13&&e.charCodeAt(T+1)===10&&(E=10,T++),(E===13||E===12)&&(E=10),E===0&&(E=65533),between(E,55296,56319)&&between(e.charCodeAt(T+1),56320,57343)){let w=E-55296,D=e.charCodeAt(T+1)-56320;E=2**16+w*2**10+D,T++}w.push(E)}return w}function stringFromCode(e){if(e<=65535)return String.fromCharCode(e);e-=2**16;let w=Math.floor(e/2**10)+55296,T=e%2**10+56320;return String.fromCharCode(w)+String.fromCharCode(T)}function tokenize(e){let w=preprocess(e),T=-1,E=[],D,O=function(e){return e>=w.length?-1:w[e]},k=function(e){if(e===void 0&&(e=1),e>3)throw`Spec Error: no more than three codepoints of lookahead.`;return O(T+e)},A=function(e){return e===void 0&&(e=1),T+=e,D=O(T),!0},j=function(){return--T,!0},M=function(e){return e===void 0&&(e=D),e===-1},N=function(){if(P(),A(),whitespace(D)){for(;whitespace(k());)A();return new WhitespaceToken}else if(D===34)return L();else if(D===35)if(namechar(k())||B(k(1),k(2))){let e=new HashToken(``);return W(k(1),k(2),k(3))&&(e.type=`id`),e.value=Y(),e}else return new DelimToken(D);else if(D===36)return k()===61?(A(),new SuffixMatchToken):new DelimToken(D);else if(D===39)return L();else if(D===40)return new OpenParenToken;else if(D===41)return new CloseParenToken;else if(D===42)return k()===61?(A(),new SubstringMatchToken):new DelimToken(D);else if(D===43)return J()?(j(),F()):new DelimToken(D);else if(D===44)return new CommaToken;else if(D===45)return J()?(j(),F()):k(1)===45&&k(2)===62?(A(2),new CDCToken):G()?(j(),I()):new DelimToken(D);else if(D===46)return J()?(j(),F()):new DelimToken(D);else if(D===58)return new ColonToken;else if(D===59)return new SemicolonToken;else if(D===60)return k(1)===33&&k(2)===45&&k(3)===45?(A(3),new CDOToken):new DelimToken(D);else if(D===64)return W(k(1),k(2),k(3))?new AtKeywordToken(Y()):new DelimToken(D);else if(D===91)return new OpenSquareToken;else if(D===92)return U()?(j(),I()):new DelimToken(D);else if(D===93)return new CloseSquareToken;else if(D===94)return k()===61?(A(),new PrefixMatchToken):new DelimToken(D);else if(D===123)return new OpenCurlyToken;else if(D===124)return k()===61?(A(),new DashMatchToken):k()===124?(A(),new ColumnToken):new DelimToken(D);else if(D===125)return new CloseCurlyToken;else if(D===126)return k()===61?(A(),new IncludeMatchToken):new DelimToken(D);else if(digit(D))return j(),F();else if(namestartchar(D))return j(),I();else if(M())return new EOFToken;else return new DelimToken(D)},P=function(){for(;k(1)===47&&k(2)===42;)for(A(2);;)if(A(),D===42&&k()===47){A();break}else if(M())return},F=function(){let e=X();if(W(k(1),k(2),k(3))){let w=new DimensionToken;return w.value=e.value,w.repr=e.repr,w.type=e.type,w.unit=Y(),w}else if(k()===37){A();let w=new PercentageToken;return w.value=e.value,w.repr=e.repr,w}else{let w=new NumberToken;return w.value=e.value,w.repr=e.repr,w.type=e.type,w}},I=function(){let e=Y();if(e.toLowerCase()===`url`&&k()===40){for(A();whitespace(k(1))&&whitespace(k(2));)A();return k()===34||k()===39||whitespace(k())&&(k(2)===34||k(2)===39)?new FunctionToken(e):R()}else if(k()===40)return A(),new FunctionToken(e);else return new IdentToken(e)},L=function(e){e===void 0&&(e=D);let w=``;for(;A();){if(D===e||M())return new StringToken(w);if(newline(D))return j(),new BadStringToken;D===92?M(k())||(newline(k())?A():w+=stringFromCode(z())):w+=stringFromCode(D)}throw Error(`Internal error`)},R=function(){let e=new URLToken(``);for(;whitespace(k());)A();if(M(k()))return e;for(;A();){if(D===41||M())return e;if(whitespace(D)){for(;whitespace(k());)A();return k()===41||M(k())?(A(),e):(Q(),new BadURLToken)}else if(D===34||D===39||D===40||nonprintable(D))return Q(),new BadURLToken;else if(D===92)if(U())e.value+=stringFromCode(z());else return Q(),new BadURLToken;else e.value+=stringFromCode(D)}throw Error(`Internal error`)},z=function(){if(A(),hexdigit(D)){let e=[D];for(let w=0;w<5&&hexdigit(k());w++)A(),e.push(D);whitespace(k())&&A();let w=Number.parseInt(e.map(e=>String.fromCharCode(e)).join(``),16);return w>maximumallowedcodepoint&&(w=65533),w}else if(M())return 65533;else return D},B=function(e,w){return!(e!==92||newline(w))},U=function(){return B(D,k())},W=function(e,w,T){return e===45?namestartchar(w)||w===45||B(w,T):namestartchar(e)?!0:e===92?B(e,w):!1},G=function(){return W(D,k(1),k(2))},K=function(e,w,T){return e===43||e===45?!!(digit(w)||w===46&&digit(T)):e===46?!!digit(w):!!digit(e)},J=function(){return K(D,k(1),k(2))},Y=function(){let e=``;for(;A();)if(namechar(D))e+=stringFromCode(D);else if(U())e+=stringFromCode(z());else return j(),e;throw Error(`Internal parse error`)},X=function(){let e=``,w=`integer`;for((k()===43||k()===45)&&(A(),e+=stringFromCode(D));digit(k());)A(),e+=stringFromCode(D);if(k(1)===46&&digit(k(2)))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);let T=k(1),E=k(2),O=k(3);if((T===69||T===101)&&digit(E))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);else if((T===69||T===101)&&(E===43||E===45)&&digit(O))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);let j=Z(e);return{type:w,value:j,repr:e}},Z=function(e){return+e},Q=function(){for(;A();){if(D===41||M())return;U()&&z()}},$=0;for(;!M(k());)if(E.push(N()),$++,$>w.length*2)throw Error(`I'm infinite-looping!`);return E}var CSSParserToken=class{constructor(){__publicField(this,`tokenType`,``),__publicField(this,`value`)}toJSON(){return{token:this.tokenType}}toString(){return this.tokenType}toSource(){return`${this}`}},BadStringToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`BADSTRING`)}},BadURLToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`BADURL`)}},WhitespaceToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`WHITESPACE`)}toString(){return`WS`}toSource(){return` `}},CDOToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`CDO`)}toSource(){return`<!--`}},CDCToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`CDC`)}toSource(){return`-->`}},ColonToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`:`)}},SemicolonToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`;`)}},CommaToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`,`)}},GroupingToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`value`,``),__publicField(this,`mirror`,``)}},OpenCurlyToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`{`),this.value=`{`,this.mirror=`}`}},CloseCurlyToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`}`),this.value=`}`,this.mirror=`{`}},OpenSquareToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`[`),this.value=`[`,this.mirror=`]`}},CloseSquareToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`]`),this.value=`]`,this.mirror=`[`}},OpenParenToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`(`),this.value=`(`,this.mirror=`)`}},CloseParenToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`)`),this.value=`)`,this.mirror=`(`}},IncludeMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`~=`)}},DashMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`|=`)}},PrefixMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`^=`)}},SuffixMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`$=`)}},SubstringMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`*=`)}},ColumnToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`||`)}},EOFToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`EOF`)}toSource(){return``}},DelimToken=class extends CSSParserToken{constructor(e){super(),__publicField(this,`tokenType`,`DELIM`),__publicField(this,`value`,``),this.value=stringFromCode(e)}toString(){return`DELIM(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}toSource(){return this.value===`\\`?`\\
2
2
  `:this.value}},StringValuedToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`value`,``)}ASCIIMatch(e){return this.value.toLowerCase()===e.toLowerCase()}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}},IdentToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`IDENT`),this.value=e}toString(){return`IDENT(${this.value})`}toSource(){return escapeIdent(this.value)}},FunctionToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`FUNCTION`),__publicField(this,`mirror`),this.value=e,this.mirror=`)`}toString(){return`FUNCTION(${this.value})`}toSource(){return`${escapeIdent(this.value)}(`}},AtKeywordToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`AT-KEYWORD`),this.value=e}toString(){return`AT(${this.value})`}toSource(){return`@${escapeIdent(this.value)}`}},HashToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`HASH`),__publicField(this,`type`),this.value=e,this.type=`unrestricted`}toString(){return`HASH(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e}toSource(){return this.type===`id`?`#${escapeIdent(this.value)}`:`#${escapeHash(this.value)}`}},StringToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`STRING`),this.value=e}toString(){return`"${escapeString(this.value)}"`}},URLToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`URL`),this.value=e}toString(){return`URL(${this.value})`}toSource(){return`url("${escapeString(this.value)}")`}},NumberToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`NUMBER`),__publicField(this,`type`),__publicField(this,`repr`),this.type=`integer`,this.repr=``}toString(){return this.type===`integer`?`INT(${this.value})`:`NUMBER(${this.value})`}toJSON(){let e=super.toJSON();return e.value=this.value,e.type=this.type,e.repr=this.repr,e}toSource(){return this.repr}},PercentageToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`PERCENTAGE`),__publicField(this,`repr`),this.repr=``}toString(){return`PERCENTAGE(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.repr=this.repr,e}toSource(){return`${this.repr}%`}},DimensionToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`DIMENSION`),__publicField(this,`type`),__publicField(this,`repr`),__publicField(this,`unit`),this.type=`integer`,this.repr=``,this.unit=``}toString(){return`DIM(${this.value},${this.unit})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e.repr=this.repr,e.unit=this.unit,e}toSource(){let e=this.repr,w=escapeIdent(this.unit);return w[0].toLowerCase()===`e`&&(w[1]===`-`||between(w.charCodeAt(1),48,57))&&(w=`\\65 ${w.slice(1,w.length)}`),e+w}};function escapeIdent(e){e=`${e}`;let w=``,T=e.charCodeAt(0);for(let E=0;E<e.length;E++){let D=e.charCodeAt(E);if(D===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);between(D,1,31)||D===127||E===0&&between(D,48,57)||E===1&&between(D,48,57)&&T===45?w+=`\\${D.toString(16)} `:D>=128||D===45||D===95||between(D,48,57)||between(D,65,90)||between(D,97,122)?w+=e[E]:w+=`\\${e[E]}`}return w}function escapeHash(e){e=`${e}`;let w=``;for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);E>=128||E===45||E===95||between(E,48,57)||between(E,65,90)||between(E,97,122)?w+=e[T]:w+=`\\${E.toString(16)} `}return w}function escapeString(e){e=`${e}`;let w=``;for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);between(E,1,31)||E===127?w+=`\\${E.toString(16)} `:E===34||E===92?w+=`\\${e[T]}`:w+=e[T]}return w}var InvalidSelectorError=class extends Error{};function parseCSS(e,w){let T;try{T=tokenize(e),T[T.length-1]instanceof EOFToken||T.push(new EOFToken)}catch(w){let T=`${w.message} while parsing selector "${e}"`,E=(w.stack||``).indexOf(w.message);throw E!==-1&&(w.stack=w.stack.substring(0,E)+T+w.stack.substring(E+w.message.length)),w.message=T,w}let E=T.find(e=>e instanceof AtKeywordToken||e instanceof BadStringToken||e instanceof BadURLToken||e instanceof ColumnToken||e instanceof CDOToken||e instanceof CDCToken||e instanceof SemicolonToken||e instanceof OpenCurlyToken||e instanceof CloseCurlyToken||e instanceof URLToken||e instanceof PercentageToken);if(E)throw new InvalidSelectorError(`Unsupported token "${E.toSource()}" while parsing selector "${e}"`);let D=0,O=new Set;function k(){return new InvalidSelectorError(`Unexpected token "${T[D].toSource()}" while parsing selector "${e}"`)}function A(){for(;T[D]instanceof WhitespaceToken;)D++}function j(e=D){return T[e]instanceof IdentToken}function M(e=D){return T[e]instanceof StringToken}function N(e=D){return T[e]instanceof NumberToken}function P(e=D){return T[e]instanceof CommaToken}function F(e=D){return T[e]instanceof OpenParenToken}function I(e=D){return T[e]instanceof CloseParenToken}function L(e=D){return T[e]instanceof FunctionToken}function R(e=D){return T[e]instanceof DelimToken&&T[e].value===`*`}function z(e=D){return T[e]instanceof EOFToken}function B(e=D){return T[e]instanceof DelimToken&&[`>`,`+`,`~`].includes(T[e].value)}function V(e=D){return P(e)||I(e)||z(e)||B(e)||T[e]instanceof WhitespaceToken}function H(){let e=[U()];for(;A(),P();)D++,e.push(U());return e}function U(){return A(),N()||M()?T[D++].value:W()}function W(){let e={simples:[]};for(A(),B()?e.simples.push({selector:{functions:[{name:`scope`,args:[]}]},combinator:``}):e.simples.push({selector:G(),combinator:``});;){if(A(),B())e.simples[e.simples.length-1].combinator=T[D++].value,A();else if(V())break;e.simples.push({combinator:``,selector:G()})}return e}function G(){let e=``,E=[];for(;!V();)if(j()||R())e+=T[D++].toSource();else if(T[D]instanceof HashToken)e+=T[D++].toSource();else if(T[D]instanceof DelimToken&&T[D].value===`.`)if(D++,j())e+=`.${T[D++].toSource()}`;else throw k();else if(T[D]instanceof ColonToken)if(D++,j())if(!w.has(T[D].value.toLowerCase()))e+=`:${T[D++].toSource()}`;else{let e=T[D++].value.toLowerCase();E.push({name:e,args:[]}),O.add(e)}else if(L()){let j=T[D++].value.toLowerCase();if(w.has(j)?(E.push({name:j,args:H()}),O.add(j)):e+=`:${j}(${K()})`,A(),!I())throw k();D++}else throw k();else if(T[D]instanceof OpenSquareToken){for(e+=`[`,D++;!(T[D]instanceof CloseSquareToken)&&!z();)e+=T[D++].toSource();if(!(T[D]instanceof CloseSquareToken))throw k();e+=`]`,D++}else throw k();if(!e&&!E.length)throw k();return{css:e||void 0,functions:E}}function K(){let e=``,w=1;for(;!z()&&((F()||L())&&w++,I()&&w--,w);)e+=T[D++].toSource();return e}let q=H();if(!z())throw k();if(q.some(e=>typeof e!=`object`||!(`simples`in e)))throw new InvalidSelectorError(`Error while parsing selector "${e}"`);return{selector:q,names:Array.from(O)}}var kNestedSelectorNames=new Set([`internal:has`,`internal:has-not`,`internal:and`,`internal:or`,`internal:chain`,`left-of`,`right-of`,`above`,`below`,`near`]),kNestedSelectorNamesWithDistance=new Set([`left-of`,`right-of`,`above`,`below`,`near`]),customCSSNames=new Set([`not`,`is`,`where`,`has`,`scope`,`light`,`visible`,`text`,`text-matches`,`text-is`,`has-text`,`above`,`below`,`right-of`,`left-of`,`near`,`nth-match`]);function parseSelector(e){let w=parseSelectorString(e),T=[];for(let e of w.parts){if(e.name===`css`||e.name===`css:light`){e.name===`css:light`&&(e.body=`:light(${e.body})`);let w=parseCSS(e.body,customCSSNames);T.push({name:`css`,body:w.selector,source:e.body});continue}if(kNestedSelectorNames.has(e.name)){let w,E;try{let T=JSON.parse(`[${e.body}]`);if(!Array.isArray(T)||T.length<1||T.length>2||typeof T[0]!=`string`)throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`);if(w=T[0],T.length===2){if(typeof T[1]!=`number`||!kNestedSelectorNamesWithDistance.has(e.name))throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`);E=T[1]}}catch{throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`)}let D={name:e.name,source:e.body,body:{parsed:parseSelector(w),distance:E}},O=[...D.body.parsed.parts].reverse().find(e=>e.name===`internal:control`&&e.body===`enter-frame`),k=O?D.body.parsed.parts.indexOf(O):-1;k!==-1&&selectorPartsEqual(D.body.parsed.parts.slice(0,k+1),T.slice(0,k+1))&&D.body.parsed.parts.splice(0,k+1),T.push(D);continue}T.push({...e,source:e.body})}if(kNestedSelectorNames.has(T[0].name))throw new InvalidSelectorError(`"${T[0].name}" selector cannot be first`);return{capture:w.capture,parts:T}}function selectorPartsEqual(e,w){return stringifySelector({parts:e})===stringifySelector({parts:w})}function stringifySelector(e,w){return typeof e==`string`?e:e.parts.map((T,E)=>{let D=!0;!w&&E!==e.capture&&(T.name===`css`||T.name===`xpath`&&T.source.startsWith(`//`)||T.source.startsWith(`..`))&&(D=!1);let O=D?`${T.name}=`:``;return`${E===e.capture?`*`:``}${O}${T.source}`}).join(` >> `)}function visitAllSelectorParts(e,w){let T=(e,E)=>{for(let D of e.parts)w(D,E),kNestedSelectorNames.has(D.name)&&T(D.body.parsed,!0)};T(e,!1)}function parseSelectorString(e){let w=0,T,E=0,D={parts:[]},O=()=>{let T=e.substring(E,w).trim(),O=T.indexOf(`=`),k,A;O!==-1&&T.substring(0,O).trim().match(/^[\w\-+:*]+$/)?(k=T.substring(0,O).trim(),A=T.substring(O+1)):T.length>1&&T[0]===`"`&&T[T.length-1]===`"`||T.length>1&&T[0]===`'`&&T[T.length-1]===`'`?(k=`text`,A=T):/^\(*\/\//.test(T)||T.startsWith(`..`)?(k=`xpath`,A=T):(k=`css`,A=T);let j=!1;if(k[0]===`*`&&(j=!0,k=k.substring(1)),D.parts.push({name:k,body:A}),j){if(D.capture!==void 0)throw new InvalidSelectorError(`Only one of the selectors can capture using * modifier`);D.capture=D.parts.length-1}};if(!e.includes(`>>`))return w=e.length,O(),D;let k=()=>{let T=e.substring(E,w),D=T.match(/^\s*text\s*=(.*)$/);return!!D&&!!D[1]};for(;w<e.length;){let D=e[w];D===`\\`&&w+1<e.length?w+=2:D===T?(T=void 0,w++):!T&&(D===`"`||D===`'`||D==="`")&&!k()?(T=D,w++):!T&&D===`>`&&e[w+1]===`>`?(O(),w+=2,E=w):w++}return O(),D}function parseAttributeSelector(e,w){let T=0,E=e.length===0,D=()=>e[T]||``,O=()=>{let w=D();return++T,E=T>=e.length,w},k=w=>{throw E?new InvalidSelectorError(`Unexpected end of selector while parsing selector \`${e}\``):new InvalidSelectorError(`Error while parsing selector \`${e}\` - unexpected symbol "${D()}" at position ${T}${w?` during ${w}`:``}`)};function A(){for(;!E&&/\s/.test(D());)O()}function j(e){return e>=`€`||e>=`0`&&e<=`9`||e>=`A`&&e<=`Z`||e>=`a`&&e<=`z`||e>=`0`&&e<=`9`||e===`_`||e===`-`}function M(){let e=``;for(A();!E&&j(D());)e+=O();return e}function N(e){let w=O();for(w!==e&&k(`parsing quoted string`);!E&&D()!==e;)D()===`\\`&&O(),w+=O();return D()!==e&&k(`parsing quoted string`),w+=O(),w}function P(){O()!==`/`&&k(`parsing regular expression`);let w=``,T=!1;for(;!E;){if(D()===`\\`)w+=O(),E&&k(`parsing regular expression`);else if(T&&D()===`]`)T=!1;else if(!T&&D()===`[`)T=!0;else if(!T&&D()===`/`)break;w+=O()}O()!==`/`&&k(`parsing regular expression`);let A=``;for(;!E&&D().match(/[dgimsuy]/);)A+=O();try{return new RegExp(w,A)}catch(w){throw new InvalidSelectorError(`Error while parsing selector \`${e}\`: ${w.message}`)}}function F(){let e=``;return A(),e=D()===`'`||D()===`"`?N(D()).slice(1,-1):M(),e||k(`parsing property path`),e}function I(){A();let e=``;return E||(e+=O()),!E&&e!==`=`&&(e+=O()),[`=`,`*=`,`^=`,`$=`,`|=`,`~=`].includes(e)||k(`parsing operator`),e}function L(){O();let w=[];for(w.push(F()),A();D()===`.`;)O(),w.push(F()),A();if(D()===`]`)return O(),{name:w.join(`.`),jsonPath:w,op:`<truthy>`,value:null,caseSensitive:!1};let T=I(),M,L=!0;if(A(),D()===`/`){if(T!==`=`)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - cannot use ${T} in attribute with regular expression`);M=P()}else if(D()===`'`||D()===`"`)M=N(D()).slice(1,-1),A(),D()===`i`||D()===`I`?(L=!1,O()):(D()===`s`||D()===`S`)&&(L=!0,O());else{for(M=``;!E&&(j(D())||D()===`+`||D()===`.`);)M+=O();M===`true`?M=!0:M===`false`&&(M=!1)}if(A(),D()!==`]`&&k(`parsing attribute value`),O(),T!==`=`&&typeof M!=`string`)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - cannot use ${T} in attribute with non-string matching value - ${M}`);return{name:w.join(`.`),jsonPath:w,op:T,value:M,caseSensitive:L}}let R={name:``,attributes:[]};for(R.name=M(),A();D()===`[`;)R.attributes.push(L()),A();if(E||k(void 0),!R.name&&!R.attributes.length)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - selector cannot be empty`);return R}function hasExplicitAccessibleName(e){return e.hasAttribute(`aria-label`)||e.hasAttribute(`aria-labelledby`)}var kAncestorPreventingLandmark=`article:not([role]), aside:not([role]), main:not([role]), nav:not([role]), section:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]`,kGlobalAriaAttributes=new Map([[`aria-atomic`,void 0],[`aria-busy`,void 0],[`aria-controls`,void 0],[`aria-current`,void 0],[`aria-describedby`,void 0],[`aria-details`,void 0],[`aria-dropeffect`,void 0],[`aria-flowto`,void 0],[`aria-grabbed`,void 0],[`aria-hidden`,void 0],[`aria-keyshortcuts`,void 0],[`aria-label`,new Set([`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`])],[`aria-labelledby`,new Set([`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`])],[`aria-live`,void 0],[`aria-owns`,void 0],[`aria-relevant`,void 0],[`aria-roledescription`,new Set([`generic`])]]);function hasGlobalAriaAttribute(e,w){return[...kGlobalAriaAttributes].some(([T,E])=>!E?.has(w||``)&&e.hasAttribute(T))}function hasTabIndex(e){return!Number.isNaN(Number(String(e.getAttribute(`tabindex`))))}function isFocusable(e){return!isNativelyDisabled(e)&&(isNativelyFocusable(e)||hasTabIndex(e))}function isNativelyFocusable(e){let w=elementSafeTagName(e);return[`BUTTON`,`DETAILS`,`SELECT`,`TEXTAREA`].includes(w)?!0:w===`A`||w===`AREA`?e.hasAttribute(`href`):w===`INPUT`?!e.hidden:!1}var kImplicitRoleByTagName={A:e=>e.hasAttribute(`href`)?`link`:null,AREA:e=>e.hasAttribute(`href`)?`link`:null,ARTICLE:()=>`article`,ASIDE:()=>`complementary`,BLOCKQUOTE:()=>`blockquote`,BUTTON:()=>`button`,CAPTION:()=>`caption`,CODE:()=>`code`,DATALIST:()=>`listbox`,DD:()=>`definition`,DEL:()=>`deletion`,DETAILS:()=>`group`,DFN:()=>`term`,DIALOG:()=>`dialog`,DT:()=>`term`,EM:()=>`emphasis`,FIELDSET:()=>`group`,FIGURE:()=>`figure`,FOOTER:e=>closestCrossShadow(e,kAncestorPreventingLandmark)?null:`contentinfo`,FORM:e=>hasExplicitAccessibleName(e)?`form`:null,H1:()=>`heading`,H2:()=>`heading`,H3:()=>`heading`,H4:()=>`heading`,H5:()=>`heading`,H6:()=>`heading`,HEADER:e=>closestCrossShadow(e,kAncestorPreventingLandmark)?null:`banner`,HR:()=>`separator`,HTML:()=>`document`,IMG:e=>e.getAttribute(`alt`)===``&&!e.getAttribute(`title`)&&!hasGlobalAriaAttribute(e)&&!hasTabIndex(e)?`presentation`:`img`,INPUT:e=>{let w=e.type.toLowerCase();if(w===`search`)return e.hasAttribute(`list`)?`combobox`:`searchbox`;if([`email`,`tel`,`text`,`url`,``].includes(w)){let w=getIdRefs(e,e.getAttribute(`list`))[0];return w&&elementSafeTagName(w)===`DATALIST`?`combobox`:`textbox`}return w===`hidden`?``:{button:`button`,checkbox:`checkbox`,image:`button`,number:`spinbutton`,radio:`radio`,range:`slider`,reset:`button`,submit:`button`}[w]||`textbox`},INS:()=>`insertion`,LI:()=>`listitem`,MAIN:()=>`main`,MARK:()=>`mark`,MATH:()=>`math`,MENU:()=>`list`,METER:()=>`meter`,NAV:()=>`navigation`,OL:()=>`list`,OPTGROUP:()=>`group`,OPTION:()=>`option`,OUTPUT:()=>`status`,P:()=>`paragraph`,PROGRESS:()=>`progressbar`,SECTION:e=>hasExplicitAccessibleName(e)?`region`:null,SELECT:e=>e.hasAttribute(`multiple`)||e.size>1?`listbox`:`combobox`,STRONG:()=>`strong`,SUB:()=>`subscript`,SUP:()=>`superscript`,SVG:()=>`img`,TABLE:()=>`table`,TBODY:()=>`rowgroup`,TD:e=>{let w=closestCrossShadow(e,`table`),T=w?getExplicitAriaRole(w):``;return T===`grid`||T===`treegrid`?`gridcell`:`cell`},TEXTAREA:()=>`textbox`,TFOOT:()=>`rowgroup`,TH:e=>{if(e.getAttribute(`scope`)===`col`)return`columnheader`;if(e.getAttribute(`scope`)===`row`)return`rowheader`;let w=closestCrossShadow(e,`table`),T=w?getExplicitAriaRole(w):``;return T===`grid`||T===`treegrid`?`gridcell`:`cell`},THEAD:()=>`rowgroup`,TIME:()=>`time`,TR:()=>`row`,UL:()=>`list`},kPresentationInheritanceParents={DD:[`DL`,`DIV`],DIV:[`DL`],DT:[`DL`,`DIV`],LI:[`OL`,`UL`],TBODY:[`TABLE`],TD:[`TR`],TFOOT:[`TABLE`],TH:[`TR`],THEAD:[`TABLE`],TR:[`THEAD`,`TBODY`,`TFOOT`,`TABLE`]};function getImplicitAriaRole(e){var w;let T=(w=kImplicitRoleByTagName[elementSafeTagName(e)])?.call(kImplicitRoleByTagName,e)||``;if(!T)return null;let E=e;for(;E;){let e=parentElementOrShadowHost(E),w=kPresentationInheritanceParents[elementSafeTagName(E)];if(!w||!e||!w.includes(elementSafeTagName(e)))break;let T=getExplicitAriaRole(e);if((T===`none`||T===`presentation`)&&!hasPresentationConflictResolution(e,T))return T;E=e}return T}var allRoles=`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.command.complementary.composite.contentinfo.definition.deletion.dialog.directory.document.emphasis.feed.figure.form.generic.grid.gridcell.group.heading.img.input.insertion.landmark.link.list.listbox.listitem.log.main.marquee.math.meter.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.range.region.roletype.row.rowgroup.rowheader.scrollbar.search.searchbox.section.sectionhead.select.separator.slider.spinbutton.status.strong.structure.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem.widget.window`.split(`.`),abstractRoles=[`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`],validRoles=allRoles.filter(e=>!abstractRoles.includes(e));function getExplicitAriaRole(e){let w=(e.getAttribute(`role`)||``).split(` `).map(e=>e.trim());return w.find(e=>validRoles.includes(e))||null}function hasPresentationConflictResolution(e,w){return hasGlobalAriaAttribute(e,w)||isFocusable(e)}function getAriaRole(e){let w=getExplicitAriaRole(e);if(!w)return getImplicitAriaRole(e);if(w===`none`||w===`presentation`){let w=getImplicitAriaRole(e);if(hasPresentationConflictResolution(e,w))return w}return w}function getAriaBoolean(e){return e===null?void 0:e.toLowerCase()===`true`}function isElementIgnoredForAria(e){return[`STYLE`,`SCRIPT`,`NOSCRIPT`,`TEMPLATE`].includes(elementSafeTagName(e))}function isElementHiddenForAria(e){if(isElementIgnoredForAria(e))return!0;let w=getElementComputedStyle(e),T=e.nodeName===`SLOT`;if(w?.display===`contents`&&!T){for(let w=e.firstChild;w;w=w.nextSibling)if(w.nodeType===1&&!isElementHiddenForAria(w)||w.nodeType===3&&isVisibleTextNode(w))return!1;return!0}let E=e.nodeName===`OPTION`&&!!e.closest(`select`);return!E&&!T&&!isElementStyleVisibilityVisible(e,w)?!0:belongsToDisplayNoneOrAriaHiddenOrNonSlotted(e)}function belongsToDisplayNoneOrAriaHiddenOrNonSlotted(e){let w=cacheIsHidden?.get(e);if(w===void 0){if(w=!1,e.parentElement&&e.parentElement.shadowRoot&&!e.assignedSlot&&(w=!0),!w){let T=getElementComputedStyle(e);w=!T||T.display===`none`||getAriaBoolean(e.getAttribute(`aria-hidden`))===!0}if(!w){let T=parentElementOrShadowHost(e);T&&(w=belongsToDisplayNoneOrAriaHiddenOrNonSlotted(T))}cacheIsHidden?.set(e,w)}return w}function getIdRefs(e,w){if(!w)return[];let T=enclosingShadowRootOrDocument(e);if(!T)return[];try{let e=w.split(` `).filter(e=>!!e),E=new Set;for(let w of e){let e=T.querySelector(`#${CSS.escape(w)}`);e&&E.add(e)}return[...E]}catch{return[]}}function trimFlatString(e){return e.trim()}function asFlatString(e){return e.split(`\xA0`).map(e=>e.replace(/\r\n/g,`
3
3
  `).replace(/[\u200b\u00ad]/g,``).replace(/\s\s*/g,` `)).join(`\xA0`).trim()}function queryInAriaOwned(e,w){let T=[...e.querySelectorAll(w)];for(let E of getIdRefs(e,e.getAttribute(`aria-owns`)))E.matches(w)&&T.push(E),T.push(...E.querySelectorAll(w));return T}function getPseudoContent(e,w){let T=w===`::before`?cachePseudoContentBefore:cachePseudoContentAfter;if(T?.has(e))return T?.get(e)||``;let E=getElementComputedStyle(e,w),D=getPseudoContentImpl(E);return T&&T.set(e,D),D}function getPseudoContentImpl(e){if(!e)return``;let w=e.content;if(w[0]===`'`&&w[w.length-1]===`'`||w[0]===`"`&&w[w.length-1]===`"`){let T=w.substring(1,w.length-1),E=e.display||`inline`;return E===`inline`?T:` ${T} `}return``}function getAriaLabelledByElements(e){let w=e.getAttribute(`aria-labelledby`);return w===null?null:getIdRefs(e,w)}function allowsNameFromContent(e,w){let T=[`button`,`cell`,`checkbox`,`columnheader`,`gridcell`,`heading`,`link`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`option`,`radio`,`row`,`rowheader`,`switch`,`tab`,`tooltip`,`treeitem`].includes(e),E=w&&[``,`caption`,`code`,`contentinfo`,`definition`,`deletion`,`emphasis`,`insertion`,`list`,`listitem`,`mark`,`none`,`paragraph`,`presentation`,`region`,`row`,`rowgroup`,`section`,`strong`,`subscript`,`superscript`,`table`,`term`,`time`].includes(e);return T||E}function getElementAccessibleName(e,w){let T=w?cacheAccessibleNameHidden:cacheAccessibleName,E=T?.get(e);if(E===void 0){E=``;let D=[`caption`,`code`,`definition`,`deletion`,`emphasis`,`generic`,`insertion`,`mark`,`paragraph`,`presentation`,`strong`,`subscript`,`suggestion`,`superscript`,`term`,`time`].includes(getAriaRole(e)||``);D||(E=asFlatString(getTextAlternativeInternal(e,{includeHidden:w,visitedElements:new Set,embeddedInDescribedBy:void 0,embeddedInLabelledBy:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0,embeddedInTargetElement:`self`}))),T?.set(e,E)}return E}function getElementAccessibleDescription(e,w){let T=cacheAccessibleDescription,E=T?.get(e);if(E===void 0){if(E=``,e.hasAttribute(`aria-describedby`)){let T=getIdRefs(e,e.getAttribute(`aria-describedby`));E=asFlatString(T.map(e=>getTextAlternativeInternal(e,{includeHidden:w,visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:isElementHiddenForAria(e)}})).join(` `))}else E=e.hasAttribute(`aria-description`)?asFlatString(e.getAttribute(`aria-description`)||``):asFlatString(e.getAttribute(`title`)||``);T?.set(e,E)}return E}var kAriaInvalidRoles=[`application`,`checkbox`,`combobox`,`gridcell`,`listbox`,`radiogroup`,`slider`,`spinbutton`,`textbox`,`tree`,`columnheader`,`rowheader`,`searchbox`,`switch`,`treegrid`];function getAriaInvalid(e){let w=getAriaRole(e)||``;if(!w||!kAriaInvalidRoles.includes(w))return`false`;let T=e.getAttribute(`aria-invalid`);return!T||T.trim()===``||T.toLocaleLowerCase()===`false`?`false`:T===`true`||T===`grammar`||T===`spelling`?T:`true`}function getValidityInvalid(e){if(`validity`in e){let w=e.validity;return w?.valid===!1}return!1}function getElementAccessibleErrorMessage(e){let w=cacheAccessibleErrorMessage,T=cacheAccessibleErrorMessage?.get(e);if(T===void 0){T=``;let E=getAriaInvalid(e)!==`false`,D=getValidityInvalid(e);if(E||D){let w=e.getAttribute(`aria-errormessage`),E=getIdRefs(e,w),D=E.map(e=>asFlatString(getTextAlternativeInternal(e,{visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:isElementHiddenForAria(e)}})));T=D.join(` `).trim()}w?.set(e,T)}return T}function getTextAlternativeInternal(e,w){var T,E,D,O;if(w.visitedElements.has(e))return``;let k={...w,embeddedInTargetElement:w.embeddedInTargetElement===`self`?`descendant`:w.embeddedInTargetElement};if(!w.includeHidden){let k=!!(T=w.embeddedInLabelledBy)?.hidden||!!(E=w.embeddedInDescribedBy)?.hidden||!!(D=w.embeddedInNativeTextAlternative)?.hidden||!!(O=w.embeddedInLabel)?.hidden;if(isElementIgnoredForAria(e)||!k&&isElementHiddenForAria(e))return w.visitedElements.add(e),``}let A=getAriaLabelledByElements(e);if(!w.embeddedInLabelledBy){let e=(A||[]).map(e=>getTextAlternativeInternal(e,{...w,embeddedInLabelledBy:{element:e,hidden:isElementHiddenForAria(e)},embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0})).join(` `);if(e)return e}let j=getAriaRole(e)||``,M=elementSafeTagName(e);if(w.embeddedInLabel||w.embeddedInLabelledBy||w.embeddedInTargetElement===`descendant`){let T=[...e.labels||[]].includes(e),E=(A||[]).includes(e);if(!T&&!E){if(j===`textbox`)return w.visitedElements.add(e),M===`INPUT`||M===`TEXTAREA`?e.value:e.textContent||``;if([`combobox`,`listbox`].includes(j)){w.visitedElements.add(e);let T;if(M===`SELECT`)T=[...e.selectedOptions],!T.length&&e.options.length&&T.push(e.options[0]);else{let w=j===`combobox`?queryInAriaOwned(e,`*`).find(e=>getAriaRole(e)===`listbox`):e;T=w?queryInAriaOwned(w,`[aria-selected="true"]`).filter(e=>getAriaRole(e)===`option`):[]}return!T.length&&M===`INPUT`?e.value:T.map(e=>getTextAlternativeInternal(e,k)).join(` `)}if([`progressbar`,`scrollbar`,`slider`,`spinbutton`,`meter`].includes(j))return w.visitedElements.add(e),e.hasAttribute(`aria-valuetext`)?e.getAttribute(`aria-valuetext`)||``:e.hasAttribute(`aria-valuenow`)?e.getAttribute(`aria-valuenow`)||``:e.getAttribute(`value`)||``;if([`menu`].includes(j))return w.visitedElements.add(e),``}}let N=e.getAttribute(`aria-label`)||``;if(trimFlatString(N))return w.visitedElements.add(e),N;if(![`presentation`,`none`].includes(j)){if(M===`INPUT`&&[`button`,`submit`,`reset`].includes(e.type)){w.visitedElements.add(e);let T=e.value||``;if(trimFlatString(T))return T;if(e.type===`submit`)return`Submit`;if(e.type===`reset`)return`Reset`;let E=e.getAttribute(`title`)||``;return E}if(M===`INPUT`&&e.type===`image`){w.visitedElements.add(e);let T=e.labels||[];if(T.length&&!w.embeddedInLabelledBy)return getAccessibleNameFromAssociatedLabels(T,w);let E=e.getAttribute(`alt`)||``;if(trimFlatString(E))return E;let D=e.getAttribute(`title`)||``;return trimFlatString(D)?D:`Submit`}if(!A&&M===`BUTTON`){w.visitedElements.add(e);let T=e.labels||[];if(T.length)return getAccessibleNameFromAssociatedLabels(T,w)}if(!A&&M===`OUTPUT`){w.visitedElements.add(e);let T=e.labels||[];return T.length?getAccessibleNameFromAssociatedLabels(T,w):e.getAttribute(`title`)||``}if(!A&&(M===`TEXTAREA`||M===`SELECT`||M===`INPUT`)){w.visitedElements.add(e);let T=e.labels||[];if(T.length)return getAccessibleNameFromAssociatedLabels(T,w);let E=M===`INPUT`&&[`text`,`password`,`search`,`tel`,`email`,`url`].includes(e.type)||M===`TEXTAREA`,D=e.getAttribute(`placeholder`)||``,O=e.getAttribute(`title`)||``;return!E||O?O:D}if(!A&&M===`FIELDSET`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`LEGEND`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`title`)||``;return T}if(!A&&M===`FIGURE`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`FIGCAPTION`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`title`)||``;return T}if(M===`IMG`){w.visitedElements.add(e);let T=e.getAttribute(`alt`)||``;if(trimFlatString(T))return T;let E=e.getAttribute(`title`)||``;return E}if(M===`TABLE`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`CAPTION`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`summary`)||``;if(T)return T}if(M===`AREA`){w.visitedElements.add(e);let T=e.getAttribute(`alt`)||``;if(trimFlatString(T))return T;let E=e.getAttribute(`title`)||``;return E}if(M===`SVG`||e.ownerSVGElement){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`TITLE`&&w.ownerSVGElement)return getTextAlternativeInternal(w,{...k,embeddedInLabelledBy:{element:w,hidden:isElementHiddenForAria(w)}})}if(e.ownerSVGElement&&M===`A`){let T=e.getAttribute(`xlink:title`)||``;if(trimFlatString(T))return w.visitedElements.add(e),T}}let P=M===`SUMMARY`&&![`presentation`,`none`].includes(j);if(allowsNameFromContent(j,w.embeddedInTargetElement===`descendant`)||P||w.embeddedInLabelledBy||w.embeddedInDescribedBy||w.embeddedInLabel||w.embeddedInNativeTextAlternative){w.visitedElements.add(e);let T=innerAccumulatedElementText(e,k),E=w.embeddedInTargetElement===`self`?trimFlatString(T):T;if(E)return T}if(![`presentation`,`none`].includes(j)||M===`IFRAME`){w.visitedElements.add(e);let T=e.getAttribute(`title`)||``;if(trimFlatString(T))return T}return w.visitedElements.add(e),``}function innerAccumulatedElementText(e,w){let T=[],E=(e,E)=>{var D;if(!(E&&e.assignedSlot))if(e.nodeType===1){let E=(D=getElementComputedStyle(e))?.display||`inline`,O=getTextAlternativeInternal(e,w);(E!==`inline`||e.nodeName===`BR`)&&(O=` `+O+` `),T.push(O)}else e.nodeType===3&&T.push(e.textContent||``)};T.push(getPseudoContent(e,`::before`));let D=e.nodeName===`SLOT`?e.assignedNodes():[];if(D.length)for(let e of D)E(e,!1);else{for(let w=e.firstChild;w;w=w.nextSibling)E(w,!0);if(e.shadowRoot)for(let w=e.shadowRoot.firstChild;w;w=w.nextSibling)E(w,!0);for(let w of getIdRefs(e,e.getAttribute(`aria-owns`)))E(w,!0)}return T.push(getPseudoContent(e,`::after`)),T.join(``)}var kAriaSelectedRoles=[`gridcell`,`option`,`row`,`tab`,`rowheader`,`columnheader`,`treeitem`];function getAriaSelected(e){return elementSafeTagName(e)===`OPTION`?e.selected:kAriaSelectedRoles.includes(getAriaRole(e)||``)?getAriaBoolean(e.getAttribute(`aria-selected`))===!0:!1}var kAriaCheckedRoles=[`checkbox`,`menuitemcheckbox`,`option`,`radio`,`switch`,`menuitemradio`,`treeitem`];function getAriaChecked(e){let w=getChecked(e);return w===`error`?!1:w}function getChecked(e,w){let T=elementSafeTagName(e);if(T===`INPUT`&&e.indeterminate)return`mixed`;if(T===`INPUT`&&[`checkbox`,`radio`].includes(e.type))return e.checked;if(kAriaCheckedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-checked`);return w===`true`?!0:w===`mixed`?`mixed`:!1}return`error`}var kAriaPressedRoles=[`button`];function getAriaPressed(e){if(kAriaPressedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-pressed`);if(w===`true`)return!0;if(w===`mixed`)return`mixed`}return!1}var kAriaExpandedRoles=[`application`,`button`,`checkbox`,`combobox`,`gridcell`,`link`,`listbox`,`menuitem`,`row`,`rowheader`,`tab`,`treeitem`,`columnheader`,`menuitemcheckbox`,`menuitemradio`,`rowheader`,`switch`];function getAriaExpanded(e){if(elementSafeTagName(e)===`DETAILS`)return e.open;if(kAriaExpandedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-expanded`);return w===null?`none`:w===`true`}return`none`}var kAriaLevelRoles=[`heading`,`listitem`,`row`,`treeitem`];function getAriaLevel(e){let w={H1:1,H2:2,H3:3,H4:4,H5:5,H6:6}[elementSafeTagName(e)];if(w)return w;if(kAriaLevelRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-level`),T=w===null?NaN:Number(w);if(Number.isInteger(T)&&T>=1)return T}return 0}var kAriaDisabledRoles=`application.button.composite.gridcell.group.input.link.menuitem.scrollbar.separator.tab.checkbox.columnheader.combobox.grid.listbox.menu.menubar.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.searchbox.select.slider.spinbutton.switch.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`);function getAriaDisabled(e){return isNativelyDisabled(e)||hasExplicitAriaDisabled(e)}function isNativelyDisabled(e){let w=[`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`OPTION`,`OPTGROUP`].includes(e.tagName);return w&&(e.hasAttribute(`disabled`)||belongsToDisabledFieldSet(e))}function belongsToDisabledFieldSet(e){let w=e?.closest(`FIELDSET[DISABLED]`);if(!w)return!1;let T=w.querySelector(`:scope > LEGEND`);return!T||!T.contains(e)}function hasExplicitAriaDisabled(e){if(!e)return!1;if(kAriaDisabledRoles.includes(getAriaRole(e)||``)){let w=(e.getAttribute(`aria-disabled`)||``).toLowerCase();if(w===`true`)return!0;if(w===`false`)return!1}return hasExplicitAriaDisabled(parentElementOrShadowHost(e))}function getAccessibleNameFromAssociatedLabels(e,w){return[...e].map(e=>getTextAlternativeInternal(e,{...w,embeddedInLabel:{element:e,hidden:isElementHiddenForAria(e)},embeddedInNativeTextAlternative:void 0,embeddedInLabelledBy:void 0,embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0})).filter(e=>!!e).join(` `)}var cacheAccessibleName,cacheAccessibleNameHidden,cacheAccessibleErrorMessage,cacheAccessibleDescription,cacheIsHidden,cachePseudoContentBefore,cachePseudoContentAfter,cachesCounter=0;function beginAriaCaches(){++cachesCounter,cacheAccessibleName??=new Map,cacheAccessibleNameHidden??=new Map,cacheAccessibleDescription??=new Map,cacheAccessibleErrorMessage??=new Map,cacheIsHidden??=new Map,cachePseudoContentBefore??=new Map,cachePseudoContentAfter??=new Map}function endAriaCaches(){--cachesCounter||(cacheAccessibleName=void 0,cacheAccessibleNameHidden=void 0,cacheAccessibleDescription=void 0,cacheAccessibleErrorMessage=void 0,cacheIsHidden=void 0,cachePseudoContentBefore=void 0,cachePseudoContentAfter=void 0)}function matchesAttributePart(e,w){let T=typeof e==`string`&&!w.caseSensitive?e.toUpperCase():e,E=typeof w.value==`string`&&!w.caseSensitive?w.value.toUpperCase():w.value;return w.op===`<truthy>`?!!T:w.op===`=`?E instanceof RegExp?typeof T==`string`&&!!T.match(E):T===E:typeof T!=`string`||typeof E!=`string`?!1:w.op===`*=`?T.includes(E):w.op===`^=`?T.startsWith(E):w.op===`$=`?T.endsWith(E):w.op===`|=`?T===E||T.startsWith(`${E}-`):w.op===`~=`?T.split(` `).includes(E):!1}function shouldSkipForTextMatching(e){let w=e.ownerDocument;return e.nodeName===`SCRIPT`||e.nodeName===`NOSCRIPT`||e.nodeName===`STYLE`||w.head&&w.head.contains(e)}function elementText(e,w){let T=e.get(w);if(T===void 0){if(T={full:``,normalized:``,immediate:[]},!shouldSkipForTextMatching(w)){let E=``;if(w instanceof HTMLInputElement&&(w.type===`submit`||w.type===`button`))T={full:w.value,normalized:normalizeWhiteSpace(w.value),immediate:[w.value]};else{for(let D=w.firstChild;D;D=D.nextSibling)D.nodeType===Node.TEXT_NODE?(T.full+=D.nodeValue||``,E+=D.nodeValue||``):(E&&T.immediate.push(E),E=``,D.nodeType===Node.ELEMENT_NODE&&(T.full+=elementText(e,D).full));E&&T.immediate.push(E),w.shadowRoot&&(T.full+=elementText(e,w.shadowRoot).full),T.full&&(T.normalized=normalizeWhiteSpace(T.full))}}e.set(w,T)}return T}function elementMatchesText(e,w,T){if(shouldSkipForTextMatching(w)||!T(elementText(e,w)))return`none`;for(let E=w.firstChild;E;E=E.nextSibling)if(E.nodeType===Node.ELEMENT_NODE&&T(elementText(e,E)))return`selfAndChildren`;return w.shadowRoot&&T(elementText(e,w.shadowRoot))?`selfAndChildren`:`self`}function getElementLabels(e,w){let T=getAriaLabelledByElements(w);if(T)return T.map(w=>elementText(e,w));let E=w.getAttribute(`aria-label`);if(E!==null&&E.trim())return[{full:E,normalized:normalizeWhiteSpace(E),immediate:[E]}];let D=w.nodeName===`INPUT`&&w.type!==`hidden`;if([`BUTTON`,`METER`,`OUTPUT`,`PROGRESS`,`SELECT`,`TEXTAREA`].includes(w.nodeName)||D){let T=w.labels;if(T)return[...T].map(w=>elementText(e,w))}return[]}var kSupportedAttributes=[`selected`,`checked`,`pressed`,`expanded`,`level`,`disabled`,`name`,`include-hidden`];kSupportedAttributes.sort();function validateSupportedRole(e,w,T){if(!w.includes(T))throw Error(`"${e}" attribute is only supported for roles: ${w.slice().sort().map(e=>`"${e}"`).join(`, `)}`)}function validateSupportedValues(e,w){if(e.op!==`<truthy>`&&!w.includes(e.value))throw Error(`"${e.name}" must be one of ${w.map(e=>JSON.stringify(e)).join(`, `)}`)}function validateSupportedOp(e,w){if(!w.includes(e.op))throw Error(`"${e.name}" does not support "${e.op}" matcher`)}function validateAttributes(e,w){let T={role:w};for(let E of e)switch(E.name){case`checked`:validateSupportedRole(E.name,kAriaCheckedRoles,w),validateSupportedValues(E,[!0,!1,`mixed`]),validateSupportedOp(E,[`<truthy>`,`=`]),T.checked=E.op===`<truthy>`?!0:E.value;break;case`pressed`:validateSupportedRole(E.name,kAriaPressedRoles,w),validateSupportedValues(E,[!0,!1,`mixed`]),validateSupportedOp(E,[`<truthy>`,`=`]),T.pressed=E.op===`<truthy>`?!0:E.value;break;case`selected`:validateSupportedRole(E.name,kAriaSelectedRoles,w),validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.selected=E.op===`<truthy>`?!0:E.value;break;case`expanded`:validateSupportedRole(E.name,kAriaExpandedRoles,w),validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.expanded=E.op===`<truthy>`?!0:E.value;break;case`level`:if(validateSupportedRole(E.name,kAriaLevelRoles,w),typeof E.value==`string`&&(E.value=+E.value),E.op!==`=`||typeof E.value!=`number`||Number.isNaN(E.value))throw Error(`"level" attribute must be compared to a number`);T.level=E.value;break;case`disabled`:validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.disabled=E.op===`<truthy>`?!0:E.value;break;case`name`:if(E.op===`<truthy>`)throw Error(`"name" attribute must have a value`);if(typeof E.value!=`string`&&!(E.value instanceof RegExp))throw TypeError(`"name" attribute must be a string or a regular expression`);T.name=E.value,T.nameOp=E.op,T.exact=E.caseSensitive;break;case`include-hidden`:validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.includeHidden=E.op===`<truthy>`?!0:E.value;break;default:throw Error(`Unknown attribute "${E.name}", must be one of ${kSupportedAttributes.map(e=>`"${e}"`).join(`, `)}.`)}return T}function queryRole(e,w,T){let E=[],D=e=>{if(getAriaRole(e)===w.role&&!(w.selected!==void 0&&getAriaSelected(e)!==w.selected)&&!(w.checked!==void 0&&getAriaChecked(e)!==w.checked)&&!(w.pressed!==void 0&&getAriaPressed(e)!==w.pressed)&&!(w.expanded!==void 0&&getAriaExpanded(e)!==w.expanded)&&!(w.level!==void 0&&getAriaLevel(e)!==w.level)&&!(w.disabled!==void 0&&getAriaDisabled(e)!==w.disabled)){if(!w.includeHidden){let w=isElementHiddenForAria(e);if(w)return}if(w.name!==void 0){let E=normalizeWhiteSpace(getElementAccessibleName(e,!!w.includeHidden));if(typeof w.name==`string`&&(w.name=normalizeWhiteSpace(w.name)),T&&!w.exact&&w.nameOp===`=`&&(w.nameOp=`*=`),!matchesAttributePart(E,{op:w.nameOp||`=`,value:w.name,caseSensitive:!!w.exact}))return}E.push(e)}},O=e=>{let w=[];e.shadowRoot&&w.push(e.shadowRoot);for(let T of e.querySelectorAll(`*`))D(T),T.shadowRoot&&w.push(T.shadowRoot);w.forEach(O)};return O(e),E}function createRoleEngine(e){return{queryAll:(w,T)=>{let E=parseAttributeSelector(T),D=E.name.toLowerCase();if(!D)throw Error(`Role must not be empty`);let O=validateAttributes(E.attributes,D);beginAriaCaches();try{return queryRole(w,O,e)}finally{endAriaCaches()}}}}function asLocator(e,w,T=!1){return asLocators(e,w,T)[0]}function asLocators(e,w,T=!1,E=20,D){try{return innerAsLocators(new generators[e](D),parseSelector(w),T,E)}catch{return[w]}}function innerAsLocators(e,w,T=!1,E=20){let D=[...w.parts];for(let e=0;e<D.length-1;e++)if(D[e].name===`nth`&&D[e+1].name===`internal:control`&&D[e+1].body===`enter-frame`){let[w]=D.splice(e,1);D.splice(e+1,0,w)}let O=[],k=T?`frame-locator`:`page`;for(let w=0;w<D.length;w++){let T=D[w],A=k;if(k=`locator`,T.name===`nth`){T.body===`0`?O.push([e.generateLocator(A,`first`,``),e.generateLocator(A,`nth`,`0`)]):T.body===`-1`?O.push([e.generateLocator(A,`last`,``),e.generateLocator(A,`nth`,`-1`)]):O.push([e.generateLocator(A,`nth`,T.body)]);continue}if(T.name===`internal:text`){let{exact:w,text:E}=detectExact(T.body);O.push([e.generateLocator(A,`text`,E,{exact:w})]);continue}if(T.name===`internal:has-text`){let{exact:w,text:E}=detectExact(T.body);if(!w){O.push([e.generateLocator(A,`has-text`,E,{exact:w})]);continue}}if(T.name===`internal:has-not-text`){let{exact:w,text:E}=detectExact(T.body);if(!w){O.push([e.generateLocator(A,`has-not-text`,E,{exact:w})]);continue}}if(T.name===`internal:has`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`has`,w)));continue}if(T.name===`internal:has-not`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`hasNot`,w)));continue}if(T.name===`internal:and`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`and`,w)));continue}if(T.name===`internal:or`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`or`,w)));continue}if(T.name===`internal:chain`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`chain`,w)));continue}if(T.name===`internal:label`){let{exact:w,text:E}=detectExact(T.body);O.push([e.generateLocator(A,`label`,E,{exact:w})]);continue}if(T.name===`internal:role`){let w=parseAttributeSelector(T.body),E={attrs:[]};for(let e of w.attributes)e.name===`name`?(E.exact=e.caseSensitive,E.name=e.value):(e.name===`level`&&typeof e.value==`string`&&(e.value=+e.value),E.attrs.push({name:e.name===`include-hidden`?`includeHidden`:e.name,value:e.value}));O.push([e.generateLocator(A,`role`,w.name,E)]);continue}if(T.name===`internal:testid`){let w=parseAttributeSelector(T.body),{value:E}=w.attributes[0];O.push([e.generateLocator(A,`test-id`,E)]);continue}if(T.name===`internal:attr`){let w=parseAttributeSelector(T.body),{name:E,value:D,caseSensitive:k}=w.attributes[0],j=D,M=!!k;if(E===`placeholder`){O.push([e.generateLocator(A,`placeholder`,j,{exact:M})]);continue}if(E===`alt`){O.push([e.generateLocator(A,`alt`,j,{exact:M})]);continue}if(E===`title`){O.push([e.generateLocator(A,`title`,j,{exact:M})]);continue}}let j=`default`,M=D[w+1];M&&M.name===`internal:control`&&M.body===`enter-frame`&&(j=`frame`,k=`frame-locator`,w++);let N=stringifySelector({parts:[T]}),P=e.generateLocator(A,j,N);if(j===`default`&&M&&[`internal:has-text`,`internal:has-not-text`].includes(M.name)){let{exact:T,text:E}=detectExact(M.body);if(!T){let D=e.generateLocator(`locator`,M.name===`internal:has-text`?`has-text`:`has-not-text`,E,{exact:T}),k={};M.name===`internal:has-text`?k.hasText=E:k.hasNotText=E;let j=e.generateLocator(A,`default`,N,k);O.push([e.chainLocators([P,D]),j]),w++;continue}}let F;if([`xpath`,`css`].includes(T.name)){let w=stringifySelector({parts:[T]},!0);F=e.generateLocator(A,j,w)}O.push([P,F].filter(Boolean))}return combineTokens(e,O,E)}function combineTokens(e,w,T){let E=w.map(()=>``),D=[],O=k=>{if(k===w.length)return D.push(e.chainLocators(E)),E.length<T;for(let e of w[k])if(E[k]=e,!O(k+1))return!1;return!0};return O(0),D}function detectExact(e){let w=!1,T=e.match(/^\/(.*)\/([igm]*)$/);return T?{text:new RegExp(T[1],T[2])}:(e.endsWith(`"`)?(e=JSON.parse(e),w=!0):e.endsWith(`"s`)?(e=JSON.parse(e.substring(0,e.length-1)),w=!0):e.endsWith(`"i`)&&(e=JSON.parse(e.substring(0,e.length-1)),w=!1),{exact:w,text:e})}var JavaScriptLocatorFactory=class{constructor(e){this.preferredQuote=e}generateLocator(e,w,T,E={}){switch(w){case`default`:return E.hasText===void 0?E.hasNotText===void 0?`locator(${this.quote(T)})`:`locator(${this.quote(T)}, { hasNotText: ${this.toHasText(E.hasNotText)} })`:`locator(${this.quote(T)}, { hasText: ${this.toHasText(E.hasText)} })`;case`frame`:return`frameLocator(${this.quote(T)})`;case`nth`:return`nth(${T})`;case`first`:return`first()`;case`last`:return`last()`;case`role`:{let e=[];isRegExp(E.name)?e.push(`name: ${this.regexToSourceString(E.name)}`):typeof E.name==`string`&&(e.push(`name: ${this.quote(E.name)}`),E.exact&&e.push(`exact: true`));for(let{name:w,value:T}of E.attrs)e.push(`${w}: ${typeof T==`string`?this.quote(T):T}`);let w=e.length?`, { ${e.join(`, `)} }`:``;return`getByRole(${this.quote(T)}${w})`}case`has-text`:return`filter({ hasText: ${this.toHasText(T)} })`;case`has-not-text`:return`filter({ hasNotText: ${this.toHasText(T)} })`;case`has`:return`filter({ has: ${T} })`;case`hasNot`:return`filter({ hasNot: ${T} })`;case`and`:return`and(${T})`;case`or`:return`or(${T})`;case`chain`:return`locator(${T})`;case`test-id`:return`getByTestId(${this.toTestIdValue(T)})`;case`text`:return this.toCallWithExact(`getByText`,T,!!E.exact);case`alt`:return this.toCallWithExact(`getByAltText`,T,!!E.exact);case`placeholder`:return this.toCallWithExact(`getByPlaceholder`,T,!!E.exact);case`label`:return this.toCallWithExact(`getByLabel`,T,!!E.exact);case`title`:return this.toCallWithExact(`getByTitle`,T,!!E.exact);default:throw Error(`Unknown selector kind ${w}`)}}chainLocators(e){return e.join(`.`)}regexToSourceString(e){return normalizeEscapedRegexQuotes(String(e))}toCallWithExact(e,w,T){return isRegExp(w)?`${e}(${this.regexToSourceString(w)})`:T?`${e}(${this.quote(w)}, { exact: true })`:`${e}(${this.quote(w)})`}toHasText(e){return isRegExp(e)?this.regexToSourceString(e):this.quote(e)}toTestIdValue(e){return isRegExp(e)?this.regexToSourceString(e):this.quote(e)}quote(e){var w;return escapeWithQuotes(e,(w=this.preferredQuote)??`'`)}},generators={javascript:JavaScriptLocatorFactory};function isRegExp(e){return e instanceof RegExp}var cacheAllowText=new Map,cacheDisallowText=new Map,kTextScoreRange=10,kExactPenalty=kTextScoreRange/2,kTestIdScore=1,kOtherTestIdScore=2,kIframeByAttributeScore=10,kBeginPenalizedScore=50,kPlaceholderScore=100,kLabelScore=120,kRoleWithNameScore=140,kAltTextScore=160,kTextScore=180,kTitleScore=200,kTextScoreRegex=250,kPlaceholderScoreExact=kPlaceholderScore+kExactPenalty,kLabelScoreExact=kLabelScore+kExactPenalty,kRoleWithNameScoreExact=kRoleWithNameScore+kExactPenalty,kAltTextScoreExact=kAltTextScore+kExactPenalty,kTextScoreExact=kTextScore+kExactPenalty,kTitleScoreExact=kTitleScore+kExactPenalty,kEndPenalizedScore=300,kCSSIdScore=500,kRoleWithoutNameScore=510,kCSSInputTypeNameScore=520,kCSSTagNameScore=530,kNthScore=1e4,kCSSFallbackScore=1e7;function generateSelector(e,w,T){e._evaluator.begin(),beginAriaCaches();try{let E=generateSelectorFor(e,w,T)||cssFallback(e,w,T);return joinTokens(E)}finally{cacheAllowText.clear(),cacheDisallowText.clear(),endAriaCaches(),e._evaluator.end()}}function filterRegexTokens(e){return e.filter(e=>e[0].selector[0]!==`/`)}function generateSelectorFor(e,w,T){if(w.ownerDocument.documentElement===w)return[{engine:`css`,selector:`html`,score:1}];let E=(E,O)=>{let k=E===w,A=O?buildTextCandidates(e,E,E===w):[];E!==w&&(A=filterRegexTokens(A));let j=buildNoTextCandidates(e,E,T).map(e=>[e]),M=chooseFirstSelector(e,w.ownerDocument,E,[...A,...j],k);A=filterRegexTokens(A);let N=w=>{let T=O&&!w.length,A=[...w,...j].filter(e=>M?combineScores(e)<combineScores(M):!0),N=A[0];if(N)for(let w=parentElementOrShadowHost(E);w;w=parentElementOrShadowHost(w)){let O=D(w,T);if(!O||M&&combineScores([...O,...N])>=combineScores(M))continue;if(N=chooseFirstSelector(e,w,E,A,k),!N)return;let j=[...O,...N];(!M||combineScores(j)<combineScores(M))&&(M=j)}};return N(A),E===w&&A.length&&N([]),M},D=(e,w)=>{let T=w?cacheAllowText:cacheDisallowText,D=T.get(e);return D===void 0&&(D=E(e,w),T.set(e,D)),D};return E(w,!T.noText)}function buildNoTextCandidates(e,w,T){let E=[];for(let e of[`data-testid`,`data-test-id`,`data-test`])e!==T.testIdAttributeName&&w.getAttribute(e)&&E.push({engine:`css`,selector:`[${e}=${quoteCSSAttributeValue(w.getAttribute(e))}]`,score:kOtherTestIdScore});if(!T.noCSSId){let e=w.getAttribute(`id`);e&&!isGuidLike(e)&&E.push({engine:`css`,selector:makeSelectorForId(e),score:kCSSIdScore})}if(E.push({engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSTagNameScore}),w.nodeName===`IFRAME`){for(let e of[`name`,`title`])w.getAttribute(e)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[${e}=${quoteCSSAttributeValue(w.getAttribute(e))}]`,score:kIframeByAttributeScore});return w.getAttribute(T.testIdAttributeName)&&E.push({engine:`css`,selector:`[${T.testIdAttributeName}=${quoteCSSAttributeValue(w.getAttribute(T.testIdAttributeName))}]`,score:kTestIdScore}),penalizeScoreForLength([E]),E}if(w.getAttribute(T.testIdAttributeName)&&E.push({engine:`internal:testid`,selector:`[${T.testIdAttributeName}=${escapeForAttributeSelector(w.getAttribute(T.testIdAttributeName),!0)}]`,score:kTestIdScore}),w.nodeName===`INPUT`||w.nodeName===`TEXTAREA`){let e=w;if(e.placeholder){E.push({engine:`internal:attr`,selector:`[placeholder=${escapeForAttributeSelector(e.placeholder,!0)}]`,score:kPlaceholderScoreExact});for(let w of suitableTextAlternatives(e.placeholder))E.push({engine:`internal:attr`,selector:`[placeholder=${escapeForAttributeSelector(w.text,!1)}]`,score:kPlaceholderScore-w.scoreBouns})}}let D=getElementLabels(e._evaluator._cacheText,w);for(let e of D){let w=e.normalized;E.push({engine:`internal:label`,selector:escapeForTextSelector(w,!0),score:kLabelScoreExact});for(let e of suitableTextAlternatives(w))E.push({engine:`internal:label`,selector:escapeForTextSelector(e.text,!1),score:kLabelScore-e.scoreBouns})}let O=getAriaRole(w);return O&&![`none`,`presentation`].includes(O)&&E.push({engine:`internal:role`,selector:O,score:kRoleWithoutNameScore}),w.getAttribute(`name`)&&[`BUTTON`,`FORM`,`FIELDSET`,`FRAME`,`IFRAME`,`INPUT`,`KEYGEN`,`OBJECT`,`OUTPUT`,`SELECT`,`TEXTAREA`,`MAP`,`META`,`PARAM`].includes(w.nodeName)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[name=${quoteCSSAttributeValue(w.getAttribute(`name`))}]`,score:kCSSInputTypeNameScore}),[`INPUT`,`TEXTAREA`].includes(w.nodeName)&&w.getAttribute(`type`)!==`hidden`&&w.getAttribute(`type`)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[type=${quoteCSSAttributeValue(w.getAttribute(`type`))}]`,score:kCSSInputTypeNameScore}),[`INPUT`,`TEXTAREA`,`SELECT`].includes(w.nodeName)&&w.getAttribute(`type`)!==`hidden`&&E.push({engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSInputTypeNameScore+1}),penalizeScoreForLength([E]),E}function buildTextCandidates(e,w,T){if(w.nodeName===`SELECT`)return[];let E=[],D=w.getAttribute(`title`);if(D){E.push([{engine:`internal:attr`,selector:`[title=${escapeForAttributeSelector(D,!0)}]`,score:kTitleScoreExact}]);for(let e of suitableTextAlternatives(D))E.push([{engine:`internal:attr`,selector:`[title=${escapeForAttributeSelector(e.text,!1)}]`,score:kTitleScore-e.scoreBouns}])}let O=w.getAttribute(`alt`);if(O&&[`APPLET`,`AREA`,`IMG`,`INPUT`].includes(w.nodeName)){E.push([{engine:`internal:attr`,selector:`[alt=${escapeForAttributeSelector(O,!0)}]`,score:kAltTextScoreExact}]);for(let e of suitableTextAlternatives(O))E.push([{engine:`internal:attr`,selector:`[alt=${escapeForAttributeSelector(e.text,!1)}]`,score:kAltTextScore-e.scoreBouns}])}let A=elementText(e._evaluator._cacheText,w).normalized;if(A){let e=suitableTextAlternatives(A);if(T){A.length<=80&&E.push([{engine:`internal:text`,selector:escapeForTextSelector(A,!0),score:kTextScoreExact}]);for(let w of e)E.push([{engine:`internal:text`,selector:escapeForTextSelector(w.text,!1),score:kTextScore-w.scoreBouns}])}let D={engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSTagNameScore};for(let w of e)E.push([D,{engine:`internal:has-text`,selector:escapeForTextSelector(w.text,!1),score:kTextScore-w.scoreBouns}]);if(A.length<=80){let e=RegExp(`^${escapeRegExp(A)}$`);E.push([D,{engine:`internal:has-text`,selector:escapeForTextSelector(e,!1),score:kTextScoreRegex}])}}let j=getAriaRole(w);if(j&&![`none`,`presentation`].includes(j)){let e=getElementAccessibleName(w,!1);if(e){E.push([{engine:`internal:role`,selector:`${j}[name=${escapeForAttributeSelector(e,!0)}]`,score:kRoleWithNameScoreExact}]);for(let w of suitableTextAlternatives(e))E.push([{engine:`internal:role`,selector:`${j}[name=${escapeForAttributeSelector(w.text,!1)}]`,score:kRoleWithNameScore-w.scoreBouns}])}}return penalizeScoreForLength(E),E}function makeSelectorForId(e){return/^[a-z][\w\-]+$/i.test(e)?`#${e}`:`[id="${cssEscape(e)}"]`}function cssFallback(e,w,T){let E=w.ownerDocument,D=[];function O(T){let O=D.slice();T&&O.unshift(T);let k=O.join(` > `),A=e.parseSelector(k),j=e.querySelector(A,E,!1);return j===w?k:void 0}function A(T){let D={engine:`css`,selector:T,score:kCSSFallbackScore},O=e.parseSelector(T),k=e.querySelectorAll(O,E);if(k.length===1)return[D];let A={engine:`nth`,selector:String(k.indexOf(w)),score:kNthScore};return[D,A]}for(let e=w;e&&e!==E;e=parentElementOrShadowHost(e)){let w=e.nodeName.toLowerCase(),E=``;if(e.id&&!T.noCSSId){let w=makeSelectorForId(e.id),T=O(w);if(T)return A(T);E=w}let j=e.parentNode,M=[...e.classList];for(let e=0;e<M.length;++e){let w=`.${cssEscape(M.slice(0,e+1).join(`.`))}`,T=O(w);if(T)return A(T);if(!E&&j){let e=j.querySelectorAll(w);e.length===1&&(E=w)}}if(j){let T=[...j.children],D=T.filter(e=>e.nodeName.toLowerCase()===w),M=D.indexOf(e)===0?cssEscape(w):`${cssEscape(w)}:nth-child(${1+T.indexOf(e)})`,N=O(M);if(N)return A(N);E||=M}else E||=cssEscape(w);D.unshift(E)}return A(O())}function penalizeScoreForLength(e){for(let w of e)for(let e of w)e.score>kBeginPenalizedScore&&e.score<kEndPenalizedScore&&(e.score+=Math.min(kTextScoreRange,e.selector.length/10|0))}function joinTokens(e){let w=[],T=``;for(let{engine:E,selector:D}of e)w.length&&(T!==`css`||E!==`css`||D.startsWith(`:nth-match(`))&&w.push(`>>`),T=E,E===`css`?w.push(D):w.push(`${E}=${D}`);return w.join(` `)}function combineScores(e){let w=0;for(let T=0;T<e.length;T++)w+=e[T].score*(e.length-T);return w}function chooseFirstSelector(e,w,T,E,D){let O=E.map(e=>({tokens:e,score:combineScores(e)}));O.sort((e,w)=>e.score-w.score);let k=null;for(let{tokens:E}of O){let O=e.parseSelector(joinTokens(E)),A=e.querySelectorAll(O,w);if(A[0]===T&&A.length===1)return E;let j=A.indexOf(T);if(!D||k||j===-1||A.length>5)continue;let M={engine:`nth`,selector:String(j),score:kNthScore};k=[...E,M]}return k}function isGuidLike(e){let w,T=0;for(let E=0;E<e.length;++E){let D=e[E],O;if(!(D===`-`||D===`_`)){if(O=D>=`a`&&D<=`z`?`lower`:D>=`A`&&D<=`Z`?`upper`:D>=`0`&&D<=`9`?`digit`:`other`,O===`lower`&&w===`upper`){w=O;continue}w&&w!==O&&++T,w=O}}return T>=e.length/4}function trimWordBoundary(e,w){if(e.length<=w)return e;e=e.substring(0,w);let T=e.match(/^(.*)\b(.+)$/);return T?T[1].trimEnd():``}function suitableTextAlternatives(e){let w=[];{let T=e.match(/^([\d.,]+)[^.,\w]/),E=T?T[1].length:0;if(E){let T=trimWordBoundary(e.substring(E).trimStart(),80);w.push({text:T,scoreBouns:T.length<=30?2:1})}}{let T=e.match(/[^.,\w]([\d.,]+)$/),E=T?T[1].length:0;if(E){let T=trimWordBoundary(e.substring(0,e.length-E).trimEnd(),80);w.push({text:T,scoreBouns:T.length<=30?2:1})}}return e.length<=30?w.push({text:e,scoreBouns:0}):(w.push({text:trimWordBoundary(e,80),scoreBouns:0}),w.push({text:trimWordBoundary(e,30),scoreBouns:1})),w=w.filter(e=>e.text),w.length||w.push({text:e.substring(0,80),scoreBouns:0}),w}function boxRightOf(e,w,T){let E=e.left-w.right;if(!(E<0||T!==void 0&&E>T))return E+Math.max(w.bottom-e.bottom,0)+Math.max(e.top-w.top,0)}function boxLeftOf(e,w,T){let E=w.left-e.right;if(!(E<0||T!==void 0&&E>T))return E+Math.max(w.bottom-e.bottom,0)+Math.max(e.top-w.top,0)}function boxAbove(e,w,T){let E=w.top-e.bottom;if(!(E<0||T!==void 0&&E>T))return E+Math.max(e.left-w.left,0)+Math.max(w.right-e.right,0)}function boxBelow(e,w,T){let E=e.top-w.bottom;if(!(E<0||T!==void 0&&E>T))return E+Math.max(e.left-w.left,0)+Math.max(w.right-e.right,0)}function boxNear(e,w,T){let E=T===void 0?50:T,D=0;return e.left-w.right>=0&&(D+=e.left-w.right),w.left-e.right>=0&&(D+=w.left-e.right),w.top-e.bottom>=0&&(D+=w.top-e.bottom),e.top-w.bottom>=0&&(D+=e.top-w.bottom),D>E?void 0:D}var kLayoutSelectorNames=[`left-of`,`right-of`,`above`,`below`,`near`];function layoutSelectorScore(e,w,T,E){let D=w.getBoundingClientRect(),O={"left-of":boxLeftOf,"right-of":boxRightOf,above:boxAbove,below:boxBelow,near:boxNear}[e],k;for(let e of T){if(e===w)continue;let T=O(D,e.getBoundingClientRect(),E);if(T===void 0)continue;(k===void 0||T<k)&&(k=T)}return k}var SelectorEvaluatorImpl=class{constructor(e){__publicField(this,`_engines`,new Map),__publicField(this,`_cacheQueryCSS`,new Map),__publicField(this,`_cacheMatches`,new Map),__publicField(this,`_cacheQuery`,new Map),__publicField(this,`_cacheMatchesSimple`,new Map),__publicField(this,`_cacheMatchesParents`,new Map),__publicField(this,`_cacheCallMatches`,new Map),__publicField(this,`_cacheCallQuery`,new Map),__publicField(this,`_cacheQuerySimple`,new Map),__publicField(this,`_cacheText`,new Map),__publicField(this,`_scoreMap`),__publicField(this,`_retainCacheCounter`,0);for(let[w,T]of e)this._engines.set(w,T);this._engines.set(`not`,notEngine),this._engines.set(`is`,isEngine),this._engines.set(`where`,isEngine),this._engines.set(`has`,hasEngine),this._engines.set(`scope`,scopeEngine),this._engines.set(`light`,lightEngine),this._engines.set(`visible`,visibleEngine),this._engines.set(`text`,textEngine),this._engines.set(`text-is`,textIsEngine),this._engines.set(`text-matches`,textMatchesEngine),this._engines.set(`has-text`,hasTextEngine),this._engines.set(`right-of`,createLayoutEngine(`right-of`)),this._engines.set(`left-of`,createLayoutEngine(`left-of`)),this._engines.set(`above`,createLayoutEngine(`above`)),this._engines.set(`below`,createLayoutEngine(`below`)),this._engines.set(`near`,createLayoutEngine(`near`)),this._engines.set(`nth-match`,nthMatchEngine);let w=[...this._engines.keys()];w.sort();let T=[...customCSSNames];if(T.sort(),w.join(`|`)!==T.join(`|`))throw Error(`Please keep customCSSNames in sync with evaluator engines: ${w.join(`|`)} vs ${T.join(`|`)}`)}begin(){++this._retainCacheCounter}end(){--this._retainCacheCounter,this._retainCacheCounter||(this._cacheQueryCSS.clear(),this._cacheMatches.clear(),this._cacheQuery.clear(),this._cacheMatchesSimple.clear(),this._cacheMatchesParents.clear(),this._cacheCallMatches.clear(),this._cacheCallQuery.clear(),this._cacheQuerySimple.clear(),this._cacheText.clear())}_cached(e,w,T,E){e.has(w)||e.set(w,[]);let D=e.get(w),O=D.find(e=>T.every((w,T)=>e.rest[T]===w));if(O)return O.result;let k=E();return D.push({rest:T,result:k}),k}_checkSelector(e){let w=typeof e==`object`&&e&&(Array.isArray(e)||`simples`in e&&e.simples.length);if(!w)throw Error(`Malformed selector "${e}"`);return e}matches(e,w,T){let E=this._checkSelector(w);this.begin();try{return this._cached(this._cacheMatches,e,[E,T.scope,T.pierceShadow,T.originalScope],()=>Array.isArray(E)?this._matchesEngine(isEngine,e,E,T):(this._hasScopeClause(E)&&(T=this._expandContextForScopeMatching(T)),this._matchesSimple(e,E.simples[E.simples.length-1].selector,T)?this._matchesParents(e,E,E.simples.length-2,T):!1))}finally{this.end()}}query(e,w){let T=this._checkSelector(w);this.begin();try{return this._cached(this._cacheQuery,T,[e.scope,e.pierceShadow,e.originalScope],()=>{if(Array.isArray(T))return this._queryEngine(isEngine,e,T);this._hasScopeClause(T)&&(e=this._expandContextForScopeMatching(e));let w=this._scoreMap;this._scoreMap=new Map;let E=this._querySimple(e,T.simples[T.simples.length-1].selector);return E=E.filter(w=>this._matchesParents(w,T,T.simples.length-2,e)),this._scoreMap.size&&E.sort((e,w)=>{let T=this._scoreMap.get(e),E=this._scoreMap.get(w);return T===E?0:T===void 0?1:E===void 0?-1:T-E}),this._scoreMap=w,E})}finally{this.end()}}_markScore(e,w){this._scoreMap&&this._scoreMap.set(e,w)}_hasScopeClause(e){return e.simples.some(e=>e.selector.functions.some(e=>e.name===`scope`))}_expandContextForScopeMatching(e){if(e.scope.nodeType!==1)return e;let w=parentElementOrShadowHost(e.scope);return w?{...e,scope:w,originalScope:e.originalScope||e.scope}:e}_matchesSimple(e,w,T){return this._cached(this._cacheMatchesSimple,e,[w,T.scope,T.pierceShadow,T.originalScope],()=>{if(e===T.scope||w.css&&!this._matchesCSS(e,w.css))return!1;for(let E of w.functions)if(!this._matchesEngine(this._getEngine(E.name),e,E.args,T))return!1;return!0})}_querySimple(e,w){return w.functions.length?this._cached(this._cacheQuerySimple,w,[e.scope,e.pierceShadow,e.originalScope],()=>{let T=w.css,E=w.functions;T===`*`&&E.length&&(T=void 0);let D,O=-1;T===void 0?(O=E.findIndex(e=>this._getEngine(e.name).query!==void 0),O===-1&&(O=0),D=this._queryEngine(this._getEngine(E[O].name),e,E[O].args)):D=this._queryCSS(e,T);for(let w=0;w<E.length;w++){if(w===O)continue;let T=this._getEngine(E[w].name);T.matches!==void 0&&(D=D.filter(D=>this._matchesEngine(T,D,E[w].args,e)))}for(let w=0;w<E.length;w++){if(w===O)continue;let T=this._getEngine(E[w].name);T.matches===void 0&&(D=D.filter(D=>this._matchesEngine(T,D,E[w].args,e)))}return D}):this._queryCSS(e,w.css||`*`)}_matchesParents(e,w,T,E){return T<0?!0:this._cached(this._cacheMatchesParents,e,[w,T,E.scope,E.pierceShadow,E.originalScope],()=>{let{selector:D,combinator:O}=w.simples[T];if(O===`>`){let O=parentElementOrShadowHostInContext(e,E);return!O||!this._matchesSimple(O,D,E)?!1:this._matchesParents(O,w,T-1,E)}if(O===`+`){let O=previousSiblingInContext(e,E);return!O||!this._matchesSimple(O,D,E)?!1:this._matchesParents(O,w,T-1,E)}if(O===``){let O=parentElementOrShadowHostInContext(e,E);for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===``)break}O=parentElementOrShadowHostInContext(O,E)}return!1}if(O===`~`){let O=previousSiblingInContext(e,E);for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===`~`)break}O=previousSiblingInContext(O,E)}return!1}if(O===`>=`){let O=e;for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===``)break}O=parentElementOrShadowHostInContext(O,E)}return!1}throw Error(`Unsupported combinator "${O}"`)})}_matchesEngine(e,w,T,E){if(e.matches)return this._callMatches(e,w,T,E);if(e.query)return this._callQuery(e,T,E).includes(w);throw Error(`Selector engine should implement "matches" or "query"`)}_queryEngine(e,w,T){if(e.query)return this._callQuery(e,T,w);if(e.matches)return this._queryCSS(w,`*`).filter(E=>this._callMatches(e,E,T,w));throw Error(`Selector engine should implement "matches" or "query"`)}_callMatches(e,w,T,E){return this._cached(this._cacheCallMatches,w,[e,E.scope,E.pierceShadow,E.originalScope,...T],()=>e.matches(w,T,E,this))}_callQuery(e,w,T){return this._cached(this._cacheCallQuery,e,[T.scope,T.pierceShadow,T.originalScope,...w],()=>e.query(T,w,this))}_matchesCSS(e,w){return e.matches(w)}_queryCSS(e,w){return this._cached(this._cacheQueryCSS,w,[e.scope,e.pierceShadow,e.originalScope],()=>{let T=[];function E(D){if(T=T.concat([...D.querySelectorAll(w)]),e.pierceShadow){D.shadowRoot&&E(D.shadowRoot);for(let e of D.querySelectorAll(`*`))e.shadowRoot&&E(e.shadowRoot)}}return E(e.scope),T})}_getEngine(e){let w=this._engines.get(e);if(!w)throw Error(`Unknown selector engine "${e}"`);return w}},isEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"is" engine expects non-empty selector list`);return w.some(w=>E.matches(e,w,T))},query(e,w,T){if(w.length===0)throw Error(`"is" engine expects non-empty selector list`);let E=[];for(let D of w)E=E.concat(T.query(e,D));return w.length===1?E:sortInDOMOrder(E)}},hasEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"has" engine expects non-empty selector list`);return E.query({...T,scope:e},w).length>0}},scopeEngine={matches(e,w,T,E){if(w.length!==0)throw Error(`"scope" engine expects no arguments`);let D=T.originalScope||T.scope;return D.nodeType===9?e===D.documentElement:e===D},query(e,w,T){if(w.length!==0)throw Error(`"scope" engine expects no arguments`);let E=e.originalScope||e.scope;if(E.nodeType===9){let e=E.documentElement;return e?[e]:[]}return E.nodeType===1?[E]:[]}},notEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"not" engine expects non-empty selector list`);return!E.matches(e,w,T)}},lightEngine={query(e,w,T){return T.query({...e,pierceShadow:!1},w)},matches(e,w,T,E){return E.matches(e,w,{...T,pierceShadow:!1})}},visibleEngine={matches(e,w,T,E){if(w.length)throw Error(`"visible" engine expects no arguments`);return isElementVisible(e)}},textEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"text" engine expects a single string`);let D=normalizeWhiteSpace(w[0]).toLowerCase(),O=e=>e.normalized.toLowerCase().includes(D);return elementMatchesText(E._cacheText,e,O)===`self`}},textIsEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"text-is" engine expects a single string`);let D=normalizeWhiteSpace(w[0]),O=e=>!D&&!e.immediate.length?!0:e.immediate.some(e=>normalizeWhiteSpace(e)===D);return elementMatchesText(E._cacheText,e,O)!==`none`}},textMatchesEngine={matches(e,w,T,E){if(w.length===0||typeof w[0]!=`string`||w.length>2||w.length===2&&typeof w[1]!=`string`)throw Error(`"text-matches" engine expects a regexp body and optional regexp flags`);let D=new RegExp(w[0],w.length===2?w[1]:void 0),O=e=>D.test(e.full);return elementMatchesText(E._cacheText,e,O)===`self`}},hasTextEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"has-text" engine expects a single string`);if(shouldSkipForTextMatching(e))return!1;let D=normalizeWhiteSpace(w[0]).toLowerCase(),O=e=>e.normalized.toLowerCase().includes(D);return O(elementText(E._cacheText,e))}};function createLayoutEngine(e){return{matches(w,T,E,D){let O=T.length&&typeof T[T.length-1]==`number`?T[T.length-1]:void 0,k=O===void 0?T:T.slice(0,T.length-1);if(T.length<1+(O===void 0?0:1))throw Error(`"${e}" engine expects a selector list and optional maximum distance in pixels`);let A=D.query(E,k),j=layoutSelectorScore(e,w,A,O);return j===void 0?!1:(D._markScore(w,j),!0)}}}var nthMatchEngine={query(e,w,T){let E=w[w.length-1];if(w.length<2)throw Error(`"nth-match" engine expects non-empty selector list and an index argument`);if(typeof E!=`number`||E<1)throw Error(`"nth-match" engine expects a one-based index as the last argument`);let D=isEngine.query(e,w.slice(0,w.length-1),T);return E--,E<D.length?[D[E]]:[]}};function parentElementOrShadowHostInContext(e,w){if(e!==w.scope)return w.pierceShadow?parentElementOrShadowHost(e):e.parentElement||void 0}function previousSiblingInContext(e,w){if(e!==w.scope)return e.previousElementSibling||void 0}function sortInDOMOrder(e){let w=new Map,T=[],E=[];function D(e){let E=w.get(e);if(E)return E;let O=parentElementOrShadowHost(e);if(O){let w=D(O);w.children.push(e)}else T.push(e);return E={children:[],taken:!1},w.set(e,E),E}for(let w of e)D(w).taken=!0;function O(e){let T=w.get(e);if(T.taken&&E.push(e),T.children.length>1){let w=new Set(T.children);T.children=[];let E=e.firstElementChild;for(;E&&T.children.length<w.size;)w.has(E)&&T.children.push(E),E=E.nextElementSibling;for(E=e.shadowRoot?e.shadowRoot.firstElementChild:null;E&&T.children.length<w.size;)w.has(E)&&T.children.push(E),E=E.nextElementSibling}T.children.forEach(O)}return T.forEach(O),E}function getByAttributeTextSelector(e,w,T){return`internal:attr=[${e}=${escapeForAttributeSelector(w,T?.exact||!1)}]`}function getByTestIdSelector(e,w){return`internal:testid=[${e}=${escapeForAttributeSelector(w,!0)}]`}function getByLabelSelector(e,w){return`internal:label=${escapeForTextSelector(e,!!w?.exact)}`}function getByAltTextSelector(e,w){return getByAttributeTextSelector(`alt`,e,w)}function getByTitleSelector(e,w){return getByAttributeTextSelector(`title`,e,w)}function getByPlaceholderSelector(e,w){return getByAttributeTextSelector(`placeholder`,e,w)}function getByTextSelector(e,w){return`internal:text=${escapeForTextSelector(e,!!w?.exact)}`}function getByRoleSelector(e,w={}){let T=[];return w.checked!==void 0&&T.push([`checked`,String(w.checked)]),w.disabled!==void 0&&T.push([`disabled`,String(w.disabled)]),w.selected!==void 0&&T.push([`selected`,String(w.selected)]),w.expanded!==void 0&&T.push([`expanded`,String(w.expanded)]),w.includeHidden!==void 0&&T.push([`include-hidden`,String(w.includeHidden)]),w.level!==void 0&&T.push([`level`,String(w.level)]),w.name!==void 0&&T.push([`name`,escapeForAttributeSelector(w.name,!!w.exact)]),w.pressed!==void 0&&T.push([`pressed`,String(w.pressed)]),`internal:role=${e}${T.map(([e,w])=>`[${e}=${w}]`).join(``)}`}var _Ivya=class e{constructor(){__publicField(this,`_engines`),__publicField(this,`_evaluator`),this._evaluator=new SelectorEvaluatorImpl(new Map),this._engines=new Map,this._engines.set(`xpath`,XPathEngine),this._engines.set(`xpath:light`,XPathEngine),this._engines.set(`role`,createRoleEngine(!1)),this._engines.set(`text`,this._createTextEngine(!0,!1)),this._engines.set(`text:light`,this._createTextEngine(!1,!1)),this._engines.set(`id`,this._createAttributeEngine(`id`,!0)),this._engines.set(`id:light`,this._createAttributeEngine(`id`,!1)),this._engines.set(`data-testid`,this._createAttributeEngine(`data-testid`,!0)),this._engines.set(`data-testid:light`,this._createAttributeEngine(`data-testid`,!1)),this._engines.set(`data-test-id`,this._createAttributeEngine(`data-test-id`,!0)),this._engines.set(`data-test-id:light`,this._createAttributeEngine(`data-test-id`,!1)),this._engines.set(`data-test`,this._createAttributeEngine(`data-test`,!0)),this._engines.set(`data-test:light`,this._createAttributeEngine(`data-test`,!1)),this._engines.set(`css`,this._createCSSEngine()),this._engines.set(`nth`,{queryAll:()=>[]}),this._engines.set(`visible`,this._createVisibleEngine()),this._engines.set(`internal:control`,{queryAll:()=>[]}),this._engines.set(`internal:has`,this._createHasEngine()),this._engines.set(`internal:has-not`,this._createHasNotEngine()),this._engines.set(`internal:and`,{queryAll:()=>[]}),this._engines.set(`internal:or`,{queryAll:()=>[]}),this._engines.set(`internal:chain`,this._createInternalChainEngine()),this._engines.set(`internal:label`,this._createInternalLabelEngine()),this._engines.set(`internal:text`,this._createTextEngine(!0,!0)),this._engines.set(`internal:has-text`,this._createInternalHasTextEngine()),this._engines.set(`internal:has-not-text`,this._createInternalHasNotTextEngine()),this._engines.set(`internal:attr`,this._createNamedAttributeEngine()),this._engines.set(`internal:testid`,this._createNamedAttributeEngine()),this._engines.set(`internal:role`,createRoleEngine(!0))}static create(w){return Object.assign(e.options,w),e.singleton||=new e}queryLocatorSelector(e,w=document.documentElement,T=!0){return this.querySelector(this.parseSelector(e),w,T)}queryLocatorSelectorAll(e,w=document.documentElement){return this.querySelectorAll(this.parseSelector(e),w)}querySelector(e,w,T=!0){let E=this.querySelectorAll(e,w);if(T&&E.length>1)throw this.strictModeViolationError(e,E);return E[0]||null}queryAllByRole(e,w,T=document.documentElement){let E=this.parseSelector(getByRoleSelector(e,w));return this.querySelectorAll(E,T)}queryAllByLabelText(e,w,T=document.documentElement){let E=this.parseSelector(getByLabelSelector(e,w));return this.querySelectorAll(E,T)}queryAllByTestId(w,T=document.documentElement){let E=this.parseSelector(getByTestIdSelector(e.options.testIdAttribute,w));return this.querySelectorAll(E,T)}queryAllByText(e,w,T=document.documentElement){let E=this.parseSelector(getByTextSelector(e,w));return this.querySelectorAll(E,T)}queryAllByTitle(e,w,T=document.documentElement){let E=this.parseSelector(getByTitleSelector(e,w));return this.querySelectorAll(E,T)}queryAllByPlaceholder(e,w,T=document.documentElement){let E=this.parseSelector(getByPlaceholderSelector(e,w));return this.querySelectorAll(E,T)}queryAllByAltText(e,w,T=document.documentElement){let E=this.parseSelector(getByAltTextSelector(e,w));return this.querySelectorAll(E,T)}queryByRole(e,w,T=document.documentElement){let E=this.parseSelector(getByRoleSelector(e,w));return this.querySelector(E,T,!1)}queryByLabelText(e,w,T=document.documentElement){let E=this.parseSelector(getByLabelSelector(e,w));return this.querySelector(E,T,!1)}queryByTestId(w,T=document.documentElement){let E=this.parseSelector(getByTestIdSelector(e.options.testIdAttribute,w));return this.querySelector(E,T,!1)}queryByText(e,w,T=document.documentElement){let E=this.parseSelector(getByTextSelector(e,w));return this.querySelector(E,T,!1)}queryByTitle(e,w,T=document.documentElement){let E=this.parseSelector(getByTitleSelector(e,w));return this.querySelector(E,T,!1)}queryByPlaceholder(e,w,T=document.documentElement){let E=this.parseSelector(getByPlaceholderSelector(e,w));return this.querySelector(E,T,!1)}queryByAltText(e,w,T=document.documentElement){let E=this.parseSelector(getByAltTextSelector(e,w));return this.querySelector(E,T,!1)}strictModeViolationError(e,w){let T=w.slice(0,10).map(e=>({preview:this.previewNode(e),selector:this.generateSelectorSimple(e)})),E=T.map((e,w)=>`
4
4
  ${w+1}) ${e.preview} aka ${asLocator(`javascript`,e.selector)}`);return T.length<w.length&&E.push(`
package/dist/utils.js CHANGED
@@ -1 +1 @@
1
- import"@vitest/browser/context";export{u as debug,h as getElementError,t as getElementLocatorSelectors,v as prettyDOM}from"./public-utils-DUr23h1p.js";import"vitest/utils";
1
+ import"@vitest/browser/context";export{u as debug,h as getElementError,t as getElementLocatorSelectors,v as prettyDOM}from"./public-utils-DJ-T0CfF.js";import"vitest/internal/browser";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/browser",
3
3
  "type": "module",
4
- "version": "3.2.0-beta.1",
4
+ "version": "3.2.0-beta.2",
5
5
  "description": "Browser running for Vitest",
6
6
  "license": "MIT",
7
7
  "funding": "https://opencollective.com/vitest",
@@ -66,7 +66,7 @@
66
66
  "peerDependencies": {
67
67
  "playwright": "*",
68
68
  "webdriverio": "^7.0.0 || ^8.0.0 || ^9.0.0",
69
- "vitest": "3.2.0-beta.1"
69
+ "vitest": "3.2.0-beta.2"
70
70
  },
71
71
  "peerDependenciesMeta": {
72
72
  "playwright": {
@@ -86,8 +86,8 @@
86
86
  "sirv": "^3.0.1",
87
87
  "tinyrainbow": "^2.0.0",
88
88
  "ws": "^8.18.1",
89
- "@vitest/mocker": "3.2.0-beta.1",
90
- "@vitest/utils": "3.2.0-beta.1"
89
+ "@vitest/mocker": "3.2.0-beta.2",
90
+ "@vitest/utils": "3.2.0-beta.2"
91
91
  },
92
92
  "devDependencies": {
93
93
  "@types/ws": "^8.18.1",
@@ -103,10 +103,10 @@
103
103
  "playwright-core": "^1.52.0",
104
104
  "safaridriver": "^1.0.0",
105
105
  "webdriverio": "^9.12.7",
106
- "@vitest/runner": "3.2.0-beta.1",
107
- "@vitest/ui": "3.2.0-beta.1",
108
- "vitest": "3.2.0-beta.1",
109
- "@vitest/ws-client": "3.2.0-beta.1"
106
+ "@vitest/runner": "3.2.0-beta.2",
107
+ "@vitest/ui": "3.2.0-beta.2",
108
+ "@vitest/ws-client": "3.2.0-beta.2",
109
+ "vitest": "3.2.0-beta.2"
110
110
  },
111
111
  "scripts": {
112
112
  "build": "rimraf dist && pnpm build:node && pnpm build:client",
package/utils.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // fortunately, the file is quite small
4
4
 
5
5
  import { LocatorSelectors, Locator } from '@vitest/browser/context'
6
- import { StringifyOptions } from 'vitest/utils'
6
+ import { StringifyOptions } from 'vitest/internal/browser'
7
7
 
8
8
  export type PrettyDOMOptions = Omit<StringifyOptions, 'maxLength'>
9
9