diff --git a/remote/marionette/element.sys.mjs b/remote/marionette/element.sys.mjs index 81035d78d985..88c79c76b11e 100644 --- a/remote/marionette/element.sys.mjs +++ b/remote/marionette/element.sys.mjs @@ -15,7 +15,6 @@ ChromeUtils.defineESModuleGetters(lazy, { const ORDERED_NODE_ITERATOR_TYPE = 5; const FIRST_ORDERED_NODE_TYPE = 9; -const DOCUMENT_FRAGMENT_NODE = 11; const ELEMENT_NODE = 1; const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; @@ -448,12 +447,12 @@ element.findClosest = function(startNode, selector) { }; /** - * Resolve element from specified web reference identifier. + * Resolve element from specified web element reference. * * @param {BrowsingContext} browsingContext * The browsing context to retrieve the element from. - * @param {string} nodeId - * The WebReference uuid for a DOM element. + * @param {ElementIdentifier} nodeId + * The WebElement reference identifier for a DOM element. * @param {NodeCache} nodeCache * Node cache that holds already seen WebElement and ShadowRoot references. * @@ -461,7 +460,8 @@ element.findClosest = function(startNode, selector) { * The DOM element that the identifier was generated for. * * @throws {NoSuchElementError} - * If the element doesn't exist in the current browsing context. + * If element represented by reference id doesn't exist + * in the current browsing context. * @throws {StaleElementReferenceError} * If the element has gone stale, indicating its node document is no * longer the active document or it is no longer attached to the DOM. @@ -469,78 +469,25 @@ element.findClosest = function(startNode, selector) { element.getKnownElement = function(browsingContext, nodeId, nodeCache) { if (!element.isNodeReferenceKnown(browsingContext, nodeId, nodeCache)) { throw new lazy.error.NoSuchElementError( - `The element with the reference ${nodeId} is not known in the current browsing context` - ); - } - - const node = nodeCache.getNode(browsingContext, nodeId); - - // Ensure the node is of the correct Node type. - if (node !== null && !element.isElement(node)) { - throw new lazy.error.NoSuchElementError( - `The element with the reference ${nodeId} is not of type HTMLElement` + lazy.pprint`The element reference of ${JSON.stringify( + nodeId.webElRef + )} is not known in the current browsing context` ); } // If null, which may be the case if the element has been unwrapped from a // weak reference, it is always considered stale. - if (node === null || element.isStale(node)) { + const el = nodeCache.getNode(browsingContext, nodeId); + if (el === null || element.isStale(el)) { throw new lazy.error.StaleElementReferenceError( - `The element with the reference ${nodeId} ` + + lazy.pprint`The element reference of ${el || + JSON.stringify(nodeId.webElRef)} ` + "is stale; either its node document is not the active document, " + "or it is no longer connected to the DOM" ); } - return node; -}; - -/** - * Resolve ShadowRoot from specified web reference identifier. - * - * @param {BrowsingContext} browsingContext - * The browsing context to retrieve the shadow root from. - * @param {string} nodeId - * The WebReference uuid for a ShadowRoot. - * @param {NodeCache} nodeCache - * Node cache that holds already seen WebElement and ShadowRoot references. - * - * @returns {ShadowRoot} - * The ShadowRoot that the identifier was generated for. - * - * @throws {NoSuchShadowRootError} - * If the ShadowRoot doesn't exist in the current browsing context. - * @throws {DetachedShadowRootError} - * If the ShadowRoot is detached, indicating its node document is no - * longer the active document or it is no longer attached to the DOM. - */ -element.getKnownShadowRoot = function(browsingContext, nodeId, nodeCache) { - if (!element.isNodeReferenceKnown(browsingContext, nodeId, nodeCache)) { - throw new lazy.error.NoSuchShadowRootError( - `The shadow root with the reference ${nodeId} is not known in the current browsing context` - ); - } - - const node = nodeCache.getNode(browsingContext, nodeId); - - // Ensure the node is of the correct Node type. - if (node !== null && !element.isShadowRoot(node)) { - throw new lazy.error.NoSuchShadowRootError( - `The shadow root with the reference ${nodeId} is not of type ShadowRoot` - ); - } - - // If null, which may be the case if the element has been unwrapped from a - // weak reference, it is always considered stale. - if (node === null || element.isDetached(node)) { - throw new lazy.error.DetachedShadowRootError( - `The shadow root with the reference ${nodeId} ` + - "is detached; either its node document is not the active document, " + - "or it is no longer connected to the DOM" - ); - } - - return node; + return el; }; /** @@ -569,24 +516,6 @@ element.isCollection = function(seq) { } }; -/** - * Determines if shadowRoot is detached. - * - * A ShadowRoot is detached if its node document is not the active document - * or if the element node referred to as its host is stale. - * - * @param {ShadowRoot} shadowRoot - * ShadowRoot to check for detached state. - * - * @return {boolean} - * True if shadowRoot is detached, false otherwise. - */ -element.isDetached = function(shadowRoot) { - return ( - !shadowRoot.ownerDocument.isActive() || element.isStale(shadowRoot.host) - ); -}; - /** * Determines if the node reference is known for the given browsing context. * @@ -638,7 +567,7 @@ element.isStale = function(el) { return true; } - return !el.ownerDocument.isActive() || !el.isConnected; + return !el.ownerGlobal.document.isActive() || !el.isConnected; }; /** @@ -1187,19 +1116,17 @@ element.getShadowRoot = function(el) { }; /** - * Ascertains whether node is a shadow root. + * Ascertains whether obj is a shadow root. * - * @param {ShadowRoot} node + * @param {ShadowRoot} obj * The node that will be checked to see if it has a shadow root * * @returns {boolean} - * True if node is a shadow root, false otherwise. + * True if obj is a shadow root, false otherwise. */ -element.isShadowRoot = function(node) { +element.isShadowRoot = function(obj) { return ( - node && - node.nodeType === DOCUMENT_FRAGMENT_NODE && - node.containingShadowRoot == node + obj !== null && typeof obj == "object" && obj.containingShadowRoot == obj ); }; @@ -1213,7 +1140,13 @@ element.isShadowRoot = function(node) { * True if obj is a DOM element, false otherwise. */ element.isDOMElement = function(obj) { - return obj && obj.nodeType == ELEMENT_NODE && !element.isXULElement(obj); + return ( + typeof obj == "object" && + obj !== null && + "nodeType" in obj && + obj.nodeType == ELEMENT_NODE && + !element.isXULElement(obj) + ); }; /** @@ -1226,7 +1159,13 @@ element.isDOMElement = function(obj) { * True if obj is a XULElement, false otherwise. */ element.isXULElement = function(obj) { - return obj && obj.nodeType === ELEMENT_NODE && obj.namespaceURI === XUL_NS; + return ( + typeof obj == "object" && + obj !== null && + "nodeType" in obj && + obj.nodeType === obj.ELEMENT_NODE && + obj.namespaceURI === XUL_NS + ); }; /** @@ -1364,7 +1303,7 @@ export class WebReference { * Returns a new {@link WebReference} reference for a DOM or XUL element, * WindowProxy, or ShadowRoot. * - * @param {(Element|ShadowRoot|WindowProxy|MockXULElement)} node + * @param {(Element|ShadowRoot|WindowProxy|XULElement)} node * Node to construct a web element reference for. * @param {string=} uuid * Optional unique identifier of the WebReference if already known. diff --git a/remote/marionette/json.sys.mjs b/remote/marionette/json.sys.mjs index 1fd3c8fea7f1..1d75d913d821 100644 --- a/remote/marionette/json.sys.mjs +++ b/remote/marionette/json.sys.mjs @@ -125,19 +125,20 @@ json.clone = function(value, nodeCache) { // Evaluation of code might take place in mutable sandboxes, which are // created to waive XRays by default. As such DOM nodes would have to be // unwaived before accessing properties like "ownerGlobal" is possible. - // - // Until bug 1743788 is fixed there might be the possibility that more - // objects might need to be unwaived as well. const isNode = Node.isInstance(value); if (isNode) { value = Cu.unwaiveXrays(value); } - if (isNode && lazy.element.isElement(value)) { - // Convert DOM elements to WebReference instances. + if ( + isNode && + (lazy.element.isElement(value) || lazy.element.isShadowRoot(value)) + ) { + // Convert DOM elements (eg. HTMLElement, XULElement, et al) and + // ShadowRoot instances to WebReference references. + // Don't create a reference for stale elements. if (lazy.element.isStale(value)) { - // Don't create a reference for stale elements. throw new lazy.error.StaleElementReferenceError( lazy.pprint`The element ${value} is no longer attached to the DOM` ); @@ -147,20 +148,6 @@ json.clone = function(value, nodeCache) { return lazy.WebReference.from(value, nodeRef).toJSON(); } - if (isNode && lazy.element.isShadowRoot(value)) { - // Convert ShadowRoot instances to WebReference references. - - if (lazy.element.isDetached(value)) { - // Don't create a reference for detached shadow roots. - throw new lazy.error.DetachedShadowRootError( - lazy.pprint`The ShadowRoot ${value} is no longer attached to the DOM` - ); - } - - const nodeRef = nodeCache.getOrCreateNodeReference(value); - return lazy.WebReference.from(value, nodeRef).toJSON(); - } - if (typeof value.toJSON == "function") { // custom JSON representation let unsafeJSON; @@ -221,15 +208,10 @@ json.deserialize = function(value, nodeCache, win) { // Create a WebReference based on the WebElement identifier. const webRef = lazy.WebReference.fromJSON(value); - if (webRef instanceof lazy.ShadowRoot) { - return lazy.element.getKnownShadowRoot( - win.browsingContext, - webRef.uuid, - nodeCache - ); - } - - if (webRef instanceof lazy.WebElement) { + if ( + webRef instanceof lazy.WebElement || + webRef instanceof lazy.ShadowRoot + ) { return lazy.element.getKnownElement( win.browsingContext, webRef.uuid, diff --git a/remote/marionette/test/xpcshell/test_element.js b/remote/marionette/test/xpcshell/test_element.js index 24f2fa80ab68..f0478e091c71 100644 --- a/remote/marionette/test/xpcshell/test_element.js +++ b/remote/marionette/test/xpcshell/test_element.js @@ -19,7 +19,7 @@ const MemoryReporter = Cc["@mozilla.org/memory-reporter-manager;1"].getService( Ci.nsIMemoryReporterManager ); -class MockElement { +class Element { constructor(tagName, attrs = {}) { this.tagName = tagName; this.localName = tagName; @@ -54,7 +54,58 @@ class MockElement { } } -class MockXULElement extends MockElement { +class DOMElement extends Element { + constructor(tagName, attrs = {}) { + super(tagName, attrs); + + this.isConnected = true; + + if (typeof this.namespaceURI == "undefined") { + this.namespaceURI = XHTML_NS; + } + + if (typeof this.ownerDocument == "undefined") { + this.ownerDocument = { designMode: "off" }; + } + + if (typeof this.ownerDocument.documentElement == "undefined") { + this.ownerDocument.documentElement = { namespaceURI: XHTML_NS }; + } + + if (typeof this.type == "undefined") { + this.type = "text"; + } + + if (this.localName == "option") { + this.selected = false; + } + + if ( + this.localName == "input" && + ["checkbox", "radio"].includes(this.type) + ) { + this.checked = false; + } + } + + getBoundingClientRect() { + return { + top: 0, + left: 0, + width: 100, + height: 100, + }; + } +} + +class SVGElement extends Element { + constructor(tagName, attrs = {}) { + super(tagName, attrs); + this.namespaceURI = SVG_NS; + } +} + +class XULElement extends Element { constructor(tagName, attrs = {}) { super(tagName, attrs); this.namespaceURI = XUL_NS; @@ -68,66 +119,48 @@ class MockXULElement extends MockElement { } } -const xulEl = new MockXULElement("text"); +const domEl = new DOMElement("p"); +const svgEl = new SVGElement("rect"); +const xulEl = new XULElement("text"); -const domElInPrivilegedDocument = new MockElement("input", { +const domElInPrivilegedDocument = new Element("input", { nodePrincipal: { isSystemPrincipal: true }, }); -const xulElInPrivilegedDocument = new MockXULElement("text", { +const xulElInPrivilegedDocument = new XULElement("text", { nodePrincipal: { isSystemPrincipal: true }, }); -function setupTest() { - const browser = Services.appShell.createWindowlessBrowser(false); - - browser.document.body.innerHTML = ` -
- - - - -
- `; - - const divEl = browser.document.querySelector("div"); - const svgEl = browser.document.querySelector("svg"); - const textareaEl = browser.document.querySelector("textarea"); - const videoEl = browser.document.querySelector("video"); - - const iframeEl = browser.document.querySelector("iframe"); - const childEl = iframeEl.contentDocument.createElement("div"); - iframeEl.contentDocument.body.appendChild(childEl); - - const shadowRoot = videoEl.openOrClosedShadowRoot; - - return { - browser, - nodeCache: new NodeCache(), - childEl, - divEl, - iframeEl, - shadowRoot, - svgEl, - textareaEl, - videoEl, - }; +class WindowProxy { + get parent() { + return this; + } + get self() { + return this; + } + toString() { + return "[object Window]"; + } } +const domWin = new WindowProxy(); +const domFrame = new (class extends WindowProxy { + get parent() { + return domWin; + } +})(); add_test(function test_findClosest() { - const { divEl, videoEl } = setupTest(); + equal(element.findClosest(domEl, "foo"), null); - equal(element.findClosest(divEl, "foo"), null); - equal(element.findClosest(videoEl, "div"), divEl); + let foo = new DOMElement("foo"); + let bar = new DOMElement("bar"); + bar.parentNode = foo; + equal(element.findClosest(bar, "foo"), foo); run_next_test(); }); add_test(function test_isSelected() { - const { browser, divEl } = setupTest(); - - const checkbox = browser.document.createElement("input"); - checkbox.setAttribute("type", "checkbox"); - + let checkbox = new DOMElement("input", { type: "checkbox" }); ok(!element.isSelected(checkbox)); checkbox.checked = true; ok(element.isSelected(checkbox)); @@ -137,8 +170,7 @@ add_test(function test_isSelected() { checkbox.checked = false; ok(!element.isSelected(checkbox)); - const option = browser.document.createElement("option"); - + let option = new DOMElement("option"); ok(!element.isSelected(option)); option.selected = true; ok(element.isSelected(option)); @@ -149,191 +181,121 @@ add_test(function test_isSelected() { ok(!element.isSelected(option)); // anything else should not be selected - for (const type of [undefined, null, "foo", true, [], {}, divEl]) { - ok(!element.isSelected(type)); + for (let typ of [domEl, undefined, null, "foo", true, [], {}]) { + ok(!element.isSelected(typ)); } run_next_test(); }); add_test(function test_isElement() { - const { divEl, iframeEl, shadowRoot, svgEl } = setupTest(); - - ok(element.isElement(divEl)); + ok(element.isElement(domEl)); ok(element.isElement(svgEl)); ok(element.isElement(xulEl)); - ok(element.isElement(domElInPrivilegedDocument)); - ok(element.isElement(xulElInPrivilegedDocument)); - - ok(!element.isElement(shadowRoot)); - ok(!element.isElement(divEl.ownerGlobal)); - ok(!element.isElement(iframeEl.contentWindow)); - - for (const type of [true, 42, {}, [], undefined, null]) { - ok(!element.isElement(type)); + ok(!element.isElement(domWin)); + ok(!element.isElement(domFrame)); + for (let typ of [true, 42, {}, [], undefined, null]) { + ok(!element.isElement(typ)); } run_next_test(); }); add_test(function test_isDOMElement() { - const { divEl, iframeEl, shadowRoot, svgEl } = setupTest(); - - ok(element.isDOMElement(divEl)); - ok(element.isDOMElement(svgEl)); + ok(element.isDOMElement(domEl)); ok(element.isDOMElement(domElInPrivilegedDocument)); - - ok(!element.isDOMElement(shadowRoot)); - ok(!element.isDOMElement(divEl.ownerGlobal)); - ok(!element.isDOMElement(iframeEl.contentWindow)); + ok(element.isDOMElement(svgEl)); ok(!element.isDOMElement(xulEl)); ok(!element.isDOMElement(xulElInPrivilegedDocument)); - - for (const type of [true, 42, "foo", {}, [], undefined, null]) { - ok(!element.isDOMElement(type)); + ok(!element.isDOMElement(domWin)); + ok(!element.isDOMElement(domFrame)); + for (let typ of [true, 42, {}, [], undefined, null]) { + ok(!element.isDOMElement(typ)); } run_next_test(); }); add_test(function test_isXULElement() { - const { divEl, iframeEl, shadowRoot, svgEl } = setupTest(); - ok(element.isXULElement(xulEl)); ok(element.isXULElement(xulElInPrivilegedDocument)); - - ok(!element.isXULElement(divEl)); ok(!element.isXULElement(domElInPrivilegedDocument)); + ok(!element.isXULElement(domEl)); ok(!element.isXULElement(svgEl)); - ok(!element.isXULElement(shadowRoot)); - ok(!element.isXULElement(divEl.ownerGlobal)); - ok(!element.isXULElement(iframeEl.contentWindow)); - - for (const type of [true, 42, "foo", {}, [], undefined, null]) { - ok(!element.isXULElement(type)); + ok(!element.isXULElement(domWin)); + ok(!element.isXULElement(domFrame)); + for (let typ of [true, 42, {}, [], undefined, null]) { + ok(!element.isXULElement(typ)); } run_next_test(); }); add_test(function test_isDOMWindow() { - const { divEl, iframeEl, shadowRoot, svgEl } = setupTest(); - - ok(element.isDOMWindow(divEl.ownerGlobal)); - ok(element.isDOMWindow(iframeEl.contentWindow)); - - ok(!element.isDOMWindow(divEl)); - ok(!element.isDOMWindow(svgEl)); - ok(!element.isDOMWindow(shadowRoot)); + ok(element.isDOMWindow(domWin)); + ok(element.isDOMWindow(domFrame)); + ok(!element.isDOMWindow(domEl)); ok(!element.isDOMWindow(domElInPrivilegedDocument)); + ok(!element.isDOMWindow(svgEl)); ok(!element.isDOMWindow(xulEl)); - ok(!element.isDOMWindow(xulElInPrivilegedDocument)); - - for (const type of [true, 42, {}, [], undefined, null]) { - ok(!element.isDOMWindow(type)); + for (let typ of [true, 42, {}, [], undefined, null]) { + ok(!element.isDOMWindow(typ)); } run_next_test(); }); -add_test(function test_isShadowRoot() { - const { browser, divEl, iframeEl, shadowRoot, svgEl } = setupTest(); - - ok(element.isShadowRoot(shadowRoot)); - - ok(!element.isShadowRoot(divEl)); - ok(!element.isShadowRoot(svgEl)); - ok(!element.isShadowRoot(divEl.ownerGlobal)); - ok(!element.isShadowRoot(iframeEl.contentWindow)); - ok(!element.isShadowRoot(xulEl)); - ok(!element.isShadowRoot(domElInPrivilegedDocument)); - ok(!element.isShadowRoot(xulElInPrivilegedDocument)); - - for (const type of [true, 42, "foo", {}, [], undefined, null]) { - ok(!element.isShadowRoot(type)); - } - - const documentFragment = browser.document.createDocumentFragment(); - ok(!element.isShadowRoot(documentFragment)); - - run_next_test(); -}); - add_test(function test_isReadOnly() { - const { browser, divEl, textareaEl } = setupTest(); - - const input = browser.document.createElement("input"); - input.readOnly = true; - ok(element.isReadOnly(input)); - - textareaEl.readOnly = true; - ok(element.isReadOnly(textareaEl)); - - ok(!element.isReadOnly(divEl)); - divEl.readOnly = true; - ok(!element.isReadOnly(divEl)); - ok(!element.isReadOnly(null)); + ok(!element.isReadOnly(domEl)); + ok(!element.isReadOnly(new DOMElement("p", { readOnly: true }))); + ok(element.isReadOnly(new DOMElement("input", { readOnly: true }))); + ok(element.isReadOnly(new DOMElement("textarea", { readOnly: true }))); run_next_test(); }); add_test(function test_isDisabled() { - const { browser, divEl, svgEl } = setupTest(); + ok(!element.isDisabled(new DOMElement("p"))); + ok(!element.isDisabled(new SVGElement("rect", { disabled: true }))); + ok(!element.isDisabled(new XULElement("browser", { disabled: true }))); - const select = browser.document.createElement("select"); - const option = browser.document.createElement("option"); - select.appendChild(option); - select.disabled = true; + let select = new DOMElement("select", { disabled: true }); + let option = new DOMElement("option"); + option.parentNode = select; ok(element.isDisabled(option)); - const optgroup = browser.document.createElement("optgroup"); + let optgroup = new DOMElement("optgroup", { disabled: true }); option.parentNode = optgroup; - ok(element.isDisabled(option)); - optgroup.parentNode = select; + select.disabled = false; ok(element.isDisabled(option)); - select.disabled = false; - ok(!element.isDisabled(option)); - - for (const type of ["button", "input", "select", "textarea"]) { - const elem = browser.document.createElement(type); - ok(!element.isDisabled(elem)); - elem.disabled = true; - ok(element.isDisabled(elem)); - } - - ok(!element.isDisabled(divEl)); - - svgEl.disabled = true; - ok(!element.isDisabled(svgEl)); - - ok(!element.isDisabled(new MockXULElement("browser", { disabled: true }))); + ok(element.isDisabled(new DOMElement("button", { disabled: true }))); + ok(element.isDisabled(new DOMElement("input", { disabled: true }))); + ok(element.isDisabled(new DOMElement("select", { disabled: true }))); + ok(element.isDisabled(new DOMElement("textarea", { disabled: true }))); run_next_test(); }); add_test(function test_isEditingHost() { - const { browser, divEl, svgEl } = setupTest(); - ok(!element.isEditingHost(null)); - - ok(!element.isEditingHost(divEl)); - divEl.contentEditable = true; - ok(element.isEditingHost(divEl)); - - ok(!element.isEditingHost(svgEl)); - browser.document.designMode = "on"; - ok(element.isEditingHost(svgEl)); + ok(element.isEditingHost(new DOMElement("p", { isContentEditable: true }))); + ok( + element.isEditingHost( + new DOMElement("p", { ownerDocument: { designMode: "on" } }) + ) + ); run_next_test(); }); add_test(function test_isEditable() { - const { browser, divEl, svgEl, textareaEl } = setupTest(); - ok(!element.isEditable(null)); + ok(!element.isEditable(domEl)); + ok(!element.isEditable(new DOMElement("textarea", { readOnly: true }))); + ok(!element.isEditable(new DOMElement("textarea", { disabled: true }))); for (let type of [ "checkbox", @@ -343,52 +305,34 @@ add_test(function test_isEditable() { "button", "image", ]) { - const input = browser.document.createElement("input"); - input.setAttribute("type", type); - - ok(!element.isEditable(input)); + ok(!element.isEditable(new DOMElement("input", { type }))); } + ok(element.isEditable(new DOMElement("input", { type: "text" }))); + ok(element.isEditable(new DOMElement("input"))); - const input = browser.document.createElement("input"); - ok(element.isEditable(input)); - input.setAttribute("type", "text"); - ok(element.isEditable(input)); - - ok(element.isEditable(textareaEl)); - - const textareaDisabled = browser.document.createElement("textarea"); - textareaDisabled.disabled = true; - ok(!element.isEditable(textareaDisabled)); - - const textareaReadOnly = browser.document.createElement("textarea"); - textareaReadOnly.readOnly = true; - ok(!element.isEditable(textareaReadOnly)); - - ok(!element.isEditable(divEl)); - divEl.contentEditable = true; - ok(element.isEditable(divEl)); - - ok(!element.isEditable(svgEl)); - browser.document.designMode = "on"; - ok(element.isEditable(svgEl)); + ok(element.isEditable(new DOMElement("textarea"))); + ok( + element.isEditable( + new DOMElement("p", { ownerDocument: { designMode: "on" } }) + ) + ); + ok(element.isEditable(new DOMElement("p", { isContentEditable: true }))); run_next_test(); }); add_test(function test_isMutableFormControlElement() { - const { browser, divEl, textareaEl } = setupTest(); - ok(!element.isMutableFormControl(null)); - - ok(element.isMutableFormControl(textareaEl)); - - const textareaDisabled = browser.document.createElement("textarea"); - textareaDisabled.disabled = true; - ok(!element.isMutableFormControl(textareaDisabled)); - - const textareaReadOnly = browser.document.createElement("textarea"); - textareaReadOnly.readOnly = true; - ok(!element.isMutableFormControl(textareaReadOnly)); + ok( + !element.isMutableFormControl( + new DOMElement("textarea", { readOnly: true }) + ) + ); + ok( + !element.isMutableFormControl( + new DOMElement("textarea", { disabled: true }) + ) + ); const mutableStates = new Set([ "color", @@ -406,74 +350,76 @@ add_test(function test_isMutableFormControlElement() { "url", "week", ]); - for (const type of mutableStates) { - const input = browser.document.createElement("input"); - input.setAttribute("type", type); - ok(element.isMutableFormControl(input)); + for (let type of mutableStates) { + ok(element.isMutableFormControl(new DOMElement("input", { type }))); } + ok(element.isMutableFormControl(new DOMElement("textarea"))); - const inputHidden = browser.document.createElement("input"); - inputHidden.setAttribute("type", "hidden"); - ok(!element.isMutableFormControl(inputHidden)); - - ok(!element.isMutableFormControl(divEl)); - divEl.contentEditable = true; - ok(!element.isMutableFormControl(divEl)); - browser.document.designMode = "on"; - ok(!element.isMutableFormControl(divEl)); + ok( + !element.isMutableFormControl(new DOMElement("input", { type: "hidden" })) + ); + ok(!element.isMutableFormControl(new DOMElement("p"))); + ok( + !element.isMutableFormControl( + new DOMElement("p", { isContentEditable: true }) + ) + ); + ok( + !element.isMutableFormControl( + new DOMElement("p", { ownerDocument: { designMode: "on" } }) + ) + ); run_next_test(); }); add_test(function test_coordinates() { - const { divEl } = setupTest(); + let p = element.coordinates(domEl); + ok(p.hasOwnProperty("x")); + ok(p.hasOwnProperty("y")); + equal("number", typeof p.x); + equal("number", typeof p.y); - let coords = element.coordinates(divEl); - ok(coords.hasOwnProperty("x")); - ok(coords.hasOwnProperty("y")); - equal(typeof coords.x, "number"); - equal(typeof coords.y, "number"); - - deepEqual(element.coordinates(divEl), { x: 0, y: 0 }); - deepEqual(element.coordinates(divEl, 10, 10), { x: 10, y: 10 }); - deepEqual(element.coordinates(divEl, -5, -5), { x: -5, y: -5 }); + deepEqual({ x: 50, y: 50 }, element.coordinates(domEl)); + deepEqual({ x: 10, y: 10 }, element.coordinates(domEl, 10, 10)); + deepEqual({ x: -5, y: -5 }, element.coordinates(domEl, -5, -5)); Assert.throws(() => element.coordinates(null), /node is null/); Assert.throws( - () => element.coordinates(divEl, "string", undefined), + () => element.coordinates(domEl, "string", undefined), /Offset must be a number/ ); Assert.throws( - () => element.coordinates(divEl, undefined, "string"), + () => element.coordinates(domEl, undefined, "string"), /Offset must be a number/ ); Assert.throws( - () => element.coordinates(divEl, "string", "string"), + () => element.coordinates(domEl, "string", "string"), /Offset must be a number/ ); Assert.throws( - () => element.coordinates(divEl, {}, undefined), + () => element.coordinates(domEl, {}, undefined), /Offset must be a number/ ); Assert.throws( - () => element.coordinates(divEl, undefined, {}), + () => element.coordinates(domEl, undefined, {}), /Offset must be a number/ ); Assert.throws( - () => element.coordinates(divEl, {}, {}), + () => element.coordinates(domEl, {}, {}), /Offset must be a number/ ); Assert.throws( - () => element.coordinates(divEl, [], undefined), + () => element.coordinates(domEl, [], undefined), /Offset must be a number/ ); Assert.throws( - () => element.coordinates(divEl, undefined, []), + () => element.coordinates(domEl, undefined, []), /Offset must be a number/ ); Assert.throws( - () => element.coordinates(divEl, [], []), + () => element.coordinates(domEl, [], []), /Offset must be a number/ ); @@ -481,28 +427,25 @@ add_test(function test_coordinates() { }); add_test(function test_isNodeReferenceKnown() { - const { browser, nodeCache, childEl, iframeEl, videoEl } = setupTest(); + const browser = Services.appShell.createWindowlessBrowser(false); + const nodeCache = new NodeCache(); // Unknown node reference ok(!element.isNodeReferenceKnown(browser.browsingContext, "foo", nodeCache)); // Known node reference - const videoElRef = nodeCache.getOrCreateNodeReference(videoEl); - ok( - element.isNodeReferenceKnown(browser.browsingContext, videoElRef, nodeCache) - ); + const el = browser.document.createElement("video"); + const elRef = nodeCache.getOrCreateNodeReference(el); + ok(element.isNodeReferenceKnown(browser.browsingContext, elRef, nodeCache)); // Different top-level browsing context const browser2 = Services.appShell.createWindowlessBrowser(false); - ok( - !element.isNodeReferenceKnown( - browser2.browsingContext, - videoElRef, - nodeCache - ) - ); + ok(!element.isNodeReferenceKnown(browser2.browsingContext, elRef, nodeCache)); // Different child browsing context + const iframeEl = browser.document.createElement("iframe"); + browser.document.body.appendChild(iframeEl); + const childEl = iframeEl.contentDocument.createElement("div"); const childElRef = nodeCache.getOrCreateNodeReference(childEl); const childBrowsingContext = iframeEl.contentWindow.browsingContext; ok(element.isNodeReferenceKnown(childBrowsingContext, childElRef, nodeCache)); @@ -518,150 +461,64 @@ add_test(function test_isNodeReferenceKnown() { }); add_test(function test_getKnownElement() { - const { browser, nodeCache, shadowRoot, videoEl } = setupTest(); + const browser = Services.appShell.createWindowlessBrowser(false); + const nodeCache = new NodeCache(); // Unknown element reference Assert.throws(() => { element.getKnownElement(browser.browsingContext, "foo", nodeCache); }, /NoSuchElementError/); - // With a ShadowRoot reference - const shadowRootRef = nodeCache.getOrCreateNodeReference(shadowRoot); - Assert.throws(() => { - element.getKnownElement(browser.browsingContext, shadowRootRef, nodeCache); - }, /NoSuchElementError/); - // Deleted element (eg. garbage collected) - let detachedEl = browser.document.createElement("div"); - const detachedElRef = nodeCache.getOrCreateNodeReference(detachedEl); + let divEl = browser.document.createElement("div"); + const divElRef = nodeCache.getOrCreateNodeReference(divEl); - // ... not connected to the DOM - Assert.throws(() => { - element.getKnownElement(browser.browsingContext, detachedElRef, nodeCache); - }, /StaleElementReferenceError/); - - // ... element garbage collected - detachedEl = null; + divEl = null; MemoryReporter.minimizeMemoryUsage(() => { Assert.throws(() => { - element.getKnownElement( - browser.browsingContext, - detachedElRef, - nodeCache - ); + element.getKnownElement(browser.browsingContext, divElRef, nodeCache); }, /StaleElementReferenceError/); run_next_test(); }); // Known element reference - const videoElRef = nodeCache.getOrCreateNodeReference(videoEl); + let imgEl = browser.document.createElement("img"); + browser.document.body.appendChild(imgEl); + const imgElRef = nodeCache.getOrCreateNodeReference(imgEl); equal( - element.getKnownElement(browser.browsingContext, videoElRef, nodeCache), - videoEl + element.getKnownElement(browser.browsingContext, imgElRef, nodeCache), + imgEl ); }); -add_test(function test_getKnownShadowRoot() { - const { browser, nodeCache, shadowRoot, videoEl } = setupTest(); - - const videoElRef = nodeCache.getOrCreateNodeReference(videoEl); - - // Unknown ShadowRoot reference - Assert.throws(() => { - element.getKnownShadowRoot(browser.browsingContext, "foo", nodeCache); - }, /NoSuchShadowRootError/); - - // With a HTMLElement reference - Assert.throws(() => { - element.getKnownShadowRoot(browser.browsingContext, videoElRef, nodeCache); - }, /NoSuchShadowRootError/); - - // Known ShadowRoot reference - const shadowRootRef = nodeCache.getOrCreateNodeReference(shadowRoot); - equal( - element.getKnownShadowRoot( - browser.browsingContext, - shadowRootRef, - nodeCache - ), - shadowRoot - ); - - // Detached ShadowRoot host - let el = browser.document.createElement("div"); - let detachedShadowRoot = el.attachShadow({ mode: "open" }); - detachedShadowRoot.innerHTML = ""; - - const detachedShadowRootRef = nodeCache.getOrCreateNodeReference( - detachedShadowRoot - ); - - // ... not connected to the DOM - Assert.throws(() => { - element.getKnownShadowRoot( - browser.browsingContext, - detachedShadowRootRef, - nodeCache - ); - }, /DetachedShadowRootError/); - - // ... host and shadow root garbage collected - el = null; - detachedShadowRoot = null; - MemoryReporter.minimizeMemoryUsage(() => { - Assert.throws(() => { - element.getKnownShadowRoot( - browser.browsingContext, - detachedShadowRootRef, - nodeCache - ); - }, /DetachedShadowRootError/); - - run_next_test(); - }); -}); - -add_test(function test_isDetached() { - const { childEl, iframeEl } = setupTest(); - - let detachedShadowRoot = childEl.attachShadow({ mode: "open" }); - detachedShadowRoot.innerHTML = ""; - - // Connected to the DOM - ok(!element.isDetached(detachedShadowRoot)); - - // Node document (ownerDocument) is not the active document - iframeEl.remove(); - ok(element.isDetached(detachedShadowRoot)); - - // host element is stale (eg. not connected) - detachedShadowRoot.host.remove(); - equal(childEl.isConnected, false); - ok(element.isDetached(detachedShadowRoot)); - - run_next_test(); -}); - add_test(function test_isStale() { - const { childEl, iframeEl } = setupTest(); + // Not connected to the DOM + ok(element.isStale(new Element("div"))); // Connected to the DOM - ok(!element.isStale(childEl)); + const domDivEl = new DOMElement("div"); + ok(!element.isStale(domDivEl)); // Not part of the active document - iframeEl.remove(); - ok(element.isStale(childEl)); + domDivEl.ownerGlobal = { + document: { + isActive() { + return false; + }, + }, + }; + ok(element.isStale(domDivEl)); - // Not connected to the DOM - childEl.remove(); - ok(element.isStale(childEl)); + // Without ownerGlobal + delete domDivEl.ownerGlobal; + ok(element.isStale(domDivEl)); run_next_test(); }); add_test(function test_WebReference_ctor() { - const el = new WebReference("foo"); + let el = new WebReference("foo"); equal(el.uuid, "foo"); for (let t of [42, true, [], {}, null, undefined]) { @@ -672,8 +529,8 @@ add_test(function test_WebReference_ctor() { }); add_test(function test_WebElemenet_is() { - const a = new WebReference("a"); - const b = new WebReference("b"); + let a = new WebReference("a"); + let b = new WebReference("b"); ok(a.is(a)); ok(b.is(b)); @@ -686,12 +543,10 @@ add_test(function test_WebElemenet_is() { }); add_test(function test_WebReference_from() { - const { divEl, iframeEl } = setupTest(); - - ok(WebReference.from(divEl) instanceof WebElement); + ok(WebReference.from(domEl) instanceof WebElement); ok(WebReference.from(xulEl) instanceof WebElement); - ok(WebReference.from(divEl.ownerGlobal) instanceof WebWindow); - ok(WebReference.from(iframeEl.contentWindow) instanceof WebFrame); + ok(WebReference.from(domWin) instanceof WebWindow); + ok(WebReference.from(domFrame) instanceof WebFrame); ok(WebReference.from(domElInPrivilegedDocument) instanceof WebElement); ok(WebReference.from(xulElInPrivilegedDocument) instanceof WebElement); @@ -703,15 +558,15 @@ add_test(function test_WebReference_from() { add_test(function test_WebReference_fromJSON_WebElement() { const { Identifier } = WebElement; - const ref = { [Identifier]: "foo" }; - const webEl = WebReference.fromJSON(ref); + let ref = { [Identifier]: "foo" }; + let webEl = WebReference.fromJSON(ref); ok(webEl instanceof WebElement); equal(webEl.uuid, "foo"); let identifierPrecedence = { [Identifier]: "identifier-uuid", }; - const precedenceEl = WebReference.fromJSON(identifierPrecedence); + let precedenceEl = WebReference.fromJSON(identifierPrecedence); ok(precedenceEl instanceof WebElement); equal(precedenceEl.uuid, "identifier-uuid"); @@ -719,9 +574,8 @@ add_test(function test_WebReference_fromJSON_WebElement() { }); add_test(function test_WebReference_fromJSON_WebWindow() { - const ref = { [WebWindow.Identifier]: "foo" }; - const win = WebReference.fromJSON(ref); - + let ref = { [WebWindow.Identifier]: "foo" }; + let win = WebReference.fromJSON(ref); ok(win instanceof WebWindow); equal(win.uuid, "foo"); @@ -729,8 +583,8 @@ add_test(function test_WebReference_fromJSON_WebWindow() { }); add_test(function test_WebReference_fromJSON_WebFrame() { - const ref = { [WebFrame.Identifier]: "foo" }; - const frame = WebReference.fromJSON(ref); + let ref = { [WebFrame.Identifier]: "foo" }; + let frame = WebReference.fromJSON(ref); ok(frame instanceof WebFrame); equal(frame.uuid, "foo"); @@ -740,13 +594,11 @@ add_test(function test_WebReference_fromJSON_WebFrame() { add_test(function test_WebReference_fromJSON_malformed() { Assert.throws(() => WebReference.fromJSON({}), /InvalidArgumentError/); Assert.throws(() => WebReference.fromJSON(null), /InvalidArgumentError/); - run_next_test(); }); add_test(function test_WebReference_fromUUID() { - const domWebEl = WebReference.fromUUID("bar"); - + let domWebEl = WebReference.fromUUID("bar"); ok(domWebEl instanceof WebElement); equal(domWebEl.uuid, "bar"); @@ -773,8 +625,8 @@ add_test(function test_generateUUID() { add_test(function test_WebElement_toJSON() { const { Identifier } = WebElement; - const el = new WebElement("foo"); - const json = el.toJSON(); + let el = new WebElement("foo"); + let json = el.toJSON(); ok(Identifier in json); equal(json[Identifier], "foo"); @@ -785,7 +637,7 @@ add_test(function test_WebElement_toJSON() { add_test(function test_WebElement_fromJSON() { const { Identifier } = WebElement; - const el = WebElement.fromJSON({ [Identifier]: "foo" }); + let el = WebElement.fromJSON({ [Identifier]: "foo" }); ok(el instanceof WebElement); equal(el.uuid, "foo"); @@ -795,9 +647,8 @@ add_test(function test_WebElement_fromJSON() { }); add_test(function test_WebWindow_toJSON() { - const win = new WebWindow("foo"); - const json = win.toJSON(); - + let win = new WebWindow("foo"); + let json = win.toJSON(); ok(WebWindow.Identifier in json); equal(json[WebWindow.Identifier], "foo"); @@ -805,9 +656,8 @@ add_test(function test_WebWindow_toJSON() { }); add_test(function test_WebWindow_fromJSON() { - const ref = { [WebWindow.Identifier]: "foo" }; - const win = WebWindow.fromJSON(ref); - + let ref = { [WebWindow.Identifier]: "foo" }; + let win = WebWindow.fromJSON(ref); ok(win instanceof WebWindow); equal(win.uuid, "foo"); @@ -815,9 +665,8 @@ add_test(function test_WebWindow_fromJSON() { }); add_test(function test_WebFrame_toJSON() { - const frame = new WebFrame("foo"); - const json = frame.toJSON(); - + let frame = new WebFrame("foo"); + let json = frame.toJSON(); ok(WebFrame.Identifier in json); equal(json[WebFrame.Identifier], "foo"); @@ -825,9 +674,8 @@ add_test(function test_WebFrame_toJSON() { }); add_test(function test_WebFrame_fromJSON() { - const ref = { [WebFrame.Identifier]: "foo" }; - const win = WebFrame.fromJSON(ref); - + let ref = { [WebFrame.Identifier]: "foo" }; + let win = WebFrame.fromJSON(ref); ok(win instanceof WebFrame); equal(win.uuid, "foo"); diff --git a/remote/marionette/test/xpcshell/test_json.js b/remote/marionette/test/xpcshell/test_json.js index 6e07733697f4..b06cbcfa95a0 100644 --- a/remote/marionette/test/xpcshell/test_json.js +++ b/remote/marionette/test/xpcshell/test_json.js @@ -4,7 +4,7 @@ const { json } = ChromeUtils.importESModule( const { NodeCache } = ChromeUtils.importESModule( "chrome://remote/content/shared/webdriver/NodeCache.sys.mjs" ); -const { ShadowRoot, WebElement, WebReference } = ChromeUtils.importESModule( +const { WebElement, WebReference } = ChromeUtils.importESModule( "chrome://remote/content/marionette/element.sys.mjs" ); @@ -55,19 +55,7 @@ add_test(function test_clone_generalTypes() { run_next_test(); }); -add_test(function test_clone_ShadowRoot() { - const { nodeCache, shadowRoot } = setupTest(); - - const shadowRootRef = nodeCache.getOrCreateNodeReference(shadowRoot); - deepEqual( - json.clone(shadowRoot, nodeCache), - WebReference.from(shadowRoot, shadowRootRef).toJSON() - ); - - run_next_test(); -}); - -add_test(function test_clone_WebElement() { +add_test(function test_clone_WebElements() { const { htmlEl, nodeCache, svgEl } = setupTest(); const htmlElRef = nodeCache.getOrCreateNodeReference(htmlEl); @@ -196,31 +184,7 @@ add_test(function test_deserialize_generalTypes() { run_next_test(); }); -add_test(function test_deserialize_ShadowRoot() { - const { browser, nodeCache, shadowRoot } = setupTest(); - const win = browser.document.ownerGlobal; - - // Fails to resolve for unknown elements - const unknownShadowRootId = { [ShadowRoot.Identifier]: "foo" }; - Assert.throws(() => { - json.deserialize(unknownShadowRootId, nodeCache, win); - }, /NoSuchShadowRootError/); - - const shadowRootRef = nodeCache.getOrCreateNodeReference(shadowRoot); - const shadowRootEl = { [ShadowRoot.Identifier]: shadowRootRef }; - - // Fails to resolve for missing window reference - Assert.throws(() => json.deserialize(shadowRootEl, nodeCache), /TypeError/); - - // Previously seen element is associated with original web element reference - const root = json.deserialize(shadowRootEl, nodeCache, win); - deepEqual(root, shadowRoot); - deepEqual(root, nodeCache.getNode(browser.browsingContext, shadowRootRef)); - - run_next_test(); -}); - -add_test(function test_deserialize_WebElement() { +add_test(function test_deserialize_WebElements() { const { browser, htmlEl, nodeCache } = setupTest(); const win = browser.document.ownerGlobal; @@ -232,7 +196,6 @@ add_test(function test_deserialize_WebElement() { const htmlElRef = nodeCache.getOrCreateNodeReference(htmlEl); const htmlWebEl = { [WebElement.Identifier]: htmlElRef }; - // Fails to resolve for missing window reference Assert.throws(() => json.deserialize(htmlWebEl, nodeCache), /TypeError/); diff --git a/remote/shared/webdriver/NodeCache.sys.mjs b/remote/shared/webdriver/NodeCache.sys.mjs index c0bd5378dd98..c89bc1829aa9 100644 --- a/remote/shared/webdriver/NodeCache.sys.mjs +++ b/remote/shared/webdriver/NodeCache.sys.mjs @@ -16,7 +16,6 @@ const ELEMENT_NODE = 1; /** * The class provides a mapping between DOM nodes and a unique node references. - * Supported types of nodes are Element and ShadowRoot. */ export class NodeCache { #nodeIdMap; @@ -42,22 +41,16 @@ export class NodeCache { } /** - * Get or if not yet existent create a unique reference for an Element or - * ShadowRoot node. + * Get or if not yet existent create a unique reference for a DOM node. * * @param {Node} node - * The node to be added. + * The DOM node to be added. * * @return {string} * The unique node reference for the DOM node. */ getOrCreateNodeReference(node) { - if ( - !node || - ![DOCUMENT_FRAGMENT_NODE, ELEMENT_NODE].includes(node.nodeType) || - (node.nodeType === DOCUMENT_FRAGMENT_NODE && - node.containingShadowRoot !== node) - ) { + if (![DOCUMENT_FRAGMENT_NODE, ELEMENT_NODE].includes(node?.nodeType)) { throw new TypeError(`Failed to create node reference for ${node}`); } diff --git a/remote/shared/webdriver/test/xpcshell/test_NodeCache.js b/remote/shared/webdriver/test/xpcshell/test_NodeCache.js index f6a2bac06433..e186313c77e2 100644 --- a/remote/shared/webdriver/test/xpcshell/test_NodeCache.js +++ b/remote/shared/webdriver/test/xpcshell/test_NodeCache.js @@ -26,7 +26,7 @@ function setupTest() { } add_test(function getOrCreateNodeReference_invalid() { - const { browser, htmlEl, nodeCache } = setupTest(); + const { htmlEl, nodeCache } = setupTest(); const invalidValues = [ null, @@ -37,7 +37,6 @@ add_test(function getOrCreateNodeReference_invalid() { [], {}, htmlEl.attributes[0], - browser.document.createDocumentFragment(), ]; for (const value of invalidValues) { diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a74686972645f7061727479/fingerprint b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a74686972645f7061727479/fingerprint deleted file mode 100644 index 07e578c271d2..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a74686972645f7061727479/fingerprint +++ /dev/null @@ -1 +0,0 @@ -{"fullyTracked":false,"platform":"darwin","arch":"arm64","nodeVersion":"v16.19.0","command":"rollup --config rollup.third_party.config.js","extraArgs":[],"clean":false,"files":{"/Users/henrik/code/gecko/package-lock.json":"12d056a04f2c82f4cf2017c0f74c54bb455f33d48ca877901bd1f9e33ccac7c2","/Users/henrik/code/gecko/remote/test/puppeteer/package-lock.json":"8ca6d6b4f226876b554b60d7b2b4acd6c36bdcd1e22ec3908ea9bde5e6446a5f","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/chromium-bidi/index.d.ts":"22b9b5bf4b4591ee7baa067237293e303a2c265d373f694e8e964083acb8281e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/chromium-bidi/index.js":"22b9b5bf4b4591ee7baa067237293e303a2c265d373f694e8e964083acb8281e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/mitt/index.d.ts":"2b0be0130102c0fb4348caa82b670e86195cc59b4427cb070655bb34b47813a4","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/mitt/index.js":"2b0be0130102c0fb4348caa82b670e86195cc59b4427cb070655bb34b47813a4","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/tsconfig.cjs.tsbuildinfo":"c61aebff790cebe184f7e0c624f2e36db0ab9a3ca5f70de29341bb2611a4482e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/chromium-bidi/index.d.ts":"22b9b5bf4b4591ee7baa067237293e303a2c265d373f694e8e964083acb8281e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/chromium-bidi/index.js":"22b9b5bf4b4591ee7baa067237293e303a2c265d373f694e8e964083acb8281e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/mitt/index.d.ts":"2b0be0130102c0fb4348caa82b670e86195cc59b4427cb070655bb34b47813a4","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/mitt/index.js":"2b0be0130102c0fb4348caa82b670e86195cc59b4427cb070655bb34b47813a4","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/tsconfig.tsbuildinfo":"c61aebff790cebe184f7e0c624f2e36db0ab9a3ca5f70de29341bb2611a4482e"},"output":["lib/esm/third_party/**","lib/cjs/third_party/**","!.git/","!.hg/","!.svn/","!.wireit/","!.yarn/","!CVS/","!node_modules/"],"dependencies":{"[\"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core\",\"build:tsc\"]":"073b4e4f446f61d9e1b9f97470832f3ecdc2f45ef8e73a7c6286876da1388b62"},"env":{}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a74686972645f7061727479/lock b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a74686972645f7061727479/lock deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a74686972645f7061727479/manifest b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a74686972645f7061727479/manifest deleted file mode 100644 index a50e25aded06..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a74686972645f7061727479/manifest +++ /dev/null @@ -1 +0,0 @@ -{"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/chromium-bidi":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/chromium-bidi/index.d.ts":{"t":"f","m":1674768253585.4092,"s":748527},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/chromium-bidi/index.js":{"t":"f","m":1674768253216.283,"s":100337},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/mitt":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/mitt/index.d.ts":{"t":"f","m":1674768253591.5854,"s":1454},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/mitt/index.js":{"t":"f","m":1674768253224.2952,"s":350},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/tsconfig.cjs.tsbuildinfo":{"t":"f","m":1674768252513.1462,"s":36856},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/chromium-bidi":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/chromium-bidi/index.d.ts":{"t":"f","m":1674768253916.7559,"s":748527},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/chromium-bidi/index.js":{"t":"f","m":1674768253703.1082,"s":100255},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/mitt":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/mitt/index.d.ts":{"t":"f","m":1674768253922.042,"s":1454},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/mitt/index.js":{"t":"f","m":1674768253709.3767,"s":340},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/tsconfig.tsbuildinfo":{"t":"f","m":1674768251199.5554,"s":36856}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a747363/fingerprint b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a747363/fingerprint deleted file mode 100644 index 36227e43cd60..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a747363/fingerprint +++ /dev/null @@ -1 +0,0 @@ -{"fullyTracked":false,"platform":"darwin","arch":"arm64","nodeVersion":"v16.19.0","command":"tsc -b","extraArgs":[],"clean":"if-file-deleted","files":{"/Users/henrik/code/gecko/package-lock.json":"12d056a04f2c82f4cf2017c0f74c54bb455f33d48ca877901bd1f9e33ccac7c2","/Users/henrik/code/gecko/remote/test/puppeteer/package-lock.json":"8ca6d6b4f226876b554b60d7b2b4acd6c36bdcd1e22ec3908ea9bde5e6446a5f","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/api/api.ts":"529f1356ef5d99cd75987707ee023b7edbf883255726341f3a45b2bd1d4ebbc1","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/api/Browser.ts":"ad70b794ab5c3665e106f8af176e23762bb2649c677a31ebfd0f9dff47f14d9f","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/api/BrowserContext.ts":"d2bc5128bb165a2038052ca18149355163e635b704fa4d93a2adac3f56bfa02e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/api/Page.ts":"82d9960c42a2013b38e88861bf19dfceeb2d1c86773ae6f6bceaeab3309c7bab","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Accessibility.ts":"f99343d1c9e01213d060d7d2d43adc78390720e2cb3cdde724e2c0c43b5eb23b","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/AriaQueryHandler.ts":"bef1772c2ccd53c42f6709911845de74d091eb2d5d3b1daa71cc437894436095","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/bidi.ts":"12f8b31ec61ac9c1ebedd32a8b4bd7ef9042d9d18da587c57642d93b8649be87","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/BidiOverCDP.ts":"94a2db92a4295c0ccdaaa4dff641accacaa849b265956ac04a25c577f992f15d","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/Browser.ts":"da0b6d547884f5a1f6761780954e033578c5bf745dae66f8345170772a130a3c","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/BrowserContext.ts":"c2f08d382f10a6903fbf6c062cd46bb47b12739b56e2728865ae552173f895cd","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/Connection.ts":"9289394e2c71c13da9e4d3a82b78570ee14174f135701a76966244a4f07f150b","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/bidi/Page.ts":"4aa29c9ae2fbf4efda1c778568d1fbe8df01a7c0f7f8f17424e815c733843230","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Browser.ts":"b252ddec5c4188d3156fea4d1e3f714db559a3d0506da3f5bd2d09228a12dcf5","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/BrowserConnector.ts":"4a6d0414d634a9178ed2e170e8904616f2e75186178140e88e49eb1883f5f1b6","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/BrowserWebSocketTransport.ts":"3113ae172659dd01950d44f88e51a5bf7dda656ca3822f188b25bdf7c641adc3","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/ChromeTargetManager.ts":"dd376187d74ef67eac3ee1da735321a2845b90b2050b65980055098e1cf1a365","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/common.ts":"fd0751c9ae59f746e06da5966b7035491abebfa321d73c4d5523a2364417f166","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Configuration.ts":"11253b0fc67ef38817b31497a53c833bc902c2f99b54c081f36a133e5215cdaf","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Connection.ts":"14b5038cf1db5f4992e70bb8bbe898d58c0fe0923ae8e0ce74a1033a1880e6d1","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/ConnectionTransport.ts":"9a86f1ff968722c779bc83d6304db2ea078131b090836bd5a67d8688ecc49899","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/ConsoleMessage.ts":"8d023658707532fd91aef5257555865119af5a76dccd9ec7b0a3ceae7a95f066","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Coverage.ts":"dd4f9cf8c63756eb90e7a3242f13cbed2b73f29d62a9e70689b025d2b427662e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Debug.ts":"570a3152ecb8229afd885878bf8ed54be11f3ce0594d6a279078c2868415ec91","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Device.ts":"6cacfc70c74d499ae37688d94ee9d04ac199271641a24a9a260c5d80645d1254","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Dialog.ts":"031716e703b027edad6052314d41e50861d9e4d1f38583e66502baea676aaff7","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/ElementHandle.ts":"8a85f947d574245baefa776dccd598e8c4f96c0b4ed983da9b5bef20d17a6733","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/EmulationManager.ts":"b64edcc35b8056e980209a8667cd2a60b7fb3d5320f3c39babe5a56378e2f93f","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Errors.ts":"8ea350ff8688d3f5b5221bcc43fcca42c611de1f68f7680942f3f34ae66c9c2e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/EventEmitter.ts":"9541b5ff1760874bea59ffa4d9343f4822ae15ed2cfae054e5a3d0ba28a377da","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/ExecutionContext.ts":"8c562e9f4bbb86ec687832067cdd2339e6513cb8528dec84029617f8dae3efec","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/fetch.ts":"251eb9849d190c5721b17e6c29698a22b3b24698824d8e6e10706e25d2891a36","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/FileChooser.ts":"15d1a73993104f52b418cb5c645314f3c746e074efe6e2a158ad07d070f86db1","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/FirefoxTargetManager.ts":"05caff62ef5b6485500d8b2bcad07e734f7f835794c6c408abe55df0c15933b9","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Frame.ts":"91255ca80cfeaef4b17fcd33b511cadbe70ddc4c4d2941547cddd75e211f742a","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/FrameManager.ts":"4e364cc0014f27f107dc500e7bc4918c592c7344493ad7eaa9b74e792480e0ef","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/FrameTree.ts":"618ae39dd09f81ca23e0420fc103b2be1cd29dbda32ae082f1a2bd1a172affd9","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/HTTPRequest.ts":"049eb650fd7c0f88e14934184e4be6a7d6f25f84e4eca9156e161b218e314645","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/HTTPResponse.ts":"7a91ced57c84eb0be107ef5088784c886d903ded22c24a03287a50edd8e9db23","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Input.ts":"77223c118133ea66fefaef51ba4d4cd613e8ec1b68ca878b362cbe540b2e478c","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/IsolatedWorld.ts":"fff684177972823a13c9d71d87784189e816802c05c1331e1e0db1060a6f01c4","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/IsolatedWorlds.ts":"ce5fe1dbe86e955ceff4e5c0f79fd831ee668d038f69060a202f1597aff72898","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/JSHandle.ts":"f2f8eb19a0f931ca0566db8ddcd6be7bde67ca2160bc622217614d2b9c4cc813","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/LazyArg.ts":"de3156090decf482b350275ec3827785fca358b0d0485bd45df4069ae702093a","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/LifecycleWatcher.ts":"95f85cfc59bb0da2637c7b17406644a685ea90c0ab0a43a3f5a0de40860d36f9","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/NetworkEventManager.ts":"1693df5947ffd78db6286c19abeafe84e2a612fcde2f43280f85d25a80cfcea2","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/NetworkManager.ts":"f0576a498087f0faf48507e6f17ed53d2b9b5e40613916b2cc2a10ceadfe321a","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/NodeWebSocketTransport.ts":"9b83e2e050f79c200a5d0c2e80c0227ccc0ae24d66621d8d18f20dd985146108","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Page.ts":"0de767691c2f8dc64c85f87631aaaba3da905b9b6acab5a81ad093e678bd3da6","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/PDFOptions.ts":"d09be0c14f923ff4200bc2a1a983f4e2c3575beaa5dfd03d4b177363c8bb9bd3","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/PredefinedNetworkConditions.ts":"aaf5fa27b47d55f6522cb854b7a8f59bd5d6a0519083dc165c4eec2264c1c6d1","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Product.ts":"768b7353edc36db6db38abbce5263ad4cb96196b3003ff3bac6093707eb52040","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Puppeteer.ts":"258a8b4e07f2358a783118e15c62859fcf9313544b4cc47565fcc08a79ddd6f6","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/PuppeteerViewport.ts":"c9d7243eaede3d8b3276cbd251d8e42051adca776af60e9e8f04b87e8773d128","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/QueryHandler.ts":"2dfadfe37215a55527e476802952cbf322cac94fe950bdca8dd67a9ecd7fcb7d","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/SecurityDetails.ts":"2824331fbefd064991999667d8cdaff21a9ccc8a09bb5452875d72b105186202","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Target.ts":"2d114df7a30990ad325ce4ed05a17afdd518669a383b5807ec88adf4f167c3ea","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/TargetManager.ts":"4618224f0fdb62203643d7d4d2a608814ecec8ee872089c6a9938d3ca3a137ed","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/TaskQueue.ts":"e91e280158074dd122026951f35ec1898d7349bbbf5221a5d02965833e855bc6","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/TimeoutSettings.ts":"631071351b5407b947742ade46cf6a4483ee49d72008a92ffd566c415effc72e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/Tracing.ts":"98c35106f9c6ee2c2041abaeae97261c2795702ec7f2a6b4ca69491c960e8f18","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/types.ts":"722ffe41b6735fc71b1ed887b742b15d5917f1c47da1e533386f4888b43e1f23","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/USKeyboardLayout.ts":"f19ac9b4c00437e5cc0924ebbb743a1a91daf9085ccd330c82cf55615c4322b8","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/util.ts":"406b8d16bf887e63da28665ecce3e74683bf6c4f46de7e0c75d6dd7c02938e57","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/WaitTask.ts":"c297fbad92112c60f180c81b034e08cc3edd2a5c9fa3e77b35034c4d849735d8","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/common/WebWorker.ts":"9c0dd041554930c2c0ab02fd51fb463b92f5961caa8550c5965db7f5ad7126c9","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/environment.ts":"f7660a470117fd9ece7e396f1206f560d04e949ce792b50093569b8816088c8a","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/generated/injected.ts":"cb376bde427ad0265be8871abd36cb0cc206550687f06f915af36b7f707abd90","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/generated/version.ts":"738328baef5f022ff15bb12867972e47f6507056e1cc97ca94052d53a20595a9","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/injected/injected.ts":"c7f3383992175e076d72f854ccc541b5775d947e56cab7d3490d7edb698b5003","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/injected/PierceQuerySelector.ts":"f89b38b05bc20d7366f56fecffb0e7c0325c92dd70f8c5e0d97b1b443ba36573","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/injected/Poller.ts":"63d24fddcf133de0fd7c4da0674db297a9864640f31c8e8e16706133bdaf4266","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/injected/TextContent.ts":"f96f61db99da0376f35ab656ea577b1318843f03fc3fa821cba4753ef08daa6d","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/injected/TextQuerySelector.ts":"104e485568735febb167ac23cec28961eea387a313f132c90dff4d0a240a74c1","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/injected/util.ts":"9a45c81cb158b64637bb6e69daa16248b5f3b287ee9403364d5f0c18f529350e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/injected/XPathQuerySelector.ts":"91be90dec639e4d6070ec08436d3a3abad990b5064c6d8c558b2cb9bf4f77517","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/BrowserFetcher.ts":"e034a02f79c1feaf17d043f42b1d245ee1b29fa366ed1a261a5442ae5f79998e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/BrowserRunner.ts":"4274e767a7f42a175e653f912905e15894cd995609dc04116e71a4a8fd327b7c","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/ChromeLauncher.ts":"f151c2d614b0098a57d61ee5669f70dd677024745aad8328ec09d0b5627ef3f1","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/FirefoxLauncher.ts":"082a53bb65b2fb5f47175ea01fe9ebd0403858a3c2d43d8e8823f580e6e01c54","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/LaunchOptions.ts":"d1e1d884871a2cf80ba50b848f3a1d14dfa5ade94c861b678c0bb3860fb9a479","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/node.ts":"a9486ad85b0dd23a45d2864697cbc9a43c70d4b8c2aaa6142aeb3247ded0fa44","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/PipeTransport.ts":"442be3d9cadf29eeb5f377d358ea16f19d7959a7387092c53d371df9ec7d0572","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/ProductLauncher.ts":"bb87676749cbee0045daa8b57c28fd1c9b588398c1dd98267af496be77d8517c","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/node/PuppeteerNode.ts":"44c8a3f3b2d21609ac471e2988e12df54c95b734e11366aec9185ae5ccfa4087","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/puppeteer-core.ts":"d1172ba3d309aa0c8d21a38aa2af98ef9b8031094a5fe3436d63079827df32f2","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/revisions.ts":"767e761649308af35c744017fc2aea2dd7ffe9cf9f209a577c2302ec1fb37162","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/templates/injected.ts.tmpl":"dbd1ff3070c2f98f239b394837e70b74941ea25c0b766182c7ade6f13aad2303","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/templates/version.ts.tmpl":"a5f6d16aeb816573124feeebf87980c52fd0b1505fde97da1d36fa2b352ba363","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/tsconfig.cjs.json":"4b33e1968953308f0974621812833579f1a2217fe7e5cce0e0353d9267274de8","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/tsconfig.esm.json":"a371725438844bb77c8c8202765b7aa17da5670e62425509fbbaca88eb497604","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/util/assert.ts":"eff936cca1a416172c92ccbead0f106dbb84ed35c9e3be6d9e0aaa784b03f64f","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/util/DebuggableDeferredPromise.ts":"7ed9dad41e678ce5b238336ded843e78af908b0f8c34ccfda13f78d4527128bb","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/util/DeferredPromise.ts":"c0007d4deb894f2044e390bcbac2a369cfb1b6b32267a030fce1bb926e67090e","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/util/ErrorLike.ts":"16b1a770ed2c4026a039fbfcdb086af55c20adcaa7325ba5d06f9a2920779742","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/util/util.ts":"cf140f3d0c017c98b9ad74e9e0dec14ac4c7d88e7aae85a07d7cd273a161d028","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/third_party/chromium-bidi/index.ts":"75bd7e55d7d218ba6cca4b6ecaee52079143ce874b9db1766b025a3fe07d11bd","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/third_party/mitt/index.ts":"31aa8843ca2d6d8f8ed9dffd52c14e96c76a483c9183f525b9722358ba152897","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/third_party/tsconfig.cjs.json":"137795390da71c3bd829bce45534ef64449b4c3b0f1cbcad3ae182d359782c73","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/third_party/tsconfig.json":"0439f9a9f1e87668829ba1474821f7fa33e5c140f7d9c92a29d0fd96688aa863"},"output":["lib/esm/**","lib/cjs/**","!.git/","!.hg/","!.svn/","!.wireit/","!.yarn/","!CVS/","!node_modules/"],"dependencies":{"[\"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core\",\"clean:third_party\"]":"65a181d5febc99bbe7353b73a9d0cfbc9f49d9d3103b0bf60447e5de920761d7","[\"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core\",\"generate:sources\"]":"0e73ce09f85cf259dd27b69d35aa57f30c8da0a2b89962826525a977cd48331b"},"env":{}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a747363/lock b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a747363/lock deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a747363/manifest b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a747363/manifest deleted file mode 100644 index 01364e10ef06..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a747363/manifest +++ /dev/null @@ -1 +0,0 @@ -{"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/api.d.ts":{"t":"f","m":1674768234194.9868,"s":744},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/api.d.ts.map":{"t":"f","m":1674768234194.8994,"s":199},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/api.js":{"t":"f","m":1674768234194.7988,"s":1553},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/api.js.map":{"t":"f","m":1674768234194.7122,"s":187},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.d.ts":{"t":"f","m":1674768234194.6218,"s":10880},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.d.ts.map":{"t":"f","m":1674768234194.5376,"s":2723},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.js":{"t":"f","m":1674768234194.4473,"s":7462},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.js.map":{"t":"f","m":1674768234194.3472,"s":2527},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.d.ts":{"t":"f","m":1674768234179.187,"s":5190},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.d.ts.map":{"t":"f","m":1674768234179.1038,"s":1082},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.js":{"t":"f","m":1674768234179.0261,"s":4196},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.js.map":{"t":"f","m":1674768234178.933,"s":1024},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Page.d.ts":{"t":"f","m":1674768234194.2488,"s":78625},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Page.d.ts.map":{"t":"f","m":1674768234194.1,"s":14511},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Page.js":{"t":"f","m":1674768234193.9568,"s":14897},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Page.js.map":{"t":"f","m":1674768234193.679,"s":7752},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.d.ts":{"t":"f","m":1674768234193.0498,"s":5370},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.d.ts.map":{"t":"f","m":1674768234192.857,"s":1654},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.js":{"t":"f","m":1674768234192.7488,"s":17774},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.js.map":{"t":"f","m":1674768234192.449,"s":9258},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.d.ts":{"t":"f","m":1674768234188.9197,"s":805},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.d.ts.map":{"t":"f","m":1674768234188.819,"s":263},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js":{"t":"f","m":1674768234188.7202,"s":5012},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js.map":{"t":"f","m":1674768234188.6309,"s":3906},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/bidi.d.ts":{"t":"f","m":1674768234207.6692,"s":812},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/bidi.d.ts.map":{"t":"f","m":1674768234207.5938,"s":258},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/bidi.js":{"t":"f","m":1674768234207.5217,"s":1657},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/bidi.js.map":{"t":"f","m":1674768234207.4556,"s":226},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/BidiOverCDP.d.ts":{"t":"f","m":1674768234207.391,"s":295},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/BidiOverCDP.d.ts.map":{"t":"f","m":1674768234207.3242,"s":337},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/BidiOverCDP.js":{"t":"f","m":1674768234207.249,"s":6584},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/BidiOverCDP.js.map":{"t":"f","m":1674768234207.1597,"s":3099},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Browser.d.ts":{"t":"f","m":1674768234207.0837,"s":1528},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Browser.d.ts.map":{"t":"f","m":1674768234207.007,"s":784},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Browser.js":{"t":"f","m":1674768234206.9243,"s":3627},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Browser.js.map":{"t":"f","m":1674768234206.8135,"s":1100},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/BrowserContext.d.ts":{"t":"f","m":1674768234206.7349,"s":1050},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/BrowserContext.d.ts.map":{"t":"f","m":1674768234206.6548,"s":459},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/BrowserContext.js":{"t":"f","m":1674768234206.5176,"s":2679},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/BrowserContext.js.map":{"t":"f","m":1674768234206.398,"s":615},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Connection.d.ts":{"t":"f","m":1674768234205.9756,"s":1223},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Connection.d.ts.map":{"t":"f","m":1674768234205.8994,"s":615},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Connection.js":{"t":"f","m":1674768234205.8032,"s":6658},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Connection.js.map":{"t":"f","m":1674768234205.638,"s":3132},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Page.d.ts":{"t":"f","m":1674768234206.3142,"s":1152},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Page.d.ts.map":{"t":"f","m":1674768234206.2327,"s":622},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Page.js":{"t":"f","m":1674768234206.152,"s":3037},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/bidi/Page.js.map":{"t":"f","m":1674768234206.0603,"s":883},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Browser.d.ts":{"t":"f","m":1674768234200.298,"s":10236},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Browser.d.ts.map":{"t":"f","m":1674768234200.1912,"s":3166},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Browser.js":{"t":"f","m":1674768234200.0896,"s":28474},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Browser.js.map":{"t":"f","m":1674768234199.8547,"s":11536},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.d.ts":{"t":"f","m":1674768234202.8425,"s":1993},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.d.ts.map":{"t":"f","m":1674768234202.7617,"s":774},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.js":{"t":"f","m":1674768234202.6733,"s":5171},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.js.map":{"t":"f","m":1674768234202.5498,"s":2635},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.d.ts":{"t":"f","m":1674768234202.4453,"s":1074},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.d.ts.map":{"t":"f","m":1674768234202.2678,"s":518},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.js":{"t":"f","m":1674768234202.1543,"s":2771},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.js.map":{"t":"f","m":1674768234202.0322,"s":1243},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ChromeTargetManager.d.ts":{"t":"f","m":1674768234195.5784,"s":1675},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ChromeTargetManager.d.ts.map":{"t":"f","m":1674768234195.4783,"s":812},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ChromeTargetManager.js":{"t":"f","m":1674768234195.3545,"s":23852},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ChromeTargetManager.js.map":{"t":"f","m":1674768234195.0823,"s":9707},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/common.d.ts":{"t":"f","m":1674768234204.4714,"s":2496},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/common.d.ts.map":{"t":"f","m":1674768234204.3806,"s":1326},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/common.js":{"t":"f","m":1674768234204.2908,"s":4205},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/common.js.map":{"t":"f","m":1674768234204.1646,"s":846},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Configuration.d.ts":{"t":"f","m":1674768234203.6467,"s":4134},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Configuration.d.ts.map":{"t":"f","m":1674768234203.558,"s":825},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Configuration.js":{"t":"f","m":1674768234203.4585,"s":735},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Configuration.js.map":{"t":"f","m":1674768234203.3196,"s":157},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Connection.d.ts":{"t":"f","m":1674768234166.4434,"s":4937},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Connection.d.ts.map":{"t":"f","m":1674768234166.3733,"s":2892},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Connection.js":{"t":"f","m":1674768234166.2666,"s":17439},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Connection.js.map":{"t":"f","m":1674768234166.0247,"s":9065},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.d.ts":{"t":"f","m":1674768234165.6663,"s":847},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.d.ts.map":{"t":"f","m":1674768234165.594,"s":372},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.js":{"t":"f","m":1674768234165.5251,"s":741},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.js.map":{"t":"f","m":1674768234165.4568,"s":169},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.d.ts":{"t":"f","m":1674768234178.2695,"s":2250},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map":{"t":"f","m":1674768234178.1812,"s":919},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.js":{"t":"f","m":1674768234178.1016,"s":3821},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.js.map":{"t":"f","m":1674768234177.9958,"s":852},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Coverage.d.ts":{"t":"f","m":1674768234181.1274,"s":5928},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Coverage.d.ts.map":{"t":"f","m":1674768234181.039,"s":1775},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Coverage.js":{"t":"f","m":1674768234180.944,"s":19759},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Coverage.js.map":{"t":"f","m":1674768234180.775,"s":9294},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Debug.d.ts":{"t":"f","m":1674768234165.3774,"s":2021},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Debug.d.ts.map":{"t":"f","m":1674768234165.309,"s":496},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Debug.js":{"t":"f","m":1674768234165.2427,"s":4616},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Debug.js.map":{"t":"f","m":1674768234165.1682,"s":1477},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Device.d.ts":{"t":"f","m":1674768234193.5715,"s":6202},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Device.d.ts.map":{"t":"f","m":1674768234193.4448,"s":387},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Device.js":{"t":"f","m":1674768234193.3386,"s":48096},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Device.js.map":{"t":"f","m":1674768234193.157,"s":23335},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Dialog.d.ts":{"t":"f","m":1674768234181.5176,"s":2181},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Dialog.d.ts.map":{"t":"f","m":1674768234181.4202,"s":635},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Dialog.js":{"t":"f","m":1674768234181.312,"s":4911},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Dialog.js.map":{"t":"f","m":1674768234181.209,"s":1243},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ElementHandle.d.ts":{"t":"f","m":1674768234192.3203,"s":17313},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ElementHandle.d.ts.map":{"t":"f","m":1674768234192.2202,"s":4680},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ElementHandle.js":{"t":"f","m":1674768234192.114,"s":39565},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ElementHandle.js.map":{"t":"f","m":1674768234191.9163,"s":19193},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.d.ts":{"t":"f","m":1674768234182.0537,"s":933},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.d.ts.map":{"t":"f","m":1674768234181.9663,"s":364},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.js":{"t":"f","m":1674768234181.7402,"s":3153},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.js.map":{"t":"f","m":1674768234181.6274,"s":1210},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Errors.d.ts":{"t":"f","m":1674768234165.941,"s":2469},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Errors.d.ts.map":{"t":"f","m":1674768234165.8762,"s":702},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Errors.js":{"t":"f","m":1674768234165.8118,"s":4338},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Errors.js.map":{"t":"f","m":1674768234165.7378,"s":995},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.d.ts":{"t":"f","m":1674768234164.7512,"s":4175},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.d.ts.map":{"t":"f","m":1674768234164.6672,"s":1643},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js":{"t":"f","m":1674768234164.5996,"s":4472},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js.map":{"t":"f","m":1674768234164.4812,"s":1721},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.d.ts":{"t":"f","m":1674768234191.315,"s":5605},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.d.ts.map":{"t":"f","m":1674768234191.2224,"s":1243},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js":{"t":"f","m":1674768234191.1433,"s":11340},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js.map":{"t":"f","m":1674768234191.0337,"s":4905},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/fetch.d.ts":{"t":"f","m":1674768234200.7036,"s":822},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/fetch.d.ts.map":{"t":"f","m":1674768234200.612,"s":201},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/fetch.js":{"t":"f","m":1674768234200.5095,"s":2067},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/fetch.js.map":{"t":"f","m":1674768234200.4006,"s":325},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.d.ts":{"t":"f","m":1674768234182.4238,"s":2230},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.d.ts.map":{"t":"f","m":1674768234182.3313,"s":528},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.js":{"t":"f","m":1674768234182.2314,"s":4399},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.js.map":{"t":"f","m":1674768234182.1382,"s":863},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FirefoxTargetManager.d.ts":{"t":"f","m":1674768234196.1475,"s":2172},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FirefoxTargetManager.d.ts.map":{"t":"f","m":1674768234195.9565,"s":915},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FirefoxTargetManager.js":{"t":"f","m":1674768234195.802,"s":15311},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FirefoxTargetManager.js.map":{"t":"f","m":1674768234195.6719,"s":5733},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Frame.d.ts":{"t":"f","m":1674768234190.111,"s":23127},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Frame.d.ts.map":{"t":"f","m":1674768234190.0146,"s":6378},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Frame.js":{"t":"f","m":1674768234189.8914,"s":30982},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Frame.js.map":{"t":"f","m":1674768234189.6807,"s":11766},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.d.ts":{"t":"f","m":1674768234185.069,"s":2297},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.d.ts.map":{"t":"f","m":1674768234184.9963,"s":1164},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js":{"t":"f","m":1674768234184.9175,"s":19428},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js.map":{"t":"f","m":1674768234184.801,"s":10861},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FrameTree.d.ts":{"t":"f","m":1674768234170.4844,"s":1473},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FrameTree.d.ts.map":{"t":"f","m":1674768234170.413,"s":590},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FrameTree.js":{"t":"f","m":1674768234170.3252,"s":5699},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/FrameTree.js.map":{"t":"f","m":1674768234167.4539,"s":2605},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts":{"t":"f","m":1674768234176.0747,"s":12046},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts.map":{"t":"f","m":1674768234175.9663,"s":3490},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js":{"t":"f","m":1674768234175.8303,"s":28382},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js.map":{"t":"f","m":1674768234175.3384,"s":11764},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts":{"t":"f","m":1674768234175.0762,"s":3865},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts.map":{"t":"f","m":1674768234174.9795,"s":1606},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js":{"t":"f","m":1674768234174.8755,"s":10613},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js.map":{"t":"f","m":1674768234174.7588,"s":4124},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Input.d.ts":{"t":"f","m":1674768234172.3032,"s":12949},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Input.d.ts.map":{"t":"f","m":1674768234172.181,"s":2859},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Input.js":{"t":"f","m":1674768234172.0266,"s":23916},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Input.js.map":{"t":"f","m":1674768234171.7488,"s":9805},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/IsolatedWorld.d.ts":{"t":"f","m":1674768234190.9443,"s":5691},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/IsolatedWorld.d.ts.map":{"t":"f","m":1674768234190.8528,"s":4850},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/IsolatedWorld.js":{"t":"f","m":1674768234190.7603,"s":20540},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/IsolatedWorld.js.map":{"t":"f","m":1674768234190.6143,"s":11809},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/IsolatedWorlds.d.ts":{"t":"f","m":1674768234171.0613,"s":1095},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/IsolatedWorlds.d.ts.map":{"t":"f","m":1674768234170.961,"s":251},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/IsolatedWorlds.js":{"t":"f","m":1674768234170.8608,"s":1218},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/IsolatedWorlds.js.map":{"t":"f","m":1674768234170.6946,"s":282},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.d.ts":{"t":"f","m":1674768234173.835,"s":6385},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.d.ts.map":{"t":"f","m":1674768234173.7258,"s":2762},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.js":{"t":"f","m":1674768234173.6296,"s":8055},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.js.map":{"t":"f","m":1674768234173.4453,"s":2678},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/LazyArg.d.ts":{"t":"f","m":1674768234172.7957,"s":788},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/LazyArg.d.ts.map":{"t":"f","m":1674768234172.6753,"s":267},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/LazyArg.js":{"t":"f","m":1674768234172.556,"s":2172},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/LazyArg.js.map":{"t":"f","m":1674768234172.4434,"s":348},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts":{"t":"f","m":1674768234185.4036,"s":1626},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts.map":{"t":"f","m":1674768234185.3345,"s":903},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js":{"t":"f","m":1674768234185.2612,"s":17586},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js.map":{"t":"f","m":1674768234185.152,"s":6387},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NetworkEventManager.d.ts":{"t":"f","m":1674768234176.763,"s":2870},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NetworkEventManager.d.ts.map":{"t":"f","m":1674768234176.502,"s":1789},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NetworkEventManager.js":{"t":"f","m":1674768234176.4072,"s":8534},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NetworkEventManager.js.map":{"t":"f","m":1674768234176.246,"s":2873},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts":{"t":"f","m":1674768234177.893,"s":2612},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts.map":{"t":"f","m":1674768234177.781,"s":1473},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js":{"t":"f","m":1674768234177.6663,"s":29440},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js.map":{"t":"f","m":1674768234177.2788,"s":13505},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NodeWebSocketTransport.d.ts":{"t":"f","m":1674768234201.9246,"s":1155},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NodeWebSocketTransport.d.ts.map":{"t":"f","m":1674768234201.8306,"s":605},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NodeWebSocketTransport.js":{"t":"f","m":1674768234201.7222,"s":3901},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/NodeWebSocketTransport.js.map":{"t":"f","m":1674768234201.5552,"s":1481},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Page.d.ts":{"t":"f","m":1674768234184.3804,"s":9409},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Page.d.ts.map":{"t":"f","m":1674768234184.296,"s":8913},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Page.js":{"t":"f","m":1674768234184.1946,"s":56829},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Page.js.map":{"t":"f","m":1674768234183.93,"s":37364},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.d.ts":{"t":"f","m":1674768234182.8118,"s":4530},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.d.ts.map":{"t":"f","m":1674768234182.7266,"s":1524},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.js":{"t":"f","m":1674768234182.6318,"s":1247},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.js.map":{"t":"f","m":1674768234182.5173,"s":867},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PredefinedNetworkConditions.d.ts":{"t":"f","m":1674768234204.0474,"s":1601},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PredefinedNetworkConditions.d.ts.map":{"t":"f","m":1674768234203.9463,"s":345},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PredefinedNetworkConditions.js":{"t":"f","m":1674768234203.838,"s":1842},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PredefinedNetworkConditions.js.map":{"t":"f","m":1674768234203.7434,"s":719},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Product.d.ts":{"t":"f","m":1674768234203.211,"s":740},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Product.d.ts.map":{"t":"f","m":1674768234203.1216,"s":203},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Product.js":{"t":"f","m":1674768234203.0293,"s":729},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Product.js.map":{"t":"f","m":1674768234202.928,"s":145},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.d.ts":{"t":"f","m":1674768234201.073,"s":3501},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.d.ts.map":{"t":"f","m":1674768234200.9875,"s":1098},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.js":{"t":"f","m":1674768234200.904,"s":2704},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.js.map":{"t":"f","m":1674768234200.8115,"s":883},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.d.ts":{"t":"f","m":1674768234179.8672,"s":1496},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.d.ts.map":{"t":"f","m":1674768234179.7542,"s":452},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.js":{"t":"f","m":1674768234179.6167,"s":122},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.js.map":{"t":"f","m":1674768234179.2805,"s":142},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.d.ts":{"t":"f","m":1674768234189.4932,"s":3523},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.d.ts.map":{"t":"f","m":1674768234189.338,"s":1715},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.js":{"t":"f","m":1674768234189.2275,"s":7690},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.js.map":{"t":"f","m":1674768234189.0984,"s":5236},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.d.ts":{"t":"f","m":1674768234174.662,"s":1886},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.d.ts.map":{"t":"f","m":1674768234174.5747,"s":496},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.js":{"t":"f","m":1674768234174.4834,"s":4787},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.js.map":{"t":"f","m":1674768234174.378,"s":1017},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Target.d.ts":{"t":"f","m":1674768234184.718,"s":3685},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Target.d.ts.map":{"t":"f","m":1674768234184.6475,"s":1806},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Target.js":{"t":"f","m":1674768234184.5667,"s":10201},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Target.js.map":{"t":"f","m":1674768234184.4683,"s":4384},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TargetManager.d.ts":{"t":"f","m":1674768234180.658,"s":2092},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TargetManager.d.ts.map":{"t":"f","m":1674768234180.559,"s":980},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TargetManager.js":{"t":"f","m":1674768234180.4639,"s":735},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TargetManager.js.map":{"t":"f","m":1674768234180.3594,"s":157},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.d.ts":{"t":"f","m":1674768234180.267,"s":798},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.d.ts.map":{"t":"f","m":1674768234180.1816,"s":271},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.js":{"t":"f","m":1674768234180.0896,"s":2425},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.js.map":{"t":"f","m":1674768234179.9783,"s":555},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.d.ts":{"t":"f","m":1674768234183.1926,"s":915},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.d.ts.map":{"t":"f","m":1674768234183.1072,"s":327},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.js":{"t":"f","m":1674768234183.0112,"s":3457},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.js.map":{"t":"f","m":1674768234182.9097,"s":847},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Tracing.d.ts":{"t":"f","m":1674768234183.5977,"s":1229},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Tracing.d.ts.map":{"t":"f","m":1674768234183.511,"s":514},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Tracing.js":{"t":"f","m":1674768234183.414,"s":5924},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/Tracing.js.map":{"t":"f","m":1674768234183.3013,"s":2243},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/types.d.ts":{"t":"f","m":1674768234173.1943,"s":4576},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/types.d.ts.map":{"t":"f","m":1674768234173.1013,"s":3935},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/types.js":{"t":"f","m":1674768234173.0015,"s":727},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/types.js.map":{"t":"f","m":1674768234172.9058,"s":141},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.d.ts":{"t":"f","m":1674768234171.569,"s":3533},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.d.ts.map":{"t":"f","m":1674768234171.4575,"s":3145},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.js":{"t":"f","m":1674768234171.3518,"s":17558},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.js.map":{"t":"f","m":1674768234171.1885,"s":22945},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/util.d.ts":{"t":"f","m":1674768234174.2869,"s":3736},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/util.d.ts.map":{"t":"f","m":1674768234174.1975,"s":2790},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/util.js":{"t":"f","m":1674768234174.1077,"s":12825},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/util.js.map":{"t":"f","m":1674768234173.9395,"s":8813},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/WaitTask.d.ts":{"t":"f","m":1674768234190.5198,"s":1709},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/WaitTask.d.ts.map":{"t":"f","m":1674768234190.4465,"s":1183},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/WaitTask.js":{"t":"f","m":1674768234190.352,"s":10775},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/WaitTask.js.map":{"t":"f","m":1674768234190.209,"s":5363},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.d.ts":{"t":"f","m":1674768234178.638,"s":4170},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.d.ts.map":{"t":"f","m":1674768234178.5566,"s":1430},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.js":{"t":"f","m":1674768234178.4585,"s":6132},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.js.map":{"t":"f","m":1674768234178.36,"s":1822},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/environment.d.ts":{"t":"f","m":1674768234164.3367,"s":799},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/environment.d.ts.map":{"t":"f","m":1674768234164.2656,"s":231},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/environment.js":{"t":"f","m":1674768234164.1833,"s":1151},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/environment.js.map":{"t":"f","m":1674768234164.0417,"s":443},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated/injected.d.ts":{"t":"f","m":1674768234166.7957,"s":13968},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated/injected.d.ts.map":{"t":"f","m":1674768234166.7278,"s":177},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated/injected.js":{"t":"f","m":1674768234166.6567,"s":14055},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated/injected.js.map":{"t":"f","m":1674768234166.5823,"s":178},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated/version.d.ts":{"t":"f","m":1674768234201.4504,"s":106},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated/version.d.ts.map":{"t":"f","m":1674768234201.3481,"s":167},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated/version.js":{"t":"f","m":1674768234201.25,"s":201},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/generated/version.js.map":{"t":"f","m":1674768234201.152,"s":168},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/injected.d.ts":{"t":"f","m":1674768234188.5435,"s":1897},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/injected.d.ts.map":{"t":"f","m":1674768234188.4783,"s":390},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/injected.js":{"t":"f","m":1674768234188.411,"s":2761},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/injected.js.map":{"t":"f","m":1674768234188.3354,"s":573},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/PierceQuerySelector.d.ts":{"t":"f","m":1674768234187.8477,"s":276},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/PierceQuerySelector.d.ts.map":{"t":"f","m":1674768234187.7332,"s":304},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/PierceQuerySelector.js":{"t":"f","m":1674768234187.6372,"s":2454},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/PierceQuerySelector.js.map":{"t":"f","m":1674768234187.5398,"s":1767},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/Poller.d.ts":{"t":"f","m":1674768234185.8992,"s":1462},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/Poller.d.ts.map":{"t":"f","m":1674768234185.8108,"s":1031},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/Poller.js":{"t":"f","m":1674768234185.7258,"s":8388},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/Poller.js.map":{"t":"f","m":1674768234185.6257,"s":3765},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/TextContent.d.ts":{"t":"f","m":1674768234186.5498,"s":1191},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/TextContent.d.ts.map":{"t":"f","m":1674768234186.4478,"s":388},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/TextContent.js":{"t":"f","m":1674768234186.3213,"s":4329},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/TextContent.js.map":{"t":"f","m":1674768234186.1162,"s":3069},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/TextQuerySelector.d.ts":{"t":"f","m":1674768234186.9854,"s":1035},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/TextQuerySelector.d.ts.map":{"t":"f","m":1674768234186.8323,"s":327},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/TextQuerySelector.js":{"t":"f","m":1674768234186.7463,"s":2731},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/TextQuerySelector.js.map":{"t":"f","m":1674768234186.6477,"s":1585},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/util.d.ts":{"t":"f","m":1674768234188.26,"s":926},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/util.d.ts.map":{"t":"f","m":1674768234188.1768,"s":306},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/util.js":{"t":"f","m":1674768234188.0918,"s":1916},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/util.js.map":{"t":"f","m":1674768234187.969,"s":1316},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/XPathQuerySelector.d.ts":{"t":"f","m":1674768234187.3818,"s":881},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/XPathQuerySelector.d.ts.map":{"t":"f","m":1674768234187.2837,"s":323},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/XPathQuerySelector.js":{"t":"f","m":1674768234187.1968,"s":1514},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/injected/XPathQuerySelector.js.map":{"t":"f","m":1674768234187.0872,"s":883},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.d.ts":{"t":"f","m":1674768234205.41,"s":5315},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.d.ts.map":{"t":"f","m":1674768234205.1802,"s":1348},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.js":{"t":"f","m":1674768234205.0598,"s":24416},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.js.map":{"t":"f","m":1674768234204.847,"s":13247},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts":{"t":"f","m":1674768234209.1748,"s":1665},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts.map":{"t":"f","m":1674768234209.0388,"s":1013},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js":{"t":"f","m":1674768234208.9077,"s":18030},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js.map":{"t":"f","m":1674768234208.6226,"s":8609},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/ChromeLauncher.d.ts":{"t":"f","m":1674768234212.4736,"s":651},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map":{"t":"f","m":1674768234212.3574,"s":560},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/ChromeLauncher.js":{"t":"f","m":1674768234212.2385,"s":12232},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/ChromeLauncher.js.map":{"t":"f","m":1674768234212.1008,"s":6366},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/FirefoxLauncher.d.ts":{"t":"f","m":1674768234210.2395,"s":1374},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/FirefoxLauncher.d.ts.map":{"t":"f","m":1674768234210.0986,"s":881},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/FirefoxLauncher.js":{"t":"f","m":1674768234209.913,"s":19076},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/FirefoxLauncher.js.map":{"t":"f","m":1674768234209.7532,"s":9207},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.d.ts":{"t":"f","m":1674768234208.1294,"s":4367},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map":{"t":"f","m":1674768234208.0325,"s":1353},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.js":{"t":"f","m":1674768234207.9368,"s":735},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.js.map":{"t":"f","m":1674768234207.8445,"s":155},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/node.d.ts":{"t":"f","m":1674768234213.0156,"s":945},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/node.d.ts.map":{"t":"f","m":1674768234212.898,"s":321},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/node.js":{"t":"f","m":1674768234212.8003,"s":1844},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/node.js.map":{"t":"f","m":1674768234212.5625,"s":255},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.d.ts":{"t":"f","m":1674768234208.5354,"s":1071},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.d.ts.map":{"t":"f","m":1674768234208.4463,"s":466},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.js":{"t":"f","m":1674768234208.3474,"s":4381},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.js.map":{"t":"f","m":1674768234208.2227,"s":2007},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/ProductLauncher.d.ts":{"t":"f","m":1674768234211.9995,"s":1275},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/ProductLauncher.d.ts.map":{"t":"f","m":1674768234211.7012,"s":837},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/ProductLauncher.js":{"t":"f","m":1674768234211.234,"s":6802},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/ProductLauncher.js.map":{"t":"f","m":1674768234210.996,"s":2187},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/PuppeteerNode.d.ts":{"t":"f","m":1674768234210.8848,"s":6733},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/PuppeteerNode.d.ts.map":{"t":"f","m":1674768234210.747,"s":1534},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/PuppeteerNode.js":{"t":"f","m":1674768234210.5935,"s":11948},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/node/PuppeteerNode.js.map":{"t":"f","m":1674768234210.3564,"s":3645},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/puppeteer-core.d.ts":{"t":"f","m":1674768234214.1301,"s":1753},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/puppeteer-core.d.ts.map":{"t":"f","m":1674768234213.9214,"s":522},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/puppeteer-core.js":{"t":"f","m":1674768234213.8225,"s":2357},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/puppeteer-core.js.map":{"t":"f","m":1674768234213.7068,"s":484},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/revisions.d.ts":{"t":"f","m":1674768234209.6414,"s":782},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/revisions.d.ts.map":{"t":"f","m":1674768234209.5435,"s":186},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/revisions.js":{"t":"f","m":1674768234209.436,"s":888},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/revisions.js.map":{"t":"f","m":1674768234209.327,"s":252},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/tsconfig.cjs.tsbuildinfo":{"t":"f","m":1674768252713,"s":60908},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/assert.d.ts":{"t":"f","m":1674768234165.099,"s":922},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/assert.d.ts.map":{"t":"f","m":1674768234165.034,"s":253},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/assert.js":{"t":"f","m":1674768234164.9697,"s":1063},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/assert.js.map":{"t":"f","m":1674768234164.8997,"s":317},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/DebuggableDeferredPromise.d.ts":{"t":"f","m":1674768234177.14,"s":372},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/DebuggableDeferredPromise.d.ts.map":{"t":"f","m":1674768234177.0435,"s":296},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/DebuggableDeferredPromise.js":{"t":"f","m":1674768234176.9521,"s":889},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/DebuggableDeferredPromise.js.map":{"t":"f","m":1674768234176.861,"s":395},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/DeferredPromise.d.ts":{"t":"f","m":1674768234167.1013,"s":750},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/DeferredPromise.d.ts.map":{"t":"f","m":1674768234167.0327,"s":581},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/DeferredPromise.js":{"t":"f","m":1674768234166.9558,"s":1543},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/DeferredPromise.js.map":{"t":"f","m":1674768234166.875,"s":1180},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/ErrorLike.d.ts":{"t":"f","m":1674768234167.3684,"s":372},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/ErrorLike.d.ts.map":{"t":"f","m":1674768234167.2922,"s":384},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/ErrorLike.js":{"t":"f","m":1674768234167.2295,"s":583},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/ErrorLike.js.map":{"t":"f","m":1674768234167.1648,"s":500},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/util.d.ts":{"t":"f","m":1674768234213.5671,"s":798},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/util.d.ts.map":{"t":"f","m":1674768234213.3538,"s":227},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/util.js":{"t":"f","m":1674768234213.2075,"s":1625},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/util/util.js.map":{"t":"f","m":1674768234213.12,"s":203},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/chromium-bidi":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/chromium-bidi/index.d.ts":{"t":"f","m":1674768252512.739,"s":763},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/chromium-bidi/index.js":{"t":"f","m":1674768252512.6077,"s":763},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/mitt":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/mitt/index.d.ts":{"t":"f","m":1674768252512.9985,"s":682},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/mitt/index.js":{"t":"f","m":1674768252512.9219,"s":682},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/third_party/tsconfig.cjs.tsbuildinfo":{"t":"f","m":1674768252513.1462,"s":36856},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/package.json":{"t":"f","m":1674768234411.6174,"s":18},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/api.d.ts":{"t":"f","m":1674768230888.3728,"s":744},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/api.d.ts.map":{"t":"f","m":1674768230888.3005,"s":199},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/api.js":{"t":"f","m":1674768230888.2295,"s":742},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/api.js.map":{"t":"f","m":1674768230888.1465,"s":197},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/Browser.d.ts":{"t":"f","m":1674768230888.0496,"s":10880},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/Browser.d.ts.map":{"t":"f","m":1674768230887.948,"s":2723},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/Browser.js":{"t":"f","m":1674768230887.8374,"s":7272},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/Browser.js.map":{"t":"f","m":1674768230887.6929,"s":2555},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/BrowserContext.d.ts":{"t":"f","m":1674768230875.3936,"s":5190},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/BrowserContext.d.ts.map":{"t":"f","m":1674768230875.3179,"s":1082},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/BrowserContext.js":{"t":"f","m":1674768230875.2354,"s":4028},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/BrowserContext.js.map":{"t":"f","m":1674768230875.131,"s":1042},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/Page.d.ts":{"t":"f","m":1674768230887.59,"s":78625},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/Page.d.ts.map":{"t":"f","m":1674768230887.4563,"s":14511},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/Page.js":{"t":"f","m":1674768230887.3542,"s":14719},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/api/Page.js.map":{"t":"f","m":1674768230887.2378,"s":7788},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Accessibility.d.ts":{"t":"f","m":1674768230886.6516,"s":5370},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Accessibility.d.ts.map":{"t":"f","m":1674768230886.573,"s":1654},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Accessibility.js":{"t":"f","m":1674768230886.4885,"s":17633},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Accessibility.js.map":{"t":"f","m":1674768230886.3704,"s":9247},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.d.ts":{"t":"f","m":1674768230883.7827,"s":805},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.d.ts.map":{"t":"f","m":1674768230883.7144,"s":263},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js":{"t":"f","m":1674768230883.6433,"s":4774},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js.map":{"t":"f","m":1674768230883.5354,"s":3971},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/bidi.d.ts":{"t":"f","m":1674768230896.405,"s":812},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/bidi.d.ts.map":{"t":"f","m":1674768230896.3274,"s":258},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/bidi.js":{"t":"f","m":1674768230896.2146,"s":810},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/bidi.js.map":{"t":"f","m":1674768230896.1348,"s":256},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/BidiOverCDP.d.ts":{"t":"f","m":1674768230896.0498,"s":295},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/BidiOverCDP.d.ts.map":{"t":"f","m":1674768230895.8247,"s":337},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/BidiOverCDP.js":{"t":"f","m":1674768230895.742,"s":6402},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/BidiOverCDP.js.map":{"t":"f","m":1674768230895.644,"s":3162},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Browser.d.ts":{"t":"f","m":1674768230895.5544,"s":1528},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Browser.d.ts.map":{"t":"f","m":1674768230895.4736,"s":784},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Browser.js":{"t":"f","m":1674768230895.3926,"s":3479},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Browser.js.map":{"t":"f","m":1674768230895.304,"s":1158},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/BrowserContext.d.ts":{"t":"f","m":1674768230895.2236,"s":1050},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/BrowserContext.d.ts.map":{"t":"f","m":1674768230895.1477,"s":459},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/BrowserContext.js":{"t":"f","m":1674768230895.0376,"s":2519},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/BrowserContext.js.map":{"t":"f","m":1674768230894.9507,"s":674},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Connection.d.ts":{"t":"f","m":1674768230894.5352,"s":1223},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Connection.d.ts.map":{"t":"f","m":1674768230894.4458,"s":615},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Connection.js":{"t":"f","m":1674768230894.364,"s":6453},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Connection.js.map":{"t":"f","m":1674768230894.26,"s":3193},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Page.d.ts":{"t":"f","m":1674768230894.8643,"s":1152},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Page.d.ts.map":{"t":"f","m":1674768230894.7864,"s":622},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Page.js":{"t":"f","m":1674768230894.7063,"s":2923},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/bidi/Page.js.map":{"t":"f","m":1674768230894.62,"s":912},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Browser.d.ts":{"t":"f","m":1674768230889.6975,"s":10236},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Browser.d.ts.map":{"t":"f","m":1674768230889.5906,"s":3166},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Browser.js":{"t":"f","m":1674768230889.484,"s":28115},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Browser.js.map":{"t":"f","m":1674768230889.33,"s":11796},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.d.ts":{"t":"f","m":1674768230891.937,"s":1993},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.d.ts.map":{"t":"f","m":1674768230891.8467,"s":774},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.js":{"t":"f","m":1674768230891.757,"s":3718},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.js.map":{"t":"f","m":1674768230891.6335,"s":2804},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts":{"t":"f","m":1674768230891.552,"s":1074},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts.map":{"t":"f","m":1674768230891.4663,"s":518},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.js":{"t":"f","m":1674768230891.371,"s":2594},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.js.map":{"t":"f","m":1674768230891.2603,"s":1232},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ChromeTargetManager.d.ts":{"t":"f","m":1674768230888.801,"s":1675},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ChromeTargetManager.d.ts.map":{"t":"f","m":1674768230888.702,"s":812},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ChromeTargetManager.js":{"t":"f","m":1674768230888.598,"s":23534},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ChromeTargetManager.js.map":{"t":"f","m":1674768230888.4656,"s":9789},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/common.d.ts":{"t":"f","m":1674768230893.4287,"s":2496},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/common.d.ts.map":{"t":"f","m":1674768230893.3425,"s":1326},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/common.js":{"t":"f","m":1674768230893.2588,"s":2494},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/common.js.map":{"t":"f","m":1674768230893.1614,"s":1324},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Configuration.d.ts":{"t":"f","m":1674768230892.669,"s":4134},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Configuration.d.ts.map":{"t":"f","m":1674768230892.5815,"s":825},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Configuration.js":{"t":"f","m":1674768230892.492,"s":669},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Configuration.js.map":{"t":"f","m":1674768230892.4004,"s":156},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Connection.d.ts":{"t":"f","m":1674768230866.7703,"s":4937},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Connection.d.ts.map":{"t":"f","m":1674768230866.6917,"s":2892},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Connection.js":{"t":"f","m":1674768230866.5466,"s":16927},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Connection.js.map":{"t":"f","m":1674768230866.3801,"s":9145},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.d.ts":{"t":"f","m":1674768230865.73,"s":847},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.d.ts.map":{"t":"f","m":1674768230865.6306,"s":372},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.js":{"t":"f","m":1674768230865.5247,"s":675},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.js.map":{"t":"f","m":1674768230865.3896,"s":168},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.d.ts":{"t":"f","m":1674768230874.498,"s":2250},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map":{"t":"f","m":1674768230874.244,"s":919},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.js":{"t":"f","m":1674768230874.1323,"s":3677},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.js.map":{"t":"f","m":1674768230874.029,"s":841},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Coverage.d.ts":{"t":"f","m":1674768230877.032,"s":5928},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Coverage.d.ts.map":{"t":"f","m":1674768230876.925,"s":1775},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Coverage.js":{"t":"f","m":1674768230876.8203,"s":19313},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Coverage.js.map":{"t":"f","m":1674768230876.6206,"s":9322},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Debug.d.ts":{"t":"f","m":1674768230864.6973,"s":2021},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Debug.d.ts.map":{"t":"f","m":1674768230864.035,"s":496},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Debug.js":{"t":"f","m":1674768230863.946,"s":3231},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Debug.js.map":{"t":"f","m":1674768230863.85,"s":1461},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Device.d.ts":{"t":"f","m":1674768230887.1423,"s":6202},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Device.d.ts.map":{"t":"f","m":1674768230887.0505,"s":387},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Device.js":{"t":"f","m":1674768230886.959,"s":47972},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Device.js.map":{"t":"f","m":1674768230886.7996,"s":23351},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Dialog.d.ts":{"t":"f","m":1674768230877.385,"s":2181},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Dialog.d.ts.map":{"t":"f","m":1674768230877.3167,"s":635},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Dialog.js":{"t":"f","m":1674768230877.2302,"s":4751},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Dialog.js.map":{"t":"f","m":1674768230877.1245,"s":1250},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ElementHandle.d.ts":{"t":"f","m":1674768230886.2764,"s":17313},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ElementHandle.d.ts.map":{"t":"f","m":1674768230886.175,"s":4680},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ElementHandle.js":{"t":"f","m":1674768230886.0615,"s":38026},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ElementHandle.js.map":{"t":"f","m":1674768230885.8523,"s":19194},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.d.ts":{"t":"f","m":1674768230877.7407,"s":933},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.d.ts.map":{"t":"f","m":1674768230877.6516,"s":364},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.js":{"t":"f","m":1674768230877.5693,"s":3003},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.js.map":{"t":"f","m":1674768230877.4773,"s":1199},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Errors.d.ts":{"t":"f","m":1674768230866.2126,"s":2469},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Errors.d.ts.map":{"t":"f","m":1674768230866.1057,"s":702},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Errors.js":{"t":"f","m":1674768230866.018,"s":4082},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Errors.js.map":{"t":"f","m":1674768230865.8955,"s":980},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.d.ts":{"t":"f","m":1674768230863.2563,"s":4175},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.d.ts.map":{"t":"f","m":1674768230863.1665,"s":1643},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.js":{"t":"f","m":1674768230863.0723,"s":4148},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.js.map":{"t":"f","m":1674768230862.83,"s":1722},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.d.ts":{"t":"f","m":1674768230885.7483,"s":5605},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.d.ts.map":{"t":"f","m":1674768230885.6636,"s":1243},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.js":{"t":"f","m":1674768230885.581,"s":11070},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.js.map":{"t":"f","m":1674768230885.47,"s":4984},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/fetch.d.ts":{"t":"f","m":1674768230890.059,"s":822},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/fetch.d.ts.map":{"t":"f","m":1674768230889.9722,"s":201},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/fetch.js":{"t":"f","m":1674768230889.8796,"s":869},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/fetch.js.map":{"t":"f","m":1674768230889.7834,"s":297},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FileChooser.d.ts":{"t":"f","m":1674768230878.1167,"s":2230},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FileChooser.d.ts.map":{"t":"f","m":1674768230878.0305,"s":528},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FileChooser.js":{"t":"f","m":1674768230877.931,"s":4224},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FileChooser.js.map":{"t":"f","m":1674768230877.8328,"s":870},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FirefoxTargetManager.d.ts":{"t":"f","m":1674768230889.2288,"s":2172},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FirefoxTargetManager.d.ts.map":{"t":"f","m":1674768230889.1526,"s":915},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FirefoxTargetManager.js":{"t":"f","m":1674768230889.0579,"s":15030},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FirefoxTargetManager.js.map":{"t":"f","m":1674768230888.9077,"s":5791},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Frame.d.ts":{"t":"f","m":1674768230884.5527,"s":23127},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Frame.d.ts.map":{"t":"f","m":1674768230884.4763,"s":6378},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Frame.js":{"t":"f","m":1674768230884.3513,"s":29068},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Frame.js.map":{"t":"f","m":1674768230884.187,"s":11909},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FrameManager.d.ts":{"t":"f","m":1674768230880.551,"s":2297},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FrameManager.d.ts.map":{"t":"f","m":1674768230880.466,"s":1164},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js":{"t":"f","m":1674768230880.3755,"s":18924},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js.map":{"t":"f","m":1674768230880.2358,"s":11150},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FrameTree.d.ts":{"t":"f","m":1674768230868.1519,"s":1473},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FrameTree.d.ts.map":{"t":"f","m":1674768230868.0874,"s":590},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FrameTree.js":{"t":"f","m":1674768230868.014,"s":5545},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/FrameTree.js.map":{"t":"f","m":1674768230867.9233,"s":2622},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts":{"t":"f","m":1674768230872.434,"s":12046},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts.map":{"t":"f","m":1674768230872.326,"s":3490},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js":{"t":"f","m":1674768230872.2373,"s":27935},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js.map":{"t":"f","m":1674768230872.0828,"s":11754},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts":{"t":"f","m":1674768230871.984,"s":3865},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts.map":{"t":"f","m":1674768230871.8994,"s":1606},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js":{"t":"f","m":1674768230871.805,"s":10425},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js.map":{"t":"f","m":1674768230871.6895,"s":4168},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Input.d.ts":{"t":"f","m":1674768230869.2737,"s":12949},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Input.d.ts.map":{"t":"f","m":1674768230869.1946,"s":2859},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Input.js":{"t":"f","m":1674768230869.124,"s":23634},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Input.js.map":{"t":"f","m":1674768230868.91,"s":9831},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorld.d.ts":{"t":"f","m":1674768230885.3826,"s":5691},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorld.d.ts.map":{"t":"f","m":1674768230885.2861,"s":4850},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorld.js":{"t":"f","m":1674768230885.1875,"s":20053},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorld.js.map":{"t":"f","m":1674768230884.9734,"s":12016},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorlds.d.ts":{"t":"f","m":1674768230868.4197,"s":1095},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorlds.d.ts.map":{"t":"f","m":1674768230868.3535,"s":251},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorlds.js":{"t":"f","m":1674768230868.2893,"s":1096},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorlds.js.map":{"t":"f","m":1674768230868.2202,"s":299},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/JSHandle.d.ts":{"t":"f","m":1674768230870.6536,"s":6385},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/JSHandle.d.ts.map":{"t":"f","m":1674768230870.4724,"s":2762},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/JSHandle.js":{"t":"f","m":1674768230870.2073,"s":7888},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/JSHandle.js.map":{"t":"f","m":1674768230870.101,"s":2719},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/LazyArg.d.ts":{"t":"f","m":1674768230869.6562,"s":788},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/LazyArg.d.ts.map":{"t":"f","m":1674768230869.5562,"s":267},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/LazyArg.js":{"t":"f","m":1674768230869.4622,"s":2049},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/LazyArg.js.map":{"t":"f","m":1674768230869.3535,"s":339},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts":{"t":"f","m":1674768230880.9463,"s":1626},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts.map":{"t":"f","m":1674768230880.862,"s":903},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js":{"t":"f","m":1674768230880.7883,"s":17110},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js.map":{"t":"f","m":1674768230880.639,"s":6545},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NetworkEventManager.d.ts":{"t":"f","m":1674768230872.9753,"s":2870},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NetworkEventManager.d.ts.map":{"t":"f","m":1674768230872.8735,"s":1789},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NetworkEventManager.js":{"t":"f","m":1674768230872.7698,"s":8375},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NetworkEventManager.js.map":{"t":"f","m":1674768230872.6543,"s":2862},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts":{"t":"f","m":1674768230873.9233,"s":2612},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts.map":{"t":"f","m":1674768230873.8357,"s":1473},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js":{"t":"f","m":1674768230873.6306,"s":28988},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js.map":{"t":"f","m":1674768230873.464,"s":13696},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NodeWebSocketTransport.d.ts":{"t":"f","m":1674768230891.163,"s":1155},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NodeWebSocketTransport.d.ts.map":{"t":"f","m":1674768230891.0713,"s":605},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NodeWebSocketTransport.js":{"t":"f","m":1674768230890.9563,"s":3570},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/NodeWebSocketTransport.js.map":{"t":"f","m":1674768230890.864,"s":1514},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Page.d.ts":{"t":"f","m":1674768230879.8186,"s":9409},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Page.d.ts.map":{"t":"f","m":1674768230879.7314,"s":8913},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Page.js":{"t":"f","m":1674768230879.5962,"s":55439},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Page.js.map":{"t":"f","m":1674768230879.3215,"s":37815},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.d.ts":{"t":"f","m":1674768230878.4707,"s":4530},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.d.ts.map":{"t":"f","m":1674768230878.3728,"s":1524},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js":{"t":"f","m":1674768230878.2927,"s":1143},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js.map":{"t":"f","m":1674768230878.204,"s":874},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PredefinedNetworkConditions.d.ts":{"t":"f","m":1674768230893.0464,"s":1601},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PredefinedNetworkConditions.d.ts.map":{"t":"f","m":1674768230892.9548,"s":345},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PredefinedNetworkConditions.js":{"t":"f","m":1674768230892.8674,"s":1693},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PredefinedNetworkConditions.js.map":{"t":"f","m":1674768230892.7646,"s":736},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Product.d.ts":{"t":"f","m":1674768230892.3123,"s":740},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Product.d.ts.map":{"t":"f","m":1674768230892.2266,"s":203},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Product.js":{"t":"f","m":1674768230892.1313,"s":663},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Product.js.map":{"t":"f","m":1674768230892.0344,"s":144},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.d.ts":{"t":"f","m":1674768230890.4116,"s":3501},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.d.ts.map":{"t":"f","m":1674768230890.3188,"s":1098},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.js":{"t":"f","m":1674768230890.2222,"s":2545},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.js.map":{"t":"f","m":1674768230890.1438,"s":952},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.d.ts":{"t":"f","m":1674768230875.7463,"s":1496},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.d.ts.map":{"t":"f","m":1674768230875.656,"s":452},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.js":{"t":"f","m":1674768230875.5674,"s":56},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.js.map":{"t":"f","m":1674768230875.4785,"s":142},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.d.ts":{"t":"f","m":1674768230884.0935,"s":3523},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.d.ts.map":{"t":"f","m":1674768230884.0105,"s":1715},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.js":{"t":"f","m":1674768230883.9448,"s":7011},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.js.map":{"t":"f","m":1674768230883.856,"s":5316},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.d.ts":{"t":"f","m":1674768230871.5867,"s":1886},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.d.ts.map":{"t":"f","m":1674768230871.4543,"s":496},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.js":{"t":"f","m":1674768230871.35,"s":4640},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.js.map":{"t":"f","m":1674768230871.2578,"s":1006},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Target.d.ts":{"t":"f","m":1674768230880.1418,"s":3685},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Target.d.ts.map":{"t":"f","m":1674768230880.0645,"s":1806},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Target.js":{"t":"f","m":1674768230879.9915,"s":10047},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Target.js.map":{"t":"f","m":1674768230879.8977,"s":4429},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TargetManager.d.ts":{"t":"f","m":1674768230876.515,"s":2092},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TargetManager.d.ts.map":{"t":"f","m":1674768230876.4224,"s":980},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TargetManager.js":{"t":"f","m":1674768230876.3303,"s":669},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TargetManager.js.map":{"t":"f","m":1674768230876.2324,"s":156},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.d.ts":{"t":"f","m":1674768230876.135,"s":798},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.d.ts.map":{"t":"f","m":1674768230876.042,"s":271},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.js":{"t":"f","m":1674768230875.945,"s":2296},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.js.map":{"t":"f","m":1674768230875.8364,"s":544},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.d.ts":{"t":"f","m":1674768230878.844,"s":915},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.d.ts.map":{"t":"f","m":1674768230878.758,"s":327},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.js":{"t":"f","m":1674768230878.6587,"s":3310},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.js.map":{"t":"f","m":1674768230878.5632,"s":836},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Tracing.d.ts":{"t":"f","m":1674768230879.1956,"s":1229},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Tracing.d.ts.map":{"t":"f","m":1674768230879.107,"s":514},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Tracing.js":{"t":"f","m":1674768230879.02,"s":5764},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/Tracing.js.map":{"t":"f","m":1674768230878.9285,"s":2312},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/types.d.ts":{"t":"f","m":1674768230870.0103,"s":4576},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/types.d.ts.map":{"t":"f","m":1674768230869.9263,"s":3935},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/types.js":{"t":"f","m":1674768230869.8323,"s":661},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/types.js.map":{"t":"f","m":1674768230869.7427,"s":140},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.d.ts":{"t":"f","m":1674768230868.8337,"s":3533},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.d.ts.map":{"t":"f","m":1674768230868.7605,"s":3145},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.js":{"t":"f","m":1674768230868.68,"s":17452},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.js.map":{"t":"f","m":1674768230868.525,"s":22952},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/util.d.ts":{"t":"f","m":1674768230871.164,"s":3736},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/util.d.ts.map":{"t":"f","m":1674768230871.0732,"s":2790},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/util.js":{"t":"f","m":1674768230870.975,"s":10096},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/util.js.map":{"t":"f","m":1674768230870.7913,"s":8862},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/WaitTask.d.ts":{"t":"f","m":1674768230884.8748,"s":1709},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/WaitTask.d.ts.map":{"t":"f","m":1674768230884.8003,"s":1183},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/WaitTask.js":{"t":"f","m":1674768230884.7173,"s":10561},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/WaitTask.js.map":{"t":"f","m":1674768230884.6213,"s":5398},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/WebWorker.d.ts":{"t":"f","m":1674768230874.851,"s":4170},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/WebWorker.d.ts.map":{"t":"f","m":1674768230874.7747,"s":1430},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/WebWorker.js":{"t":"f","m":1674768230874.6846,"s":5895},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/common/WebWorker.js.map":{"t":"f","m":1674768230874.5806,"s":1953},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/environment.d.ts":{"t":"f","m":1674768230862.6338,"s":799},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/environment.d.ts.map":{"t":"f","m":1674768230862.5083,"s":231},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/environment.js":{"t":"f","m":1674768230862.3862,"s":1018},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/environment.js.map":{"t":"f","m":1674768230862.2334,"s":460},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated/injected.d.ts":{"t":"f","m":1674768230867.1277,"s":13968},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated/injected.d.ts.map":{"t":"f","m":1674768230867.056,"s":177},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated/injected.js":{"t":"f","m":1674768230866.9924,"s":13958},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated/injected.js.map":{"t":"f","m":1674768230866.9238,"s":185},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated/version.d.ts":{"t":"f","m":1674768230890.774,"s":106},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated/version.d.ts.map":{"t":"f","m":1674768230890.6904,"s":167},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated/version.js":{"t":"f","m":1674768230890.5957,"s":96},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/generated/version.js.map":{"t":"f","m":1674768230890.5034,"s":175},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/injected.d.ts":{"t":"f","m":1674768230883.4348,"s":1897},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/injected.d.ts.map":{"t":"f","m":1674768230883.3257,"s":390},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/injected.js":{"t":"f","m":1674768230883.2542,"s":1452},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/injected.js.map":{"t":"f","m":1674768230883.1853,"s":705},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/PierceQuerySelector.d.ts":{"t":"f","m":1674768230882.779,"s":276},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/PierceQuerySelector.d.ts.map":{"t":"f","m":1674768230882.6719,"s":304},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/PierceQuerySelector.js":{"t":"f","m":1674768230882.572,"s":2212},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/PierceQuerySelector.js.map":{"t":"f","m":1674768230882.4888,"s":1732},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/Poller.d.ts":{"t":"f","m":1674768230881.3938,"s":1462},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/Poller.d.ts.map":{"t":"f","m":1674768230881.3271,"s":1031},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/Poller.js":{"t":"f","m":1674768230881.2502,"s":7956},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/Poller.js.map":{"t":"f","m":1674768230881.1338,"s":3750},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/TextContent.d.ts":{"t":"f","m":1674768230881.6885,"s":1191},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/TextContent.d.ts.map":{"t":"f","m":1674768230881.625,"s":388},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/TextContent.js":{"t":"f","m":1674768230881.553,"s":4033},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/TextContent.js.map":{"t":"f","m":1674768230881.4673,"s":3021},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/TextQuerySelector.d.ts":{"t":"f","m":1674768230882.0723,"s":1035},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/TextQuerySelector.d.ts.map":{"t":"f","m":1674768230881.9614,"s":327},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/TextQuerySelector.js":{"t":"f","m":1674768230881.8547,"s":2415},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/TextQuerySelector.js.map":{"t":"f","m":1674768230881.7773,"s":1561},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/util.d.ts":{"t":"f","m":1674768230883.118,"s":926},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/util.d.ts.map":{"t":"f","m":1674768230883.0283,"s":306},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/util.js":{"t":"f","m":1674768230882.92,"s":1710},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/util.js.map":{"t":"f","m":1674768230882.8496,"s":1287},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/XPathQuerySelector.d.ts":{"t":"f","m":1674768230882.4126,"s":881},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/XPathQuerySelector.d.ts.map":{"t":"f","m":1674768230882.325,"s":323},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/XPathQuerySelector.js":{"t":"f","m":1674768230882.23,"s":1278},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/injected/XPathQuerySelector.js.map":{"t":"f","m":1674768230882.149,"s":852},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.d.ts":{"t":"f","m":1674768230894.0605,"s":5315},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.d.ts.map":{"t":"f","m":1674768230893.97,"s":1348},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.js":{"t":"f","m":1674768230893.8728,"s":22586},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.js.map":{"t":"f","m":1674768230893.6787,"s":13569},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts":{"t":"f","m":1674768230898.1008,"s":1665},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts.map":{"t":"f","m":1674768230897.9868,"s":1013},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js":{"t":"f","m":1674768230897.8838,"s":16148},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js.map":{"t":"f","m":1674768230897.7454,"s":8873},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.d.ts":{"t":"f","m":1674768230901.6719,"s":651},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map":{"t":"f","m":1674768230901.5737,"s":560},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js":{"t":"f","m":1674768230901.486,"s":10659},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js.map":{"t":"f","m":1674768230901.3635,"s":6518},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/FirefoxLauncher.d.ts":{"t":"f","m":1674768230899.9485,"s":1374},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/FirefoxLauncher.d.ts.map":{"t":"f","m":1674768230899.832,"s":881},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/FirefoxLauncher.js":{"t":"f","m":1674768230899.687,"s":17448},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/FirefoxLauncher.js.map":{"t":"f","m":1674768230899.4575,"s":9338},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.d.ts":{"t":"f","m":1674768230896.9011,"s":4367},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.d.ts.map":{"t":"f","m":1674768230896.7874,"s":1353},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.js":{"t":"f","m":1674768230896.6687,"s":669},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.js.map":{"t":"f","m":1674768230896.541,"s":154},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/node.d.ts":{"t":"f","m":1674768230902.1108,"s":945},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/node.d.ts.map":{"t":"f","m":1674768230902.0166,"s":321},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/node.js":{"t":"f","m":1674768230901.908,"s":943},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/node.js.map":{"t":"f","m":1674768230901.7896,"s":319},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.d.ts":{"t":"f","m":1674768230897.6384,"s":1071},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.d.ts.map":{"t":"f","m":1674768230897.5364,"s":466},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.js":{"t":"f","m":1674768230897.4014,"s":4146},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.js.map":{"t":"f","m":1674768230897.2156,"s":2043},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/ProductLauncher.d.ts":{"t":"f","m":1674768230901.2698,"s":1275},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/ProductLauncher.d.ts.map":{"t":"f","m":1674768230901.1775,"s":837},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/ProductLauncher.js":{"t":"f","m":1674768230901.0706,"s":5559},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/ProductLauncher.js.map":{"t":"f","m":1674768230900.922,"s":2227},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/PuppeteerNode.d.ts":{"t":"f","m":1674768230900.7822,"s":6733},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/PuppeteerNode.d.ts.map":{"t":"f","m":1674768230900.618,"s":1534},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/PuppeteerNode.js":{"t":"f","m":1674768230900.4185,"s":11637},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/node/PuppeteerNode.js.map":{"t":"f","m":1674768230900.0984,"s":3806},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/puppeteer-core.d.ts":{"t":"f","m":1674768230902.7854,"s":1753},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/puppeteer-core.d.ts.map":{"t":"f","m":1674768230902.7036,"s":522},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/puppeteer-core.js":{"t":"f","m":1674768230902.6108,"s":1210},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/puppeteer-core.js.map":{"t":"f","m":1674768230902.5242,"s":534},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/revisions.d.ts":{"t":"f","m":1674768230899.2896,"s":782},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/revisions.d.ts.map":{"t":"f","m":1674768230898.6313,"s":186},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/revisions.js":{"t":"f","m":1674768230898.5186,"s":778},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/revisions.js.map":{"t":"f","m":1674768230898.376,"s":259},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/tsconfig.esm.tsbuildinfo":{"t":"f","m":1674768251473.999,"s":60909},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/assert.d.ts":{"t":"f","m":1674768230863.693,"s":922},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/assert.d.ts.map":{"t":"f","m":1674768230863.584,"s":253},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/assert.js":{"t":"f","m":1674768230863.5066,"s":943},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/assert.js.map":{"t":"f","m":1674768230863.419,"s":303},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/DebuggableDeferredPromise.d.ts":{"t":"f","m":1674768230873.3542,"s":372},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/DebuggableDeferredPromise.d.ts.map":{"t":"f","m":1674768230873.2593,"s":296},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/DebuggableDeferredPromise.js":{"t":"f","m":1674768230873.1663,"s":621},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/DebuggableDeferredPromise.js.map":{"t":"f","m":1674768230873.0781,"s":440},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/DeferredPromise.d.ts":{"t":"f","m":1674768230867.4883,"s":750},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/DeferredPromise.d.ts.map":{"t":"f","m":1674768230867.4004,"s":581},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/DeferredPromise.js":{"t":"f","m":1674768230867.3115,"s":1366},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/DeferredPromise.js.map":{"t":"f","m":1674768230867.2249,"s":1197},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/ErrorLike.d.ts":{"t":"f","m":1674768230867.8296,"s":372},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/ErrorLike.d.ts.map":{"t":"f","m":1674768230867.7478,"s":384},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/ErrorLike.js":{"t":"f","m":1674768230867.6616,"s":383},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/ErrorLike.js.map":{"t":"f","m":1674768230867.577,"s":483},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/util.d.ts":{"t":"f","m":1674768230902.441,"s":798},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/util.d.ts.map":{"t":"f","m":1674768230902.3647,"s":227},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/util.js":{"t":"f","m":1674768230902.286,"s":796},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/puppeteer/util/util.js.map":{"t":"f","m":1674768230902.2048,"s":225},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/chromium-bidi":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/chromium-bidi/index.d.ts":{"t":"f","m":1674768251198.9836,"s":763},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/chromium-bidi/index.js":{"t":"f","m":1674768251198.8074,"s":763},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/mitt":{"t":"d"},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/mitt/index.d.ts":{"t":"f","m":1674768251199.319,"s":682},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/mitt/index.js":{"t":"f","m":1674768251199.1946,"s":682},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/third_party/tsconfig.tsbuildinfo":{"t":"f","m":1674768251199.5554,"s":36856}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a7479706573/fingerprint b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a7479706573/fingerprint deleted file mode 100644 index 4fb16ff4e9ab..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a7479706573/fingerprint +++ /dev/null @@ -1 +0,0 @@ -{"fullyTracked":false,"platform":"darwin","arch":"arm64","nodeVersion":"v16.19.0","command":"api-extractor run --local","extraArgs":[],"clean":true,"files":{"/Users/henrik/code/gecko/package-lock.json":"12d056a04f2c82f4cf2017c0f74c54bb455f33d48ca877901bd1f9e33ccac7c2","/Users/henrik/code/gecko/remote/test/puppeteer/package-lock.json":"8ca6d6b4f226876b554b60d7b2b4acd6c36bdcd1e22ec3908ea9bde5e6446a5f","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/api-extractor.json":"37b279a1d8f626c3bf11f729ccf235b8a9ef96b7a771120f2cdb963b4bb7c4ce","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/tsconfig.json":"40a7b3a76f221b6794459d8bc6cdb3d1ae05fba99616ab4692bb5b6ac3147782"},"output":["lib/types.d.ts","!.git/","!.hg/","!.svn/","!.wireit/","!.yarn/","!CVS/","!node_modules/"],"dependencies":{"[\"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core\",\"build:tsc\"]":"073b4e4f446f61d9e1b9f97470832f3ecdc2f45ef8e73a7c6286876da1388b62"},"env":{}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a7479706573/lock b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a7479706573/lock deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a7479706573/manifest b/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a7479706573/manifest deleted file mode 100644 index 89dfb8c73b88..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/6275696c643a7479706573/manifest +++ /dev/null @@ -1 +0,0 @@ -{"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/types.d.ts":{"t":"f","m":1674768255847.1177,"s":264150}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/636c65616e3a74686972645f7061727479/fingerprint b/remote/test/puppeteer/packages/puppeteer-core/.wireit/636c65616e3a74686972645f7061727479/fingerprint deleted file mode 100644 index 150d930da665..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/636c65616e3a74686972645f7061727479/fingerprint +++ /dev/null @@ -1 +0,0 @@ -{"fullyTracked":false,"platform":"darwin","arch":"arm64","nodeVersion":"v16.19.0","command":"rimraf lib/esm/third_party lib/cjs/third_party","extraArgs":[],"clean":true,"files":{},"output":[],"dependencies":{},"env":{}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/636c65616e3a74686972645f7061727479/lock b/remote/test/puppeteer/packages/puppeteer-core/.wireit/636c65616e3a74686972645f7061727479/lock deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/666f726d61743a7479706573/fingerprint b/remote/test/puppeteer/packages/puppeteer-core/.wireit/666f726d61743a7479706573/fingerprint deleted file mode 100644 index 675d8fedf829..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/666f726d61743a7479706573/fingerprint +++ /dev/null @@ -1 +0,0 @@ -{"fullyTracked":false,"platform":"darwin","arch":"arm64","nodeVersion":"v16.19.0","command":"eslint --cache-location .eslintcache --cache --ext=ts --no-ignore --no-eslintrc -c=../../.eslintrc.types.cjs --fix lib/types.d.ts","extraArgs":[],"clean":false,"files":{"/Users/henrik/code/gecko/package-lock.json":"12d056a04f2c82f4cf2017c0f74c54bb455f33d48ca877901bd1f9e33ccac7c2","/Users/henrik/code/gecko/remote/test/puppeteer/.eslintrc.types.cjs":"b6b6571f423dd59349cc408f59a796674959b58db0557a0264720c9dd16be49d","/Users/henrik/code/gecko/remote/test/puppeteer/package-lock.json":"8ca6d6b4f226876b554b60d7b2b4acd6c36bdcd1e22ec3908ea9bde5e6446a5f","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/types.d.ts":"4b0d03748b104790791089a416ff78350aabf2a9094c7780c372dcf959699c53"},"output":["lib/types.d.ts","!.git/","!.hg/","!.svn/","!.wireit/","!.yarn/","!CVS/","!node_modules/"],"dependencies":{"[\"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core\",\"build:types\"]":"64ec1373b13e67658c3b733dd2ba42a81c82cc474b726912ee8d83d928e70289"},"env":{}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/666f726d61743a7479706573/lock b/remote/test/puppeteer/packages/puppeteer-core/.wireit/666f726d61743a7479706573/lock deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/666f726d61743a7479706573/manifest b/remote/test/puppeteer/packages/puppeteer-core/.wireit/666f726d61743a7479706573/manifest deleted file mode 100644 index 5c9df176ce36..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/666f726d61743a7479706573/manifest +++ /dev/null @@ -1 +0,0 @@ -{"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/types.d.ts":{"t":"f","m":1674768257088.7676,"s":264000}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a7061636b6167652d6a736f6e/fingerprint b/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a7061636b6167652d6a736f6e/fingerprint deleted file mode 100644 index ed4128453c2b..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a7061636b6167652d6a736f6e/fingerprint +++ /dev/null @@ -1 +0,0 @@ -{"fullyTracked":false,"platform":"darwin","arch":"arm64","nodeVersion":"v16.19.0","command":"tsx ../../tools/generate_module_package_json.ts lib/esm/package.json","extraArgs":[],"clean":"if-file-deleted","files":{},"output":["lib/esm/package.json","!.git/","!.hg/","!.svn/","!.wireit/","!.yarn/","!CVS/","!node_modules/"],"dependencies":{"[\"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core\",\"build:tsc\"]":"073b4e4f446f61d9e1b9f97470832f3ecdc2f45ef8e73a7c6286876da1388b62"},"env":{}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a7061636b6167652d6a736f6e/lock b/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a7061636b6167652d6a736f6e/lock deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a7061636b6167652d6a736f6e/manifest b/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a7061636b6167652d6a736f6e/manifest deleted file mode 100644 index 544b47c519df..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a7061636b6167652d6a736f6e/manifest +++ /dev/null @@ -1 +0,0 @@ -{"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/lib/esm/package.json":{"t":"f","m":1674768252880.2676,"s":18}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/cache/0e73ce09f85cf259dd27b69d35aa57f30c8da0a2b89962826525a977cd48331b/src/generated/injected.ts b/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/cache/0e73ce09f85cf259dd27b69d35aa57f30c8da0a2b89962826525a977cd48331b/src/generated/injected.ts deleted file mode 100644 index e2bc1547e38f..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/cache/0e73ce09f85cf259dd27b69d35aa57f30c8da0a2b89962826525a977cd48331b/src/generated/injected.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * CommonJS JavaScript code that provides the puppeteer utilities. See the - * [README](https://github.com/puppeteer/puppeteer/blob/main/src/injected/README.md) - * for injection for more information. - * - * @internal - */ -export const source = "\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/injected/injected.ts\nvar injected_exports = {};\n__export(injected_exports, {\n default: () => injected_default\n});\nmodule.exports = __toCommonJS(injected_exports);\n\n// src/common/Errors.ts\nvar CustomError = class extends Error {\n constructor(message) {\n super(message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n }\n};\nvar TimeoutError = class extends CustomError {\n};\nvar ProtocolError = class extends CustomError {\n #code;\n #originalMessage = \"\";\n set code(code) {\n this.#code = code;\n }\n get code() {\n return this.#code;\n }\n set originalMessage(originalMessage) {\n this.#originalMessage = originalMessage;\n }\n get originalMessage() {\n return this.#originalMessage;\n }\n};\nvar errors = Object.freeze({\n TimeoutError,\n ProtocolError\n});\n\n// src/util/DeferredPromise.ts\nfunction createDeferredPromise(opts) {\n let isResolved = false;\n let isRejected = false;\n let resolver;\n let rejector;\n const taskPromise = new Promise((resolve, reject) => {\n resolver = resolve;\n rejector = reject;\n });\n const timeoutId = opts && opts.timeout > 0 ? setTimeout(() => {\n isRejected = true;\n rejector(new TimeoutError(opts.message));\n }, opts.timeout) : void 0;\n return Object.assign(taskPromise, {\n resolved: () => {\n return isResolved;\n },\n finished: () => {\n return isResolved || isRejected;\n },\n resolve: (value) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n isResolved = true;\n resolver(value);\n },\n reject: (err) => {\n clearTimeout(timeoutId);\n isRejected = true;\n rejector(err);\n }\n });\n}\n\n// src/util/assert.ts\nvar assert = (value, message) => {\n if (!value) {\n throw new Error(message);\n }\n};\n\n// src/injected/Poller.ts\nvar MutationPoller = class {\n #fn;\n #root;\n #observer;\n #promise;\n constructor(fn, root) {\n this.#fn = fn;\n this.#root = root;\n }\n async start() {\n const promise = this.#promise = createDeferredPromise();\n const result = await this.#fn();\n if (result) {\n promise.resolve(result);\n return;\n }\n this.#observer = new MutationObserver(async () => {\n const result2 = await this.#fn();\n if (!result2) {\n return;\n }\n promise.resolve(result2);\n await this.stop();\n });\n this.#observer.observe(this.#root, {\n childList: true,\n subtree: true,\n attributes: true\n });\n }\n async stop() {\n assert(this.#promise, \"Polling never started.\");\n if (!this.#promise.finished()) {\n this.#promise.reject(new Error(\"Polling stopped\"));\n }\n if (this.#observer) {\n this.#observer.disconnect();\n this.#observer = void 0;\n }\n }\n result() {\n assert(this.#promise, \"Polling never started.\");\n return this.#promise;\n }\n};\nvar RAFPoller = class {\n #fn;\n #promise;\n constructor(fn) {\n this.#fn = fn;\n }\n async start() {\n const promise = this.#promise = createDeferredPromise();\n const result = await this.#fn();\n if (result) {\n promise.resolve(result);\n return;\n }\n const poll = async () => {\n if (promise.finished()) {\n return;\n }\n const result2 = await this.#fn();\n if (!result2) {\n window.requestAnimationFrame(poll);\n return;\n }\n promise.resolve(result2);\n await this.stop();\n };\n window.requestAnimationFrame(poll);\n }\n async stop() {\n assert(this.#promise, \"Polling never started.\");\n if (!this.#promise.finished()) {\n this.#promise.reject(new Error(\"Polling stopped\"));\n }\n }\n result() {\n assert(this.#promise, \"Polling never started.\");\n return this.#promise;\n }\n};\nvar IntervalPoller = class {\n #fn;\n #ms;\n #interval;\n #promise;\n constructor(fn, ms) {\n this.#fn = fn;\n this.#ms = ms;\n }\n async start() {\n const promise = this.#promise = createDeferredPromise();\n const result = await this.#fn();\n if (result) {\n promise.resolve(result);\n return;\n }\n this.#interval = setInterval(async () => {\n const result2 = await this.#fn();\n if (!result2) {\n return;\n }\n promise.resolve(result2);\n await this.stop();\n }, this.#ms);\n }\n async stop() {\n assert(this.#promise, \"Polling never started.\");\n if (!this.#promise.finished()) {\n this.#promise.reject(new Error(\"Polling stopped\"));\n }\n if (this.#interval) {\n clearInterval(this.#interval);\n this.#interval = void 0;\n }\n }\n result() {\n assert(this.#promise, \"Polling never started.\");\n return this.#promise;\n }\n};\n\n// src/injected/TextContent.ts\nvar TRIVIAL_VALUE_INPUT_TYPES = /* @__PURE__ */ new Set([\"checkbox\", \"image\", \"radio\"]);\nvar isNonTrivialValueNode = (node) => {\n if (node instanceof HTMLSelectElement) {\n return true;\n }\n if (node instanceof HTMLTextAreaElement) {\n return true;\n }\n if (node instanceof HTMLInputElement && !TRIVIAL_VALUE_INPUT_TYPES.has(node.type)) {\n return true;\n }\n return false;\n};\nvar UNSUITABLE_NODE_NAMES = /* @__PURE__ */ new Set([\"SCRIPT\", \"STYLE\"]);\nvar isSuitableNodeForTextMatching = (node) => {\n return !UNSUITABLE_NODE_NAMES.has(node.nodeName) && !document.head?.contains(node);\n};\nvar textContentCache = /* @__PURE__ */ new WeakMap();\nvar eraseFromCache = (node) => {\n while (node) {\n textContentCache.delete(node);\n if (node instanceof ShadowRoot) {\n node = node.host;\n } else {\n node = node.parentNode;\n }\n }\n};\nvar observedNodes = /* @__PURE__ */ new WeakSet();\nvar textChangeObserver = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n eraseFromCache(mutation.target);\n }\n});\nvar createTextContent = (root) => {\n let value = textContentCache.get(root);\n if (value) {\n return value;\n }\n value = { full: \"\", immediate: [] };\n if (!isSuitableNodeForTextMatching(root)) {\n return value;\n }\n let currentImmediate = \"\";\n if (isNonTrivialValueNode(root)) {\n value.full = root.value;\n value.immediate.push(root.value);\n root.addEventListener(\n \"input\",\n (event) => {\n eraseFromCache(event.target);\n },\n { once: true, capture: true }\n );\n } else {\n for (let child = root.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === Node.TEXT_NODE) {\n value.full += child.nodeValue ?? \"\";\n currentImmediate += child.nodeValue ?? \"\";\n continue;\n }\n if (currentImmediate) {\n value.immediate.push(currentImmediate);\n }\n currentImmediate = \"\";\n if (child.nodeType === Node.ELEMENT_NODE) {\n value.full += createTextContent(child).full;\n }\n }\n if (currentImmediate) {\n value.immediate.push(currentImmediate);\n }\n if (root instanceof Element && root.shadowRoot) {\n value.full += createTextContent(root.shadowRoot).full;\n }\n if (!observedNodes.has(root)) {\n textChangeObserver.observe(root, {\n childList: true,\n characterData: true\n });\n observedNodes.add(root);\n }\n }\n textContentCache.set(root, value);\n return value;\n};\n\n// src/injected/TextQuerySelector.ts\nvar TextQuerySelector_exports = {};\n__export(TextQuerySelector_exports, {\n textQuerySelector: () => textQuerySelector,\n textQuerySelectorAll: () => textQuerySelectorAll\n});\nvar textQuerySelector = (root, selector) => {\n for (const node of root.childNodes) {\n if (node instanceof Element && isSuitableNodeForTextMatching(node)) {\n let matchedNode;\n if (node.shadowRoot) {\n matchedNode = textQuerySelector(node.shadowRoot, selector);\n } else {\n matchedNode = textQuerySelector(node, selector);\n }\n if (matchedNode) {\n return matchedNode;\n }\n }\n }\n if (root instanceof Element) {\n const textContent = createTextContent(root);\n if (textContent.full.includes(selector)) {\n return root;\n }\n }\n return null;\n};\nvar textQuerySelectorAll = (root, selector) => {\n let results = [];\n for (const node of root.childNodes) {\n if (node instanceof Element) {\n let matchedNodes;\n if (node.shadowRoot) {\n matchedNodes = textQuerySelectorAll(node.shadowRoot, selector);\n } else {\n matchedNodes = textQuerySelectorAll(node, selector);\n }\n results = results.concat(matchedNodes);\n }\n }\n if (results.length > 0) {\n return results;\n }\n if (root instanceof Element) {\n const textContent = createTextContent(root);\n if (textContent.full.includes(selector)) {\n return [root];\n }\n }\n return [];\n};\n\n// src/injected/XPathQuerySelector.ts\nvar XPathQuerySelector_exports = {};\n__export(XPathQuerySelector_exports, {\n xpathQuerySelector: () => xpathQuerySelector,\n xpathQuerySelectorAll: () => xpathQuerySelectorAll\n});\nvar xpathQuerySelector = (root, selector) => {\n const doc = root.ownerDocument || document;\n const result = doc.evaluate(\n selector,\n root,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE\n );\n return result.singleNodeValue;\n};\nvar xpathQuerySelectorAll = (root, selector) => {\n const doc = root.ownerDocument || document;\n const iterator = doc.evaluate(\n selector,\n root,\n null,\n XPathResult.ORDERED_NODE_ITERATOR_TYPE\n );\n const array = [];\n let item;\n while (item = iterator.iterateNext()) {\n array.push(item);\n }\n return array;\n};\n\n// src/injected/PierceQuerySelector.ts\nvar PierceQuerySelector_exports = {};\n__export(PierceQuerySelector_exports, {\n pierceQuerySelector: () => pierceQuerySelector,\n pierceQuerySelectorAll: () => pierceQuerySelectorAll\n});\nvar pierceQuerySelector = (root, selector) => {\n let found = null;\n const search = (root2) => {\n const iter = document.createTreeWalker(root2, NodeFilter.SHOW_ELEMENT);\n do {\n const currentNode = iter.currentNode;\n if (currentNode.shadowRoot) {\n search(currentNode.shadowRoot);\n }\n if (currentNode instanceof ShadowRoot) {\n continue;\n }\n if (currentNode !== root2 && !found && currentNode.matches(selector)) {\n found = currentNode;\n }\n } while (!found && iter.nextNode());\n };\n if (root instanceof Document) {\n root = root.documentElement;\n }\n search(root);\n return found;\n};\nvar pierceQuerySelectorAll = (element, selector) => {\n const result = [];\n const collect = (root) => {\n const iter = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n do {\n const currentNode = iter.currentNode;\n if (currentNode.shadowRoot) {\n collect(currentNode.shadowRoot);\n }\n if (currentNode instanceof ShadowRoot) {\n continue;\n }\n if (currentNode !== root && currentNode.matches(selector)) {\n result.push(currentNode);\n }\n } while (iter.nextNode());\n };\n if (element instanceof Document) {\n element = element.documentElement;\n }\n collect(element);\n return result;\n};\n\n// src/injected/util.ts\nvar util_exports = {};\n__export(util_exports, {\n checkVisibility: () => checkVisibility,\n createFunction: () => createFunction\n});\nvar createdFunctions = /* @__PURE__ */ new Map();\nvar createFunction = (functionValue) => {\n let fn = createdFunctions.get(functionValue);\n if (fn) {\n return fn;\n }\n fn = new Function(`return ${functionValue}`)();\n createdFunctions.set(functionValue, fn);\n return fn;\n};\nvar HIDDEN_VISIBILITY_VALUES = [\"hidden\", \"collapse\"];\nvar checkVisibility = (node, visible) => {\n if (!node) {\n return visible === false;\n }\n if (visible === void 0) {\n return node;\n }\n const element = node.nodeType === Node.TEXT_NODE ? node.parentElement : node;\n const style = window.getComputedStyle(element);\n const isVisible = style && !HIDDEN_VISIBILITY_VALUES.includes(style.visibility) && !isBoundingBoxEmpty(element);\n return visible === isVisible ? node : false;\n};\nfunction isBoundingBoxEmpty(element) {\n const rect = element.getBoundingClientRect();\n return rect.width === 0 || rect.height === 0;\n}\n\n// src/injected/injected.ts\nvar PuppeteerUtil = Object.freeze({\n ...util_exports,\n ...TextQuerySelector_exports,\n ...XPathQuerySelector_exports,\n ...PierceQuerySelector_exports,\n createDeferredPromise,\n createTextContent,\n IntervalPoller,\n isSuitableNodeForTextMatching,\n MutationPoller,\n RAFPoller\n});\nvar injected_default = PuppeteerUtil;\n"; diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/cache/0e73ce09f85cf259dd27b69d35aa57f30c8da0a2b89962826525a977cd48331b/src/generated/version.ts b/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/cache/0e73ce09f85cf259dd27b69d35aa57f30c8da0a2b89962826525a977cd48331b/src/generated/version.ts deleted file mode 100644 index 19bcbd908a2a..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/cache/0e73ce09f85cf259dd27b69d35aa57f30c8da0a2b89962826525a977cd48331b/src/generated/version.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * @internal - */ -export const packageVersion = '19.6.0'; diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/fingerprint b/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/fingerprint deleted file mode 100644 index 7cefcacc01a7..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/fingerprint +++ /dev/null @@ -1 +0,0 @@ -{"fullyTracked":true,"platform":"darwin","arch":"arm64","nodeVersion":"v16.19.0","command":"tsx tools/generate_sources.ts","extraArgs":[],"clean":true,"files":{"/Users/henrik/code/gecko/package-lock.json":"12d056a04f2c82f4cf2017c0f74c54bb455f33d48ca877901bd1f9e33ccac7c2","/Users/henrik/code/gecko/remote/test/puppeteer/package-lock.json":"8ca6d6b4f226876b554b60d7b2b4acd6c36bdcd1e22ec3908ea9bde5e6446a5f","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/templates/injected.ts.tmpl":"dbd1ff3070c2f98f239b394837e70b74941ea25c0b766182c7ade6f13aad2303","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/templates/version.ts.tmpl":"a5f6d16aeb816573124feeebf87980c52fd0b1505fde97da1d36fa2b352ba363","/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/tools/generate_sources.ts":"e3b1e37389b263cd2e99ad95278883c7b8661a16d810bf2026648a11adc54b11"},"output":["src/generated/**","!.git/","!.hg/","!.svn/","!.wireit/","!.yarn/","!CVS/","!node_modules/"],"dependencies":{},"env":{}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/lock b/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/lock deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/manifest b/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/manifest deleted file mode 100644 index e8bd686cf1fc..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/.wireit/67656e65726174653a736f7572636573/manifest +++ /dev/null @@ -1 +0,0 @@ -{"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/generated/injected.ts":{"t":"f","m":1674768225663.2888,"s":13922},"/Users/henrik/code/gecko/remote/test/puppeteer/packages/puppeteer-core/src/generated/version.ts":{"t":"f","m":1674768225663.256,"s":61}} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.d.ts b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.d.ts deleted file mode 100644 index 2263385c5567..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.d.ts +++ /dev/null @@ -1,337 +0,0 @@ -/** - * Copyright 2017 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/// -import { ChildProcess } from 'child_process'; -import { Protocol } from 'devtools-protocol'; -import { EventEmitter } from '../common/EventEmitter.js'; -import type { Page } from './Page.js'; -import type { Target } from '../common/Target.js'; -import type { BrowserContext } from './BrowserContext.js'; -/** - * BrowserContext options. - * - * @public - */ -export interface BrowserContextOptions { - /** - * Proxy server with optional port to use for all requests. - * Username and password can be set in `Page.authenticate`. - */ - proxyServer?: string; - /** - * Bypass the proxy for the given list of hosts. - */ - proxyBypassList?: string[]; -} -/** - * @internal - */ -export type BrowserCloseCallback = () => Promise | void; -/** - * @public - */ -export type TargetFilterCallback = (target: Protocol.Target.TargetInfo) => boolean; -/** - * @internal - */ -export type IsPageTargetCallback = (target: Protocol.Target.TargetInfo) => boolean; -/** - * @internal - */ -export declare const WEB_PERMISSION_TO_PROTOCOL_PERMISSION: Map; -/** - * @public - */ -export type Permission = 'geolocation' | 'midi' | 'notifications' | 'camera' | 'microphone' | 'background-sync' | 'ambient-light-sensor' | 'accelerometer' | 'gyroscope' | 'magnetometer' | 'accessibility-events' | 'clipboard-read' | 'clipboard-write' | 'payment-handler' | 'persistent-storage' | 'idle-detection' | 'midi-sysex'; -/** - * @public - */ -export interface WaitForTargetOptions { - /** - * Maximum wait time in milliseconds. Pass `0` to disable the timeout. - * @defaultValue 30 seconds. - */ - timeout?: number; -} -/** - * All the events a {@link Browser | browser instance} may emit. - * - * @public - */ -export declare const enum BrowserEmittedEvents { - /** - * Emitted when Puppeteer gets disconnected from the Chromium instance. This - * might happen because of one of the following: - * - * - Chromium is closed or crashed - * - * - The {@link Browser.disconnect | browser.disconnect } method was called. - */ - Disconnected = "disconnected", - /** - * Emitted when the url of a target changes. Contains a {@link Target} instance. - * - * @remarks - * - * Note that this includes target changes in incognito browser contexts. - */ - TargetChanged = "targetchanged", - /** - * Emitted when a target is created, for example when a new page is opened by - * {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/open | window.open} - * or by {@link Browser.newPage | browser.newPage} - * - * Contains a {@link Target} instance. - * - * @remarks - * - * Note that this includes target creations in incognito browser contexts. - */ - TargetCreated = "targetcreated", - /** - * Emitted when a target is destroyed, for example when a page is closed. - * Contains a {@link Target} instance. - * - * @remarks - * - * Note that this includes target destructions in incognito browser contexts. - */ - TargetDestroyed = "targetdestroyed" -} -/** - * A Browser is created when Puppeteer connects to a Chromium instance, either through - * {@link PuppeteerNode.launch} or {@link Puppeteer.connect}. - * - * @remarks - * - * The Browser class extends from Puppeteer's {@link EventEmitter} class and will - * emit various events which are documented in the {@link BrowserEmittedEvents} enum. - * - * @example - * An example of using a {@link Browser} to create a {@link Page}: - * - * ```ts - * import puppeteer from 'puppeteer'; - * - * (async () => { - * const browser = await puppeteer.launch(); - * const page = await browser.newPage(); - * await page.goto('https://example.com'); - * await browser.close(); - * })(); - * ``` - * - * @example - * An example of disconnecting from and reconnecting to a {@link Browser}: - * - * ```ts - * import puppeteer from 'puppeteer'; - * - * (async () => { - * const browser = await puppeteer.launch(); - * // Store the endpoint to be able to reconnect to Chromium - * const browserWSEndpoint = browser.wsEndpoint(); - * // Disconnect puppeteer from Chromium - * browser.disconnect(); - * - * // Use the endpoint to reestablish a connection - * const browser2 = await puppeteer.connect({browserWSEndpoint}); - * // Close Chromium - * await browser2.close(); - * })(); - * ``` - * - * @public - */ -export declare class Browser extends EventEmitter { - /** - * @internal - */ - constructor(); - /** - * @internal - */ - _attach(): Promise; - /** - * @internal - */ - _detach(): void; - /** - * @internal - */ - get _targets(): Map; - /** - * The spawned browser process. Returns `null` if the browser instance was created with - * {@link Puppeteer.connect}. - */ - process(): ChildProcess | null; - /** - * @internal - */ - _getIsPageTargetCallback(): IsPageTargetCallback | undefined; - /** - * Creates a new incognito browser context. This won't share cookies/cache with other - * browser contexts. - * - * @example - * - * ```ts - * (async () => { - * const browser = await puppeteer.launch(); - * // Create a new incognito browser context. - * const context = await browser.createIncognitoBrowserContext(); - * // Create a new page in a pristine context. - * const page = await context.newPage(); - * // Do stuff - * await page.goto('https://example.com'); - * })(); - * ``` - */ - createIncognitoBrowserContext(options?: BrowserContextOptions): Promise; - /** - * Returns an array of all open browser contexts. In a newly created browser, this will - * return a single instance of {@link BrowserContext}. - */ - browserContexts(): BrowserContext[]; - /** - * Returns the default browser context. The default browser context cannot be closed. - */ - defaultBrowserContext(): BrowserContext; - /** - * @internal - */ - _disposeContext(contextId?: string): Promise; - /** - * The browser websocket endpoint which can be used as an argument to - * {@link Puppeteer.connect}. - * - * @returns The Browser websocket url. - * - * @remarks - * - * The format is `ws://${host}:${port}/devtools/browser/`. - * - * You can find the `webSocketDebuggerUrl` from `http://${host}:${port}/json/version`. - * Learn more about the - * {@link https://chromedevtools.github.io/devtools-protocol | devtools protocol} and - * the {@link - * https://chromedevtools.github.io/devtools-protocol/#how-do-i-access-the-browser-target - * | browser endpoint}. - */ - wsEndpoint(): string; - /** - * Promise which resolves to a new {@link Page} object. The Page is created in - * a default browser context. - */ - newPage(): Promise; - /** - * @internal - */ - _createPageInContext(contextId?: string): Promise; - /** - * All active targets inside the Browser. In case of multiple browser contexts, returns - * an array with all the targets in all browser contexts. - */ - targets(): Target[]; - /** - * The target associated with the browser. - */ - target(): Target; - /** - * Searches for a target in all browser contexts. - * - * @param predicate - A function to be run for every target. - * @returns The first target found that matches the `predicate` function. - * - * @example - * - * An example of finding a target for a page opened via `window.open`: - * - * ```ts - * await page.evaluate(() => window.open('https://www.example.com/')); - * const newWindowTarget = await browser.waitForTarget( - * target => target.url() === 'https://www.example.com/' - * ); - * ``` - */ - waitForTarget(predicate: (x: Target) => boolean | Promise, options?: WaitForTargetOptions): Promise; - /** - * An array of all open pages inside the Browser. - * - * @remarks - * - * In case of multiple browser contexts, returns an array with all the pages in all - * browser contexts. Non-visible pages, such as `"background_page"`, will not be listed - * here. You can find them using {@link Target.page}. - */ - pages(): Promise; - /** - * A string representing the browser name and version. - * - * @remarks - * - * For headless Chromium, this is similar to `HeadlessChrome/61.0.3153.0`. For - * non-headless, this is similar to `Chrome/61.0.3153.0`. - * - * The format of browser.version() might change with future releases of Chromium. - */ - version(): Promise; - /** - * The browser's original user agent. Pages can override the browser user agent with - * {@link Page.setUserAgent}. - */ - userAgent(): Promise; - /** - * Closes Chromium and all of its pages (if any were opened). The {@link Browser} object - * itself is considered to be disposed and cannot be used anymore. - */ - close(): Promise; - /** - * Disconnects Puppeteer from the browser, but leaves the Chromium process running. - * After calling `disconnect`, the {@link Browser} object is considered disposed and - * cannot be used anymore. - */ - disconnect(): void; - /** - * Indicates that the browser is connected. - */ - isConnected(): boolean; -} -/** - * @public - */ -export declare const enum BrowserContextEmittedEvents { - /** - * Emitted when the url of a target inside the browser context changes. - * Contains a {@link Target} instance. - */ - TargetChanged = "targetchanged", - /** - * Emitted when a target is created within the browser context, for example - * when a new page is opened by - * {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/open | window.open} - * or by {@link BrowserContext.newPage | browserContext.newPage} - * - * Contains a {@link Target} instance. - */ - TargetCreated = "targetcreated", - /** - * Emitted when a target is destroyed within the browser context, for example - * when a page is closed. Contains a {@link Target} instance. - */ - TargetDestroyed = "targetdestroyed" -} -//# sourceMappingURL=Browser.d.ts.map \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.d.ts.map b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.d.ts.map deleted file mode 100644 index 25d7c6448bdc..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../../src/api/Browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;AAIH,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,KAC/B,OAAO,CAAC;AAEb;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,KAC/B,OAAO,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,qCAAqC,kDAwBhD,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,aAAa,GACb,MAAM,GACN,eAAe,GACf,QAAQ,GACR,YAAY,GACZ,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,WAAW,GACX,cAAc,GACd,sBAAsB,GACtB,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,0BAAkB,oBAAoB;IACpC;;;;;;;OAOG;IACH,YAAY,iBAAiB;IAE7B;;;;;;OAMG;IACH,aAAa,kBAAkB;IAE/B;;;;;;;;;;OAUG;IACH,aAAa,kBAAkB;IAC/B;;;;;;;OAOG;IACH,eAAe,oBAAoB;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,OAAQ,SAAQ,YAAY;IACvC;;OAEG;;IAKH;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,IAAI,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAElC;IAED;;;OAGG;IACH,OAAO,IAAI,YAAY,GAAG,IAAI;IAI9B;;OAEG;IACH,wBAAwB,IAAI,oBAAoB,GAAG,SAAS;IAI5D;;;;;;;;;;;;;;;;;OAiBG;IACH,6BAA6B,CAC3B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAK1B;;;OAGG;IACH,eAAe,IAAI,cAAc,EAAE;IAInC;;OAEG;IACH,qBAAqB,IAAI,cAAc;IAIvC;;OAEG;IACH,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,IAAI,MAAM;IAIpB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB;;OAEG;IACH,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD;;;OAGG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CACX,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EACpD,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;;;OAQG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIxB;;;;;;;;;OASG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB;AACD;;GAEG;AACH,0BAAkB,2BAA2B;IAC3C;;;OAGG;IACH,aAAa,kBAAkB;IAE/B;;;;;;;OAOG;IACH,aAAa,kBAAkB;IAC/B;;;OAGG;IACH,eAAe,oBAAoB;CACpC"} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.js b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.js deleted file mode 100644 index ad823078e9ef..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.js +++ /dev/null @@ -1,248 +0,0 @@ -"use strict"; -/** - * Copyright 2017 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Browser = exports.WEB_PERMISSION_TO_PROTOCOL_PERMISSION = void 0; -const EventEmitter_js_1 = require("../common/EventEmitter.js"); -/** - * @internal - */ -exports.WEB_PERMISSION_TO_PROTOCOL_PERMISSION = new Map([ - ['geolocation', 'geolocation'], - ['midi', 'midi'], - ['notifications', 'notifications'], - // TODO: push isn't a valid type? - // ['push', 'push'], - ['camera', 'videoCapture'], - ['microphone', 'audioCapture'], - ['background-sync', 'backgroundSync'], - ['ambient-light-sensor', 'sensors'], - ['accelerometer', 'sensors'], - ['gyroscope', 'sensors'], - ['magnetometer', 'sensors'], - ['accessibility-events', 'accessibilityEvents'], - ['clipboard-read', 'clipboardReadWrite'], - ['clipboard-write', 'clipboardReadWrite'], - ['payment-handler', 'paymentHandler'], - ['persistent-storage', 'durableStorage'], - ['idle-detection', 'idleDetection'], - // chrome-specific permissions we have. - ['midi-sysex', 'midiSysex'], -]); -/** - * A Browser is created when Puppeteer connects to a Chromium instance, either through - * {@link PuppeteerNode.launch} or {@link Puppeteer.connect}. - * - * @remarks - * - * The Browser class extends from Puppeteer's {@link EventEmitter} class and will - * emit various events which are documented in the {@link BrowserEmittedEvents} enum. - * - * @example - * An example of using a {@link Browser} to create a {@link Page}: - * - * ```ts - * import puppeteer from 'puppeteer'; - * - * (async () => { - * const browser = await puppeteer.launch(); - * const page = await browser.newPage(); - * await page.goto('https://example.com'); - * await browser.close(); - * })(); - * ``` - * - * @example - * An example of disconnecting from and reconnecting to a {@link Browser}: - * - * ```ts - * import puppeteer from 'puppeteer'; - * - * (async () => { - * const browser = await puppeteer.launch(); - * // Store the endpoint to be able to reconnect to Chromium - * const browserWSEndpoint = browser.wsEndpoint(); - * // Disconnect puppeteer from Chromium - * browser.disconnect(); - * - * // Use the endpoint to reestablish a connection - * const browser2 = await puppeteer.connect({browserWSEndpoint}); - * // Close Chromium - * await browser2.close(); - * })(); - * ``` - * - * @public - */ -class Browser extends EventEmitter_js_1.EventEmitter { - /** - * @internal - */ - constructor() { - super(); - } - /** - * @internal - */ - _attach() { - throw new Error('Not implemented'); - } - /** - * @internal - */ - _detach() { - throw new Error('Not implemented'); - } - /** - * @internal - */ - get _targets() { - throw new Error('Not implemented'); - } - /** - * The spawned browser process. Returns `null` if the browser instance was created with - * {@link Puppeteer.connect}. - */ - process() { - throw new Error('Not implemented'); - } - /** - * @internal - */ - _getIsPageTargetCallback() { - throw new Error('Not implemented'); - } - createIncognitoBrowserContext() { - throw new Error('Not implemented'); - } - /** - * Returns an array of all open browser contexts. In a newly created browser, this will - * return a single instance of {@link BrowserContext}. - */ - browserContexts() { - throw new Error('Not implemented'); - } - /** - * Returns the default browser context. The default browser context cannot be closed. - */ - defaultBrowserContext() { - throw new Error('Not implemented'); - } - _disposeContext() { - throw new Error('Not implemented'); - } - /** - * The browser websocket endpoint which can be used as an argument to - * {@link Puppeteer.connect}. - * - * @returns The Browser websocket url. - * - * @remarks - * - * The format is `ws://${host}:${port}/devtools/browser/`. - * - * You can find the `webSocketDebuggerUrl` from `http://${host}:${port}/json/version`. - * Learn more about the - * {@link https://chromedevtools.github.io/devtools-protocol | devtools protocol} and - * the {@link - * https://chromedevtools.github.io/devtools-protocol/#how-do-i-access-the-browser-target - * | browser endpoint}. - */ - wsEndpoint() { - throw new Error('Not implemented'); - } - /** - * Promise which resolves to a new {@link Page} object. The Page is created in - * a default browser context. - */ - newPage() { - throw new Error('Not implemented'); - } - _createPageInContext() { - throw new Error('Not implemented'); - } - /** - * All active targets inside the Browser. In case of multiple browser contexts, returns - * an array with all the targets in all browser contexts. - */ - targets() { - throw new Error('Not implemented'); - } - /** - * The target associated with the browser. - */ - target() { - throw new Error('Not implemented'); - } - waitForTarget() { - throw new Error('Not implemented'); - } - /** - * An array of all open pages inside the Browser. - * - * @remarks - * - * In case of multiple browser contexts, returns an array with all the pages in all - * browser contexts. Non-visible pages, such as `"background_page"`, will not be listed - * here. You can find them using {@link Target.page}. - */ - pages() { - throw new Error('Not implemented'); - } - /** - * A string representing the browser name and version. - * - * @remarks - * - * For headless Chromium, this is similar to `HeadlessChrome/61.0.3153.0`. For - * non-headless, this is similar to `Chrome/61.0.3153.0`. - * - * The format of browser.version() might change with future releases of Chromium. - */ - version() { - throw new Error('Not implemented'); - } - /** - * The browser's original user agent. Pages can override the browser user agent with - * {@link Page.setUserAgent}. - */ - userAgent() { - throw new Error('Not implemented'); - } - /** - * Closes Chromium and all of its pages (if any were opened). The {@link Browser} object - * itself is considered to be disposed and cannot be used anymore. - */ - close() { - throw new Error('Not implemented'); - } - /** - * Disconnects Puppeteer from the browser, but leaves the Chromium process running. - * After calling `disconnect`, the {@link Browser} object is considered disposed and - * cannot be used anymore. - */ - disconnect() { - throw new Error('Not implemented'); - } - /** - * Indicates that the browser is connected. - */ - isConnected() { - throw new Error('Not implemented'); - } -} -exports.Browser = Browser; -//# sourceMappingURL=Browser.js.map \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.js.map b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.js.map deleted file mode 100644 index b906cdf81872..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../../src/api/Browser.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAMH,+DAAuD;AAyCvD;;GAEG;AACU,QAAA,qCAAqC,GAAG,IAAI,GAAG,CAG1D;IACA,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,iCAAiC;IACjC,oBAAoB;IACpB,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,sBAAsB,EAAE,SAAS,CAAC;IACnC,CAAC,eAAe,EAAE,SAAS,CAAC;IAC5B,CAAC,WAAW,EAAE,SAAS,CAAC;IACxB,CAAC,cAAc,EAAE,SAAS,CAAC;IAC3B,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;IAC/C,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IACxC,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;IACzC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;IACxC,CAAC,gBAAgB,EAAE,eAAe,CAAC;IACnC,uCAAuC;IACvC,CAAC,YAAY,EAAE,WAAW,CAAC;CAC5B,CAAC,CAAC;AAmFH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAa,OAAQ,SAAQ,8BAAY;IACvC;;OAEG;IACH;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAuBD,6BAA6B;QAC3B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAMD,eAAe;QACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU;QACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAMD,oBAAoB;QAClB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAuBD,aAAa;QACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK;QACH,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;CACF;AAnOD,0BAmOC"} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.d.ts b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.d.ts deleted file mode 100644 index 7657093373a0..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.d.ts +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Copyright 2017 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { EventEmitter } from '../common/EventEmitter.js'; -import { Page } from './Page.js'; -import { Target } from '../common/Target.js'; -import type { Permission, Browser } from './Browser.js'; -/** - * BrowserContexts provide a way to operate multiple independent browser - * sessions. When a browser is launched, it has a single BrowserContext used by - * default. The method {@link Browser.newPage | Browser.newPage} creates a page - * in the default browser context. - * - * @remarks - * - * The Browser class extends from Puppeteer's {@link EventEmitter} class and - * will emit various events which are documented in the - * {@link BrowserContextEmittedEvents} enum. - * - * If a page opens another page, e.g. with a `window.open` call, the popup will - * belong to the parent page's browser context. - * - * Puppeteer allows creation of "incognito" browser contexts with - * {@link Browser.createIncognitoBrowserContext | Browser.createIncognitoBrowserContext} - * method. "Incognito" browser contexts don't write any browsing data to disk. - * - * @example - * - * ```ts - * // Create a new incognito browser context - * const context = await browser.createIncognitoBrowserContext(); - * // Create a new page inside context. - * const page = await context.newPage(); - * // ... do stuff with page ... - * await page.goto('https://example.com'); - * // Dispose context once it's no longer needed. - * await context.close(); - * ``` - * - * @public - */ -export declare class BrowserContext extends EventEmitter { - /** - * @internal - */ - constructor(); - /** - * An array of all active targets inside the browser context. - */ - targets(): Target[]; - /** - * This searches for a target in this specific browser context. - * - * @example - * An example of finding a target for a page opened via `window.open`: - * - * ```ts - * await page.evaluate(() => window.open('https://www.example.com/')); - * const newWindowTarget = await browserContext.waitForTarget( - * target => target.url() === 'https://www.example.com/' - * ); - * ``` - * - * @param predicate - A function to be run for every target - * @param options - An object of options. Accepts a timeout, - * which is the maximum wait time in milliseconds. - * Pass `0` to disable the timeout. Defaults to 30 seconds. - * @returns Promise which resolves to the first target found - * that matches the `predicate` function. - */ - waitForTarget(predicate: (x: Target) => boolean | Promise, options?: { - timeout?: number; - }): Promise; - /** - * An array of all pages inside the browser context. - * - * @returns Promise which resolves to an array of all open pages. - * Non visible pages, such as `"background_page"`, will not be listed here. - * You can find them using {@link Target.page | the target page}. - */ - pages(): Promise; - /** - * Returns whether BrowserContext is incognito. - * The default browser context is the only non-incognito browser context. - * - * @remarks - * The default browser context cannot be closed. - */ - isIncognito(): boolean; - /** - * @example - * - * ```ts - * const context = browser.defaultBrowserContext(); - * await context.overridePermissions('https://html5demos.com', [ - * 'geolocation', - * ]); - * ``` - * - * @param origin - The origin to grant permissions to, e.g. "https://example.com". - * @param permissions - An array of permissions to grant. - * All permissions that are not listed here will be automatically denied. - */ - overridePermissions(origin: string, permissions: Permission[]): Promise; - /** - * Clears all permission overrides for the browser context. - * - * @example - * - * ```ts - * const context = browser.defaultBrowserContext(); - * context.overridePermissions('https://example.com', ['clipboard-read']); - * // do stuff .. - * context.clearPermissionOverrides(); - * ``` - */ - clearPermissionOverrides(): Promise; - /** - * Creates a new page in the browser context. - */ - newPage(): Promise; - /** - * The browser this browser context belongs to. - */ - browser(): Browser; - /** - * Closes the browser context. All the targets that belong to the browser context - * will be closed. - * - * @remarks - * Only incognito browser contexts can be closed. - */ - close(): Promise; - get id(): string | undefined; -} -//# sourceMappingURL=BrowserContext.d.ts.map \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.d.ts.map b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.d.ts.map deleted file mode 100644 index abfac032b98c..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserContext.d.ts","sourceRoot":"","sources":["../../../../src/api/BrowserContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,EAAC,UAAU,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,qBAAa,cAAe,SAAQ,YAAY;IAC9C;;OAEG;;IAKH;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CACX,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EACpD,OAAO,CAAC,EAAE;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC,GAC3B,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;OAMG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIxB;;;;;;OAMG;IACH,WAAW,IAAI,OAAO;IAItB;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7E;;;;;;;;;;;OAWG;IACH,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;;;OAMG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,EAAE,IAAI,MAAM,GAAG,SAAS,CAE3B;CACF"} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.js b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.js deleted file mode 100644 index 04b45db868c5..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.js +++ /dev/null @@ -1,135 +0,0 @@ -"use strict"; -/** - * Copyright 2017 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BrowserContext = void 0; -const EventEmitter_js_1 = require("../common/EventEmitter.js"); -/** - * BrowserContexts provide a way to operate multiple independent browser - * sessions. When a browser is launched, it has a single BrowserContext used by - * default. The method {@link Browser.newPage | Browser.newPage} creates a page - * in the default browser context. - * - * @remarks - * - * The Browser class extends from Puppeteer's {@link EventEmitter} class and - * will emit various events which are documented in the - * {@link BrowserContextEmittedEvents} enum. - * - * If a page opens another page, e.g. with a `window.open` call, the popup will - * belong to the parent page's browser context. - * - * Puppeteer allows creation of "incognito" browser contexts with - * {@link Browser.createIncognitoBrowserContext | Browser.createIncognitoBrowserContext} - * method. "Incognito" browser contexts don't write any browsing data to disk. - * - * @example - * - * ```ts - * // Create a new incognito browser context - * const context = await browser.createIncognitoBrowserContext(); - * // Create a new page inside context. - * const page = await context.newPage(); - * // ... do stuff with page ... - * await page.goto('https://example.com'); - * // Dispose context once it's no longer needed. - * await context.close(); - * ``` - * - * @public - */ -class BrowserContext extends EventEmitter_js_1.EventEmitter { - /** - * @internal - */ - constructor() { - super(); - } - /** - * An array of all active targets inside the browser context. - */ - targets() { - throw new Error('Not implemented'); - } - waitForTarget() { - throw new Error('Not implemented'); - } - /** - * An array of all pages inside the browser context. - * - * @returns Promise which resolves to an array of all open pages. - * Non visible pages, such as `"background_page"`, will not be listed here. - * You can find them using {@link Target.page | the target page}. - */ - pages() { - throw new Error('Not implemented'); - } - /** - * Returns whether BrowserContext is incognito. - * The default browser context is the only non-incognito browser context. - * - * @remarks - * The default browser context cannot be closed. - */ - isIncognito() { - throw new Error('Not implemented'); - } - overridePermissions() { - throw new Error('Not implemented'); - } - /** - * Clears all permission overrides for the browser context. - * - * @example - * - * ```ts - * const context = browser.defaultBrowserContext(); - * context.overridePermissions('https://example.com', ['clipboard-read']); - * // do stuff .. - * context.clearPermissionOverrides(); - * ``` - */ - clearPermissionOverrides() { - throw new Error('Not implemented'); - } - /** - * Creates a new page in the browser context. - */ - newPage() { - throw new Error('Not implemented'); - } - /** - * The browser this browser context belongs to. - */ - browser() { - throw new Error('Not implemented'); - } - /** - * Closes the browser context. All the targets that belong to the browser context - * will be closed. - * - * @remarks - * Only incognito browser contexts can be closed. - */ - close() { - throw new Error('Not implemented'); - } - get id() { - return undefined; - } -} -exports.BrowserContext = BrowserContext; -//# sourceMappingURL=BrowserContext.js.map \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.js.map b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.js.map deleted file mode 100644 index 41b468f76432..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/BrowserContext.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"BrowserContext.js","sourceRoot":"","sources":["../../../../src/api/BrowserContext.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,+DAAuD;AAKvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,MAAa,cAAe,SAAQ,8BAAY;IAC9C;;OAEG;IACH;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IA0BD,aAAa;QACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK;QACH,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAiBD,mBAAmB;QACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,wBAAwB;QACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK;QACH,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAhID,wCAgIC"} \ No newline at end of file diff --git a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Page.d.ts b/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Page.d.ts deleted file mode 100644 index 4ea1f8cd495e..000000000000 --- a/remote/test/puppeteer/packages/puppeteer-core/lib/cjs/puppeteer/api/Page.d.ts +++ /dev/null @@ -1,2108 +0,0 @@ -/** - * Copyright 2017 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/// -/// -import { Protocol } from 'devtools-protocol'; -import type { Readable } from 'stream'; -import type { Accessibility } from '../common/Accessibility.js'; -import type { ConsoleMessage } from '../common/ConsoleMessage.js'; -import type { Coverage } from '../common/Coverage.js'; -import { Device } from '../common/Device.js'; -import type { Dialog } from '../common/Dialog.js'; -import type { ElementHandle } from '../common/ElementHandle.js'; -import { EventEmitter } from '../common/EventEmitter.js'; -import type { FileChooser } from '../common/FileChooser.js'; -import type { Frame, FrameAddScriptTagOptions, FrameAddStyleTagOptions, FrameWaitForFunctionOptions } from '../common/Frame.js'; -import type { HTTPRequest } from '../common/HTTPRequest.js'; -import type { HTTPResponse } from '../common/HTTPResponse.js'; -import type { Keyboard, Mouse, MouseButton, Touchscreen } from '../common/Input.js'; -import type { WaitForSelectorOptions } from '../common/IsolatedWorld.js'; -import type { JSHandle } from '../common/JSHandle.js'; -import type { PuppeteerLifeCycleEvent } from '../common/LifecycleWatcher.js'; -import type { Credentials, NetworkConditions } from '../common/NetworkManager.js'; -import type { PDFOptions } from '../common/PDFOptions.js'; -import type { Viewport } from '../common/PuppeteerViewport.js'; -import type { Target } from '../common/Target.js'; -import type { Tracing } from '../common/Tracing.js'; -import type { EvaluateFunc, HandleFor, NodeFor } from '../common/types.js'; -import type { WebWorker } from '../common/WebWorker.js'; -import type { Browser } from './Browser.js'; -import type { BrowserContext } from './BrowserContext.js'; -/** - * @public - */ -export interface Metrics { - Timestamp?: number; - Documents?: number; - Frames?: number; - JSEventListeners?: number; - Nodes?: number; - LayoutCount?: number; - RecalcStyleCount?: number; - LayoutDuration?: number; - RecalcStyleDuration?: number; - ScriptDuration?: number; - TaskDuration?: number; - JSHeapUsedSize?: number; - JSHeapTotalSize?: number; -} -/** - * @public - */ -export interface WaitTimeoutOptions { - /** - * Maximum wait time in milliseconds. Pass 0 to disable the timeout. - * - * The default value can be changed by using the - * {@link Page.setDefaultTimeout} method. - * - * @defaultValue `30000` - */ - timeout?: number; -} -/** - * @public - */ -export interface WaitForOptions { - /** - * Maximum wait time in milliseconds. Pass 0 to disable the timeout. - * - * The default value can be changed by using the - * {@link Page.setDefaultTimeout} or {@link Page.setDefaultNavigationTimeout} - * methods. - * - * @defaultValue `30000` - */ - timeout?: number; - waitUntil?: PuppeteerLifeCycleEvent | PuppeteerLifeCycleEvent[]; -} -/** - * @public - */ -export interface GeolocationOptions { - /** - * Latitude between `-90` and `90`. - */ - longitude: number; - /** - * Longitude between `-180` and `180`. - */ - latitude: number; - /** - * Optional non-negative accuracy value. - */ - accuracy?: number; -} -/** - * @public - */ -export interface MediaFeature { - name: string; - value: string; -} -/** - * @public - */ -export interface ScreenshotClip { - x: number; - y: number; - width: number; - height: number; - /** - * @defaultValue 1 - */ - scale?: number; -} -/** - * @public - */ -export interface ScreenshotOptions { - /** - * @defaultValue `png` - */ - type?: 'png' | 'jpeg' | 'webp'; - /** - * The file path to save the image to. The screenshot type will be inferred - * from file extension. If path is a relative path, then it is resolved - * relative to current working directory. If no path is provided, the image - * won't be saved to the disk. - */ - path?: string; - /** - * When `true`, takes a screenshot of the full page. - * @defaultValue `false` - */ - fullPage?: boolean; - /** - * An object which specifies the clipping region of the page. - */ - clip?: ScreenshotClip; - /** - * Quality of the image, between 0-100. Not applicable to `png` images. - */ - quality?: number; - /** - * Hides default white background and allows capturing screenshots with transparency. - * @defaultValue `false` - */ - omitBackground?: boolean; - /** - * Encoding of the image. - * @defaultValue `binary` - */ - encoding?: 'base64' | 'binary'; - /** - * Capture the screenshot beyond the viewport. - * @defaultValue `true` - */ - captureBeyondViewport?: boolean; - /** - * Capture the screenshot from the surface, rather than the view. - * @defaultValue `true` - */ - fromSurface?: boolean; -} -/** - * All the events that a page instance may emit. - * - * @public - */ -export declare const enum PageEmittedEvents { - /** - * Emitted when the page closes. - * @eventProperty - */ - Close = "close", - /** - * Emitted when JavaScript within the page calls one of console API methods, - * e.g. `console.log` or `console.dir`. Also emitted if the page throws an - * error or a warning. - * - * @remarks - * A `console` event provides a {@link ConsoleMessage} representing the - * console message that was logged. - * - * @example - * An example of handling `console` event: - * - * ```ts - * page.on('console', msg => { - * for (let i = 0; i < msg.args().length; ++i) - * console.log(`${i}: ${msg.args()[i]}`); - * }); - * page.evaluate(() => console.log('hello', 5, {foo: 'bar'})); - * ``` - */ - Console = "console", - /** - * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, - * `confirm` or `beforeunload`. Puppeteer can respond to the dialog via - * {@link Dialog.accept} or {@link Dialog.dismiss}. - */ - Dialog = "dialog", - /** - * Emitted when the JavaScript - * {@link https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded | DOMContentLoaded } - * event is dispatched. - */ - DOMContentLoaded = "domcontentloaded", - /** - * Emitted when the page crashes. Will contain an `Error`. - */ - Error = "error", - /** Emitted when a frame is attached. Will contain a {@link Frame}. */ - FrameAttached = "frameattached", - /** Emitted when a frame is detached. Will contain a {@link Frame}. */ - FrameDetached = "framedetached", - /** - * Emitted when a frame is navigated to a new URL. Will contain a - * {@link Frame}. - */ - FrameNavigated = "framenavigated", - /** - * Emitted when the JavaScript - * {@link https://developer.mozilla.org/en-US/docs/Web/Events/load | load} - * event is dispatched. - */ - Load = "load", - /** - * Emitted when the JavaScript code makes a call to `console.timeStamp`. For - * the list of metrics see {@link Page.metrics | page.metrics}. - * - * @remarks - * Contains an object with two properties: - * - * - `title`: the title passed to `console.timeStamp` - * - `metrics`: object containing metrics as key/value pairs. The values will - * be `number`s. - */ - Metrics = "metrics", - /** - * Emitted when an uncaught exception happens within the page. Contains an - * `Error`. - */ - PageError = "pageerror", - /** - * Emitted when the page opens a new tab or window. - * - * Contains a {@link Page} corresponding to the popup window. - * - * @example - * - * ```ts - * const [popup] = await Promise.all([ - * new Promise(resolve => page.once('popup', resolve)), - * page.click('a[target=_blank]'), - * ]); - * ``` - * - * ```ts - * const [popup] = await Promise.all([ - * new Promise(resolve => page.once('popup', resolve)), - * page.evaluate(() => window.open('https://example.com')), - * ]); - * ``` - */ - Popup = "popup", - /** - * Emitted when a page issues a request and contains a {@link HTTPRequest}. - * - * @remarks - * The object is readonly. See {@link Page.setRequestInterception} for - * intercepting and mutating requests. - */ - Request = "request", - /** - * Emitted when a request ended up loading from cache. Contains a - * {@link HTTPRequest}. - * - * @remarks - * For certain requests, might contain undefined. - * {@link https://crbug.com/750469} - */ - RequestServedFromCache = "requestservedfromcache", - /** - * Emitted when a request fails, for example by timing out. - * - * Contains a {@link HTTPRequest}. - * - * @remarks - * HTTP Error responses, such as 404 or 503, are still successful responses - * from HTTP standpoint, so request will complete with `requestfinished` event - * and not with `requestfailed`. - */ - RequestFailed = "requestfailed", - /** - * Emitted when a request finishes successfully. Contains a - * {@link HTTPRequest}. - */ - RequestFinished = "requestfinished", - /** - * Emitted when a response is received. Contains a {@link HTTPResponse}. - */ - Response = "response", - /** - * Emitted when a dedicated - * {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API | WebWorker} - * is spawned by the page. - */ - WorkerCreated = "workercreated", - /** - * Emitted when a dedicated - * {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API | WebWorker} - * is destroyed by the page. - */ - WorkerDestroyed = "workerdestroyed" -} -/** - * Denotes the objects received by callback functions for page events. - * - * See {@link PageEmittedEvents} for more detail on the events and when they are - * emitted. - * - * @public - */ -export interface PageEventObject { - close: never; - console: ConsoleMessage; - dialog: Dialog; - domcontentloaded: never; - error: Error; - frameattached: Frame; - framedetached: Frame; - framenavigated: Frame; - load: never; - metrics: { - title: string; - metrics: Metrics; - }; - pageerror: Error; - popup: Page; - request: HTTPRequest; - response: HTTPResponse; - requestfailed: HTTPRequest; - requestfinished: HTTPRequest; - requestservedfromcache: HTTPRequest; - workercreated: WebWorker; - workerdestroyed: WebWorker; -} -/** - * Page provides methods to interact with a single tab or - * {@link https://developer.chrome.com/extensions/background_pages | extension background page} - * in Chromium. - * - * :::note - * - * One Browser instance might have multiple Page instances. - * - * ::: - * - * @example - * This example creates a page, navigates it to a URL, and then saves a screenshot: - * - * ```ts - * import puppeteer from 'puppeteer'; - * - * (async () => { - * const browser = await puppeteer.launch(); - * const page = await browser.newPage(); - * await page.goto('https://example.com'); - * await page.screenshot({path: 'screenshot.png'}); - * await browser.close(); - * })(); - * ``` - * - * The Page class extends from Puppeteer's {@link EventEmitter} class and will - * emit various events which are documented in the {@link PageEmittedEvents} enum. - * - * @example - * This example logs a message for a single page `load` event: - * - * ```ts - * page.once('load', () => console.log('Page loaded!')); - * ``` - * - * To unsubscribe from events use the {@link Page.off} method: - * - * ```ts - * function logRequest(interceptedRequest) { - * console.log('A request was made:', interceptedRequest.url()); - * } - * page.on('request', logRequest); - * // Sometime later... - * page.off('request', logRequest); - * ``` - * - * @public - */ -export declare class Page extends EventEmitter { - #private; - /** - * @internal - */ - constructor(); - /** - * @returns `true` if drag events are being intercepted, `false` otherwise. - */ - isDragInterceptionEnabled(): boolean; - /** - * @returns `true` if the page has JavaScript enabled, `false` otherwise. - */ - isJavaScriptEnabled(): boolean; - /** - * Listen to page events. - * - * :::note - * - * This method exists to define event typings and handle proper wireup of - * cooperative request interception. Actual event listening and dispatching is - * delegated to {@link EventEmitter}. - * - * ::: - */ - on(eventName: K, handler: (event: PageEventObject[K]) => void): EventEmitter; - once(eventName: K, handler: (event: PageEventObject[K]) => void): EventEmitter; - off(eventName: K, handler: (event: PageEventObject[K]) => void): EventEmitter; - /** - * This method is typically coupled with an action that triggers file - * choosing. - * - * :::caution - * - * This must be called before the file chooser is launched. It will not return - * a currently active file chooser. - * - * ::: - * - * @remarks - * In non-headless Chromium, this method results in the native file picker - * dialog `not showing up` for the user. - * - * @example - * The following example clicks a button that issues a file chooser - * and then responds with `/tmp/myfile.pdf` as if a user has selected this file. - * - * ```ts - * const [fileChooser] = await Promise.all([ - * page.waitForFileChooser(), - * page.click('#upload-file-button'), - * // some button that triggers file selection - * ]); - * await fileChooser.accept(['/tmp/myfile.pdf']); - * ``` - */ - waitForFileChooser(options?: WaitTimeoutOptions): Promise; - /** - * Sets the page's geolocation. - * - * @remarks - * Consider using {@link BrowserContext.overridePermissions} to grant - * permissions for the page to read its geolocation. - * - * @example - * - * ```ts - * await page.setGeolocation({latitude: 59.95, longitude: 30.31667}); - * ``` - */ - setGeolocation(options: GeolocationOptions): Promise; - /** - * @returns A target this page was created from. - */ - target(): Target; - /** - * Get the browser the page belongs to. - */ - browser(): Browser; - /** - * Get the browser context that the page belongs to. - */ - browserContext(): BrowserContext; - /** - * @returns The page's main frame. - * - * @remarks - * Page is guaranteed to have a main frame which persists during navigations. - */ - mainFrame(): Frame; - get keyboard(): Keyboard; - get touchscreen(): Touchscreen; - get coverage(): Coverage; - get tracing(): Tracing; - get accessibility(): Accessibility; - /** - * @returns An array of all frames attached to the page. - */ - frames(): Frame[]; - /** - * @returns all of the dedicated {@link - * https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API | - * WebWorkers} associated with the page. - * - * @remarks - * This does not contain ServiceWorkers - */ - workers(): WebWorker[]; - /** - * Activating request interception enables {@link HTTPRequest.abort}, - * {@link HTTPRequest.continue} and {@link HTTPRequest.respond} methods. This - * provides the capability to modify network requests that are made by a page. - * - * Once request interception is enabled, every request will stall unless it's - * continued, responded or aborted; or completed using the browser cache. - * - * See the - * {@link https://pptr.dev/next/guides/request-interception|Request interception guide} - * for more details. - * - * @example - * An example of a naïve request interceptor that aborts all image requests: - * - * ```ts - * import puppeteer from 'puppeteer'; - * (async () => { - * const browser = await puppeteer.launch(); - * const page = await browser.newPage(); - * await page.setRequestInterception(true); - * page.on('request', interceptedRequest => { - * if ( - * interceptedRequest.url().endsWith('.png') || - * interceptedRequest.url().endsWith('.jpg') - * ) - * interceptedRequest.abort(); - * else interceptedRequest.continue(); - * }); - * await page.goto('https://example.com'); - * await browser.close(); - * })(); - * ``` - * - * @param value - Whether to enable request interception. - */ - setRequestInterception(value: boolean): Promise; - /** - * @param enabled - Whether to enable drag interception. - * - * @remarks - * Activating drag interception enables the `Input.drag`, - * methods This provides the capability to capture drag events emitted - * on the page, which can then be used to simulate drag-and-drop. - */ - setDragInterception(enabled: boolean): Promise; - /** - * Sets the network connection to offline. - * - * It does not change the parameters used in {@link Page.emulateNetworkConditions} - * - * @param enabled - When `true`, enables offline mode for the page. - */ - setOfflineMode(enabled: boolean): Promise; - /** - * This does not affect WebSockets and WebRTC PeerConnections (see - * https://crbug.com/563644). To set the page offline, you can use - * {@link Page.setOfflineMode}. - * - * A list of predefined network conditions can be used by importing - * {@link PredefinedNetworkConditions}. - * - * @example - * - * ```ts - * import {PredefinedNetworkConditions} from 'puppeteer'; - * const slow3G = PredefinedNetworkConditions['Slow 3G']; - * - * (async () => { - * const browser = await puppeteer.launch(); - * const page = await browser.newPage(); - * await page.emulateNetworkConditions(slow3G); - * await page.goto('https://www.google.com'); - * // other actions... - * await browser.close(); - * })(); - * ``` - * - * @param networkConditions - Passing `null` disables network condition - * emulation. - */ - emulateNetworkConditions(networkConditions: NetworkConditions | null): Promise; - /** - * This setting will change the default maximum navigation time for the - * following methods and related shortcuts: - * - * - {@link Page.goBack | page.goBack(options)} - * - * - {@link Page.goForward | page.goForward(options)} - * - * - {@link Page.goto | page.goto(url,options)} - * - * - {@link Page.reload | page.reload(options)} - * - * - {@link Page.setContent | page.setContent(html,options)} - * - * - {@link Page.waitForNavigation | page.waitForNavigation(options)} - * @param timeout - Maximum navigation time in milliseconds. - */ - setDefaultNavigationTimeout(timeout: number): void; - /** - * @param timeout - Maximum time in milliseconds. - */ - setDefaultTimeout(timeout: number): void; - /** - * @returns Maximum time in milliseconds. - */ - getDefaultTimeout(): number; - /** - * Runs `document.querySelector` within the page. If no element matches the - * selector, the return value resolves to `null`. - * - * @param selector - A `selector` to query page for - * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors | selector} - * to query page for. - */ - $(selector: Selector): Promise> | null>; - /** - * The method runs `document.querySelectorAll` within the page. If no elements - * match the selector, the return value resolves to `[]`. - * @remarks - * Shortcut for {@link Frame.$$ | Page.mainFrame().$$(selector) }. - * @param selector - A `selector` to query page for - */ - $$(selector: Selector): Promise>>>; - /** - * @remarks - * - * The only difference between {@link Page.evaluate | page.evaluate} and - * `page.evaluateHandle` is that `evaluateHandle` will return the value - * wrapped in an in-page object. - * - * If the function passed to `page.evaluateHandle` returns a Promise, the - * function will wait for the promise to resolve and return its value. - * - * You can pass a string instead of a function (although functions are - * recommended as they are easier to debug and use with TypeScript): - * - * @example - * - * ```ts - * const aHandle = await page.evaluateHandle('document'); - * ``` - * - * @example - * {@link JSHandle} instances can be passed as arguments to the `pageFunction`: - * - * ```ts - * const aHandle = await page.evaluateHandle(() => document.body); - * const resultHandle = await page.evaluateHandle( - * body => body.innerHTML, - * aHandle - * ); - * console.log(await resultHandle.jsonValue()); - * await resultHandle.dispose(); - * ``` - * - * Most of the time this function returns a {@link JSHandle}, - * but if `pageFunction` returns a reference to an element, - * you instead get an {@link ElementHandle} back: - * - * @example - * - * ```ts - * const button = await page.evaluateHandle(() => - * document.querySelector('button') - * ); - * // can call `click` because `button` is an `ElementHandle` - * await button.click(); - * ``` - * - * The TypeScript definitions assume that `evaluateHandle` returns - * a `JSHandle`, but if you know it's going to return an - * `ElementHandle`, pass it as the generic argument: - * - * ```ts - * const button = await page.evaluateHandle(...); - * ``` - * - * @param pageFunction - a function that is run within the page - * @param args - arguments to be passed to the pageFunction - */ - evaluateHandle = EvaluateFunc>(pageFunction: Func | string, ...args: Params): Promise>>>; - /** - * This method iterates the JavaScript heap and finds all objects with the - * given prototype. - * - * @example - * - * ```ts - * // Create a Map object - * await page.evaluate(() => (window.map = new Map())); - * // Get a handle to the Map object prototype - * const mapPrototype = await page.evaluateHandle(() => Map.prototype); - * // Query all map instances into an array - * const mapInstances = await page.queryObjects(mapPrototype); - * // Count amount of map objects in heap - * const count = await page.evaluate(maps => maps.length, mapInstances); - * await mapInstances.dispose(); - * await mapPrototype.dispose(); - * ``` - * - * @param prototypeHandle - a handle to the object prototype. - * @returns Promise which resolves to a handle to an array of objects with - * this prototype. - */ - queryObjects(prototypeHandle: JSHandle): Promise>; - /** - * This method runs `document.querySelector` within the page and passes the - * result as the first argument to the `pageFunction`. - * - * @remarks - * - * If no element is found matching `selector`, the method will throw an error. - * - * If `pageFunction` returns a promise `$eval` will wait for the promise to - * resolve and then return its value. - * - * @example - * - * ```ts - * const searchValue = await page.$eval('#search', el => el.value); - * const preloadHref = await page.$eval('link[rel=preload]', el => el.href); - * const html = await page.$eval('.main-container', el => el.outerHTML); - * ``` - * - * If you are using TypeScript, you may have to provide an explicit type to the - * first argument of the `pageFunction`. - * By default it is typed as `Element`, but you may need to provide a more - * specific sub-type: - * - * @example - * - * ```ts - * // if you don't provide HTMLInputElement here, TS will error - * // as `value` is not on `Element` - * const searchValue = await page.$eval( - * '#search', - * (el: HTMLInputElement) => el.value - * ); - * ``` - * - * The compiler should be able to infer the return type - * from the `pageFunction` you provide. If it is unable to, you can use the generic - * type to tell the compiler what return type you expect from `$eval`: - * - * @example - * - * ```ts - * // The compiler can infer the return type in this case, but if it can't - * // or if you want to be more explicit, provide it as the generic type. - * const searchValue = await page.$eval( - * '#search', - * (el: HTMLInputElement) => el.value - * ); - * ``` - * - * @param selector - the - * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors | selector} - * to query for - * @param pageFunction - the function to be evaluated in the page context. - * Will be passed the result of `document.querySelector(selector)` as its - * first argument. - * @param args - any additional arguments to pass through to `pageFunction`. - * - * @returns The result of calling `pageFunction`. If it returns an element it - * is wrapped in an {@link ElementHandle}, else the raw value itself is - * returned. - */ - $eval>, - ...Params - ]> = EvaluateFunc<[ElementHandle>, ...Params]>>(selector: Selector, pageFunction: Func | string, ...args: Params): Promise>>; - /** - * This method runs `Array.from(document.querySelectorAll(selector))` within - * the page and passes the result as the first argument to the `pageFunction`. - * - * @remarks - * If `pageFunction` returns a promise `$$eval` will wait for the promise to - * resolve and then return its value. - * - * @example - * - * ```ts - * // get the amount of divs on the page - * const divCount = await page.$$eval('div', divs => divs.length); - * - * // get the text content of all the `.options` elements: - * const options = await page.$$eval('div > span.options', options => { - * return options.map(option => option.textContent); - * }); - * ``` - * - * If you are using TypeScript, you may have to provide an explicit type to the - * first argument of the `pageFunction`. - * By default it is typed as `Element[]`, but you may need to provide a more - * specific sub-type: - * - * @example - * - * ```ts - * // if you don't provide HTMLInputElement here, TS will error - * // as `value` is not on `Element` - * await page.$$eval('input', (elements: HTMLInputElement[]) => { - * return elements.map(e => e.value); - * }); - * ``` - * - * The compiler should be able to infer the return type - * from the `pageFunction` you provide. If it is unable to, you can use the generic - * type to tell the compiler what return type you expect from `$$eval`: - * - * @example - * - * ```ts - * // The compiler can infer the return type in this case, but if it can't - * // or if you want to be more explicit, provide it as the generic type. - * const allInputValues = await page.$$eval( - * 'input', - * (elements: HTMLInputElement[]) => elements.map(e => e.textContent) - * ); - * ``` - * - * @param selector - the - * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors | selector} - * to query for - * @param pageFunction - the function to be evaluated in the page context. - * Will be passed the result of - * `Array.from(document.querySelectorAll(selector))` as its first argument. - * @param args - any additional arguments to pass through to `pageFunction`. - * - * @returns The result of calling `pageFunction`. If it returns an element it - * is wrapped in an {@link ElementHandle}, else the raw value itself is - * returned. - */ - $$eval>, - ...Params - ]> = EvaluateFunc<[Array>, ...Params]>>(selector: Selector, pageFunction: Func | string, ...args: Params): Promise>>; - /** - * The method evaluates the XPath expression relative to the page document as - * its context node. If there are no such elements, the method resolves to an - * empty array. - * - * @remarks - * Shortcut for {@link Frame.$x | Page.mainFrame().$x(expression) }. - * - * @param expression - Expression to evaluate - */ - $x(expression: string): Promise>>; - /** - * If no URLs are specified, this method returns cookies for the current page - * URL. If URLs are specified, only cookies for those URLs are returned. - */ - cookies(...urls: string[]): Promise; - deleteCookie(...cookies: Protocol.Network.DeleteCookiesRequest[]): Promise; - /** - * @example - * - * ```ts - * await page.setCookie(cookieObject1, cookieObject2); - * ``` - */ - setCookie(...cookies: Protocol.Network.CookieParam[]): Promise; - /** - * Adds a `""") - host_element = session.find.css("custom-element", all=False) - checkbox_element = session.execute_script(""" - return arguments[0].shadowRoot.querySelector("input") - """, args=(host_element,)) - is_pre_checked = session.execute_script(""" - return arguments[0].checked - """, args=(checkbox_element,)) +@pytest.mark.parametrize("click_on", ["custom_element", "checkbox_element"]) +def test_shadow_element_click(session, get_checkbox_dom, click_on): + session.url = get_checkbox_dom + custom_element = session.find.css("custom-checkbox-element", all=False) + checkbox_element = session.execute_script("return arguments[0].shadowRoot.querySelector('input')", + args=(custom_element,)) + is_pre_checked = session.execute_script("return arguments[0].checked", + args=(checkbox_element,)) assert is_pre_checked == False - response = element_click(session, locals()[click_on]) assert_success(response) - - is_post_checked = session.execute_script(""" - return arguments[0].checked - """, args=(checkbox_element,)) + is_post_checked = session.execute_script("return arguments[0].checked", + args=(checkbox_element,)) assert is_post_checked == True -@pytest.mark.parametrize("click_on", ["outer_element", "inner_element", "checkbox"]) -def test_nested_shadow_element_click(session, get_test_page, click_on): - session.url = get_test_page(nested_shadow_dom=True) +@pytest.fixture +def get_nested_shadow_checkbox_dom(inline): + return inline(""" + + + """) - outer_element = session.find.css("custom-element", all=False) - inner_element = session.execute_script(""" - return arguments[0].shadowRoot.querySelector("inner-custom-element") - """, args=(outer_element,)) - checkbox = session.execute_script(""" - return arguments[0].shadowRoot.querySelector("input") - """, args=(inner_element,)) - is_pre_checked = session.execute_script("return arguments[0].checked", args=(checkbox,)) +@pytest.mark.parametrize("click_on", ["outer_element", "inner_element", "checkbox_element"]) +def test_nested_shadow_element_click(session, get_nested_shadow_checkbox_dom, click_on): + session.url = get_nested_shadow_checkbox_dom + outer_element = session.find.css("custom-nesting-element", all=False) + inner_element = session.execute_script("return arguments[0].shadowRoot.querySelector('custom-checkbox-element')", + args=(outer_element,)) + checkbox_element = session.execute_script("return arguments[0].shadowRoot.querySelector('input')", + args=(inner_element,)) + is_pre_checked = session.execute_script("return arguments[0].checked", + args=(checkbox_element,)) assert is_pre_checked == False - click_response = element_click(session, locals()[click_on]) assert_success(click_response) - is_post_checked = session.execute_script("return arguments[0].checked", args=(checkbox,)) + is_post_checked = session.execute_script("return arguments[0].checked", + args=(checkbox_element,)) assert is_post_checked == True diff --git a/testing/web-platform/tests/webdriver/tests/element_send_keys/send_keys.py b/testing/web-platform/tests/webdriver/tests/element_send_keys/send_keys.py index 854d2af42ccc..36b27b92f931 100644 --- a/testing/web-platform/tests/webdriver/tests/element_send_keys/send_keys.py +++ b/testing/web-platform/tests/webdriver/tests/element_send_keys/send_keys.py @@ -61,15 +61,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = element_send_keys(session, element.shadow_root, "foo") - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -87,26 +78,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("input#text", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = element_send_keys(session, element, "foo") + response = element_send_keys(session, button, "foo") assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) response = element_send_keys(session, element, "foo") assert_error(response, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/execute_async_script/arguments.py b/testing/web-platform/tests/webdriver/tests/execute_async_script/arguments.py index 55fd9527aea3..9d281cd1a58b 100644 --- a/testing/web-platform/tests/webdriver/tests/execute_async_script/arguments.py +++ b/testing/web-platform/tests/webdriver/tests/execute_async_script/arguments.py @@ -54,106 +54,9 @@ def test_object(session): assert actual[1] == value -def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[element]) - assert_error(result, "no such element") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_window_handle(session, inline, closed): - session.url = inline("

") - element = session.find.css("#parent", all=False) - - new_handle = session.new_window() - - if closed: - session.window.close() - - session.window_handle = new_handle - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[element]) - assert_error(result, "no such element") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) - - frame = session.find.css("iframe", all=False) - session.switch_frame(frame) - - element = session.find.css("div", all=False) - - session.switch_frame("parent") - - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[element]) - assert_error(result, "no such element") - - -def test_no_such_shadow_root_with_unknown_shadow_root(session): - shadow_root = ShadowRoot(session, "foo") - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[shadow_root]) - assert_error(result, "no such shadow root") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_shadow_root_from_other_window_handle(session, get_test_page, closed): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - shadow_root = element.shadow_root - - new_handle = session.new_window() - - if closed: - session.window.close() - - session.window_handle = new_handle - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[shadow_root]) - assert_error(result, "no such shadow root") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_shadow_root_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) - - frame = session.find.css("iframe", all=False) - session.switch_frame(frame) - - element = session.find.css("custom-element", all=False) - shadow_root = element.shadow_root - - session.switch_frame("parent") - - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[shadow_root]) - assert_error(result, "no such shadow root") - - @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("

", "div", as_frame=as_frame) result = execute_async_script(session, "arguments[1](1);", args=[element]) assert_error(result, "stale element reference") @@ -161,12 +64,31 @@ def test_stale_element_reference(session, stale_element, as_frame): @pytest.mark.parametrize("expression, expected_type, expected_class", [ ("window.frames[0]", Frame, "Frame"), - ("document.querySelector('div')", Element, "HTMLDivElement"), - ("document.querySelector('custom-element').shadowRoot", ShadowRoot, "ShadowRoot"), + ("document.getElementById('foo')", Element, "HTMLDivElement"), + ("document.getElementById('checkbox').shadowRoot", ShadowRoot, "ShadowRoot"), ("window", Window, "Window") ], ids=["frame", "node", "shadow-root", "window"]) -def test_element_reference(session, get_test_page, expression, expected_type, expected_class): - session.url = get_test_page(as_frame=False) +def test_element_reference(session, iframe, inline, expression, expected_type, expected_class): + session.url = inline(f""" + + + +
+ {iframe("

")}""") result = execute_async_script(session, f"arguments[0]({expression})") reference = assert_success(result) diff --git a/testing/web-platform/tests/webdriver/tests/execute_async_script/execute_async.py b/testing/web-platform/tests/webdriver/tests/execute_async_script/execute_async.py index d0b9daee4155..2292aecce192 100644 --- a/testing/web-platform/tests/webdriver/tests/execute_async_script/execute_async.py +++ b/testing/web-platform/tests/webdriver/tests/execute_async_script/execute_async.py @@ -25,6 +25,52 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_element_from_other_window_handle(session, inline, closed): + session.url = inline("

") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + + if closed: + session.window.close() + + session.window_handle = new_handle + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") + + frame = session.find.css("#delete-frame", all=False) + session.switch_frame(frame) + + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() + + session.switch_frame("parent") + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[button]) + assert_error(result, "no such element") + + @pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"]) def test_abort_by_user_prompt(session, dialog_type): response = execute_async_script( diff --git a/testing/web-platform/tests/webdriver/tests/execute_async_script/node.py b/testing/web-platform/tests/webdriver/tests/execute_async_script/node.py index 53abda4b3005..1b204df33ece 100644 --- a/testing/web-platform/tests/webdriver/tests/execute_async_script/node.py +++ b/testing/web-platform/tests/webdriver/tests/execute_async_script/node.py @@ -20,33 +20,13 @@ PAGE_DATA = """ @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_detached_shadow_root(session, get_test_page, as_frame): - session.url = get_test_page(as_frame) - - if as_frame: - frame = session.find.css("iframe", all=False) - session.switch_frame(frame) - - element = session.find.css("custom-element", all=False) - - # Retrieve shadow root to add it to the node cache - shadow_root = element.shadow_root - - result = execute_async_script(session, """ - const [elem, shadowRoot, resolve] = arguments; - elem.remove(); - resolve(shadowRoot); - """, args=[element, shadow_root]) - assert_error(result, "detached shadow root") - - -@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_stale_element(session, get_test_page, as_frame): - session.url = get_test_page(as_frame=as_frame) - +def test_stale_element_reference(session, iframe, inline, as_frame): if as_frame: + session.url = inline(iframe("

")) frame = session.find.css("iframe", all=False) session.switch_frame(frame) + else: + session.url = inline("
") element = session.find.css("div", all=False) @@ -60,12 +40,31 @@ def test_stale_element(session, get_test_page, as_frame): @pytest.mark.parametrize("expression, expected_type", [ ("window.frames[0]", Frame), - ("document.querySelector('div')", Element), - ("document.querySelector('custom-element').shadowRoot", ShadowRoot), + ("document.getElementById('foo')", Element), + ("document.getElementById('checkbox').shadowRoot", ShadowRoot), ("window", Window), ], ids=["frame", "node", "shadow-root", "window"]) -def test_element_reference(session, get_test_page, expression, expected_type): - session.url = get_test_page() +def test_element_reference(session, iframe, inline, expression, expected_type): + session.url = inline(f""" + + + +
+ {iframe("

")}""") result = execute_async_script(session, f"arguments[0]({expression})") reference = assert_success(result) diff --git a/testing/web-platform/tests/webdriver/tests/execute_script/arguments.py b/testing/web-platform/tests/webdriver/tests/execute_script/arguments.py index 53c49aaa6897..5024eacf3fb6 100644 --- a/testing/web-platform/tests/webdriver/tests/execute_script/arguments.py +++ b/testing/web-platform/tests/webdriver/tests/execute_script/arguments.py @@ -46,102 +46,9 @@ def test_object(session): assert actual[1] == value -def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) - - result = execute_script(session, "return true;", args=[element]) - assert_error(result, "no such element") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_window_handle(session, inline, closed): - session.url = inline("

") - element = session.find.css("#parent", all=False) - - new_handle = session.new_window() - - if closed: - session.window.close() - - session.window_handle = new_handle - - result = execute_script(session, "return true;", args=[element]) - assert_error(result, "no such element") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) - - frame = session.find.css("iframe", all=False) - session.switch_frame(frame) - - element = session.find.css("div", all=False) - - session.switch_frame("parent") - - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - result = execute_script(session, "return true;", args=[element]) - assert_error(result, "no such element") - - -def test_no_such_shadow_root_with_unknown_shadow_root(session): - shadow_root = ShadowRoot(session, "foo") - - result = execute_script(session, "return true;", args=[shadow_root]) - assert_error(result, "no such shadow root") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_shadow_root_from_other_window_handle(session, get_test_page, closed): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - shadow_root = element.shadow_root - - new_handle = session.new_window() - - if closed: - session.window.close() - - session.window_handle = new_handle - - result = execute_script(session, "return true;", args=[shadow_root]) - assert_error(result, "no such shadow root") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_shadow_root_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) - - frame = session.find.css("iframe", all=False) - session.switch_frame(frame) - - element = session.find.css("custom-element", all=False) - shadow_root = element.shadow_root - - session.switch_frame("parent") - - if closed: - execute_script(session, "arguments[0].remove();", args=[frame]) - - result = execute_script(session, "return true;", args=[shadow_root]) - assert_error(result, "no such shadow root") - - -@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_detached_shadow_root_reference(session, stale_element, as_frame): - shadow_root = stale_element("custom-element", as_frame=as_frame, want_shadow_root=True) - - result = execute_script(session, "return 1;", args=[shadow_root]) - assert_error(result, "detached shadow root") - - @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("

", "div", as_frame=as_frame) result = execute_script(session, "return 1;", args=[element]) assert_error(result, "stale element reference") @@ -149,12 +56,31 @@ def test_stale_element_reference(session, stale_element, as_frame): @pytest.mark.parametrize("expression, expected_type, expected_class", [ ("window.frames[0]", Frame, "Frame"), - ("document.querySelector('div')", Element, "HTMLDivElement"), - ("document.querySelector('custom-element').shadowRoot", ShadowRoot, "ShadowRoot"), + ("document.getElementById('foo')", Element, "HTMLDivElement"), + ("document.getElementById('checkbox').shadowRoot", ShadowRoot, "ShadowRoot"), ("window", Window, "Window") ], ids=["frame", "node", "shadow-root", "window"]) -def test_element_reference(session, get_test_page, expression, expected_type, expected_class): - session.url = get_test_page(as_frame=False) +def test_element_reference(session, iframe, inline, expression, expected_type, expected_class): + session.url = inline(f""" + + + +
+ {iframe("

")}""") result = execute_script(session, f"return {expression}") reference = assert_success(result) @@ -162,3 +88,4 @@ def test_element_reference(session, get_test_page, expression, expected_type, ex result = execute_script(session, "return arguments[0].constructor.name", [reference]) assert_success(result, expected_class) + diff --git a/testing/web-platform/tests/webdriver/tests/execute_script/execute.py b/testing/web-platform/tests/webdriver/tests/execute_script/execute.py index adfd2836f32a..8804daf59fc1 100644 --- a/testing/web-platform/tests/webdriver/tests/execute_script/execute.py +++ b/testing/web-platform/tests/webdriver/tests/execute_script/execute.py @@ -25,6 +25,46 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + result = execute_script(session, "return true;", args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_element_from_other_window_handle(session, inline, closed): + session.url = inline("

") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + + if closed: + session.window.close() + + session.window_handle = new_handle + + result = execute_script(session, "return true;", args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") + + frame = session.find.css("#delete-frame", all=False) + session.switch_frame(frame) + + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() + + session.switch_frame("parent") + + result = execute_script(session, "return true;", args=[button]) + assert_error(result, "no such element") + + def test_opening_new_window_keeps_current_window_handle(session, inline): original_handle = session.window_handle original_handles = session.handles diff --git a/testing/web-platform/tests/webdriver/tests/execute_script/node.py b/testing/web-platform/tests/webdriver/tests/execute_script/node.py index caf85988f154..83061222b0ff 100644 --- a/testing/web-platform/tests/webdriver/tests/execute_script/node.py +++ b/testing/web-platform/tests/webdriver/tests/execute_script/node.py @@ -19,33 +19,13 @@ PAGE_DATA = """ @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_detached_shadow_root(session, get_test_page, as_frame): - session.url = get_test_page(as_frame) - - if as_frame: - frame = session.find.css("iframe", all=False) - session.switch_frame(frame) - - element = session.find.css("custom-element", all=False) - - # Retrieve shadow root to add it to the node cache - shadow_root = element.shadow_root - - result = execute_script(session, """ - const [elem, shadowRoot] = arguments; - elem.remove(); - return shadowRoot; - """, args=[element, shadow_root]) - assert_error(result, "detached shadow root") - - -@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_stale_element(session, get_test_page, as_frame): - session.url = get_test_page(as_frame) - +def test_stale_element_reference(session, iframe, inline, as_frame): if as_frame: + session.url = inline(iframe("

")) frame = session.find.css("iframe", all=False) session.switch_frame(frame) + else: + session.url = inline("
") element = session.find.css("div", all=False) @@ -59,12 +39,31 @@ def test_stale_element(session, get_test_page, as_frame): @pytest.mark.parametrize("expression, expected_type", [ ("window.frames[0]", Frame), - ("document.querySelector('div')", Element), - ("document.querySelector('custom-element').shadowRoot", ShadowRoot), + ("document.getElementById('foo')", Element), + ("document.getElementById('checkbox').shadowRoot", ShadowRoot), ("window", Window), ], ids=["frame", "node", "shadow-root", "window"]) -def test_element_reference(session, get_test_page, expression, expected_type): - session.url = get_test_page() +def test_element_reference(session, iframe, inline, expression, expected_type): + session.url = inline(f""" + + + +
+ {iframe("

")}""") result = execute_script(session, f"return {expression}") reference = assert_success(result) diff --git a/testing/web-platform/tests/webdriver/tests/find_element/find.py b/testing/web-platform/tests/webdriver/tests/find_element/find.py index 50de92554bcb..d16372d025c3 100644 --- a/testing/web-platform/tests/webdriver/tests/find_element/find.py +++ b/testing/web-platform/tests/webdriver/tests/find_element/find.py @@ -28,14 +28,35 @@ def test_no_browsing_context(session, closed_frame): @pytest.mark.parametrize( - "selector", - ["#same1", "#in-frame", "#in-shadow-root"], - ids=["not-existent", "existent-other-frame", "existent-inside-shadow-root"], + "value", + ["#same1", "#frame", "#shadow"], + ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], ) -def test_no_such_element_with_unknown_selector(session, get_test_page, selector): - session.url = get_test_page() +def test_no_such_element_with_invalid_value(session, iframe, inline, value): + session.url = inline(f""" + + +

+
+ {iframe("
")} + +
""") - response = find_element(session, "css selector", selector) + response = find_element(session, "css selector", value) assert_error(response, "no such element") diff --git a/testing/web-platform/tests/webdriver/tests/find_element_from_element/find.py b/testing/web-platform/tests/webdriver/tests/find_element_from_element/find.py index 102704cd8e31..811971aeae93 100644 --- a/testing/web-platform/tests/webdriver/tests/find_element_from_element/find.py +++ b/testing/web-platform/tests/webdriver/tests/find_element_from_element/find.py @@ -33,25 +33,37 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = find_element(session, element.shadow_root.id, "css selector", "#in-shadow-dom") - assert_error(result, "no such element") - - @pytest.mark.parametrize( - "selector", - ["#same1", "#in-frame", "#in-shadow-dom"], - ids=["not-existent", "existent-other-frame", "existent-inside-shadow-root"], + "value", + ["#doesNotExist", "#frame", "#shadow"], + ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], ) -def test_no_such_element_with_unknown_selector(session, get_test_page, selector): - session.url = get_test_page() +def test_no_such_element_with_invalid_value(session, iframe, inline, value): + session.url = inline(f""" + + +
+
+ {iframe("
")} + +
""") - from_element = session.find.css(":root", all=False) - response = find_element(session, from_element.id, "css selector", selector) + from_element = session.find.css("#top", all=False) + response = find_element(session, from_element.id, "css selector", value) assert_error(response, "no such element") @@ -79,7 +91,7 @@ def test_no_such_element_with_startnode_from_other_frame(session, iframe, inline @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("div#with-children", as_frame=as_frame) + element = stale_element("

foo

", "div", as_frame=as_frame) response = find_element(session, element.id, "css selector", "p") assert_error(response, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/conftest.py b/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/conftest.py new file mode 100644 index 000000000000..5fd5f8a065ce --- /dev/null +++ b/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/conftest.py @@ -0,0 +1,19 @@ +import pytest + +@pytest.fixture +def get_shadow_page(): + def get_shadow_page(shadow_content): + return """ + + """.format(shadow_content) + return get_shadow_page diff --git a/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/find.py b/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/find.py index 3d125a0f2157..833291da72fa 100644 --- a/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/find.py +++ b/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/find.py @@ -1,5 +1,4 @@ import pytest -from webdriver.client import ShadowRoot from webdriver.transport import Response from tests.support.asserts import assert_error, assert_same_element, assert_success @@ -13,11 +12,10 @@ def find_element(session, shadow_id, using, value): {"using": using, "value": value}) -def test_null_parameter_value(session, http, get_test_page): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root +def test_null_parameter_value(session, http, inline, get_shadow_page): + session.url = inline(get_shadow_page("")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root path = "/session/{session_id}/shadow/{shadow_id}/element".format( session_id=session.session_id, shadow_id=shadow_root.id) @@ -35,114 +33,103 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_no_such_shadow_root_with_element(session, get_test_page): - session.url = get_test_page() +def test_no_such_element_with_unknown_shadow_root(session, inline, get_shadow_page): + session.url = inline(get_shadow_page("
")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root - host = session.find.css("custom-element", all=False) - - result = find_element(session, host.id, "css selector", "input") - assert_error(result, "no such shadow root") - - -def test_no_such_shadow_root_with_unknown_shadow_root(session): - shadow_root = ShadowRoot(session, "foo") + session.url = inline("

") result = find_element(session, shadow_root.id, "css selector", "input") - assert_error(result, "no such shadow root") + assert_error(result, "no such element") -def test_no_such_shadow_root_with_shadow_root_from_other_window_handle( - session, get_test_page +@pytest.mark.parametrize( + "value", + ["#doesNotExist", "#inner"], + ids=["not-existent", "existent-inner-shadow-dom"], +) +def test_no_such_element_with_invalid_value( + session, iframe, inline, get_shadow_page, value ): - session.url = get_test_page() + session.url = inline(get_shadow_page(f""" +

+ {get_shadow_page("
")} + """)) - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + response = find_element(session, shadow_root.id, "css selector", value) + assert_error(response, "no such element") + + +def test_no_such_element_with_shadow_root_from_other_window_handle( + session, inline, get_shadow_page +): + session.url = inline(get_shadow_page("
")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root new_handle = session.new_window() session.window_handle = new_handle response = find_element(session, shadow_root.id, "css selector", "div") - assert_error(response, "no such shadow root") + assert_error(response, "no such element") -def test_no_such_shadow_root_with_shadow_root_from_other_frame( - session, get_test_page +def test_no_such_element_with_shadow_root_from_other_frame( + session, iframe, inline, get_shadow_page ): - session.url = get_test_page(as_frame=True) + session.url = inline(iframe(get_shadow_page("
"))) + session.switch_frame(0) - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root session.switch_frame("parent") response = find_element(session, shadow_root.id, "css selector", "div") - assert_error(response, "no such shadow root") + assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_detached_shadow_root(session, get_test_page, as_frame): - session.url = get_test_page(as_frame=as_frame) +def test_detached_shadow_root(session, iframe, inline, get_shadow_page, as_frame): + page = get_shadow_page("
") if as_frame: + session.url = inline(iframe(page)) frame = session.find.css("iframe", all=False) session.switch_frame(frame) + else: + session.url = inline(page) - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root - session.execute_script("arguments[0].remove();", args=[host]) + session.execute_script("arguments[0].remove();", args=[custom_element]) response = find_element(session, shadow_root.id, "css selector", "input") assert_error(response, "detached shadow root") -@pytest.mark.parametrize( - "selector", - ["#same1", "#in-frame", "#with-children"], - ids=["not-existent", "existent-other-frame", "existent-outside-shadow-root"], -) -def test_no_such_element_with_unknown_selector(session, get_test_page, selector): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - response = find_element(session, shadow_root.id, "css selector", selector) - assert_error(response, "no such element") - - @pytest.mark.parametrize("using", ["a", True, None, 1, [], {}]) -def test_invalid_using_argument(session, get_test_page, using): - session.url = get_test_page() - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - response = find_element(session, shadow_root.id, using, "input") +def test_invalid_using_argument(session, using): + response = find_element(session, "notReal", using, "value") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) -def test_invalid_selector_argument(session, get_test_page, value): - session.url = get_test_page() - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - response = find_element(session, shadow_root.id, "css selector", value) +def test_invalid_selector_argument(session, value): + response = find_element(session, "notReal", "css selector", value) assert_error(response, "invalid argument") -def test_found_element_equivalence(session, get_test_page): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - expected = session.execute_script(""" - return arguments[0].shadowRoot.querySelector('input') - """, args=(host,)) - +def test_found_element_equivalence(session, inline, get_shadow_page): + session.url = inline(get_shadow_page("
")) + custom_element = session.find.css("custom-shadow-element", all=False) + expected = session.execute_script("return arguments[0].shadowRoot.querySelector('input')", + args=(custom_element,)) + shadow_root = custom_element.shadow_root response = find_element(session, shadow_root.id, "css selector", "input") value = assert_success(response) assert_same_element(session, value, expected) @@ -154,16 +141,12 @@ def test_found_element_equivalence(session, get_test_page): ("partial link text", "link text"), ("tag name", "a"), ("xpath", "//a")]) -def test_find_element(session, get_test_page, using, value): - session.url = get_test_page(shadow_doc="") - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - expected = session.execute_script(""" - return arguments[0].shadowRoot.querySelector('#linkText') - """, args=(host,)) - +def test_find_element(session, inline, get_shadow_page, using, value): + session.url = inline(get_shadow_page("")) + custom_element = session.find.css("custom-shadow-element", all=False) + expected = session.execute_script("return arguments[0].shadowRoot.querySelector('#linkText')", + args=(custom_element,)) + shadow_root = custom_element.shadow_root response = find_element(session, shadow_root.id, using, value) value = assert_success(response) assert_same_element(session, value, expected) @@ -177,15 +160,12 @@ def test_find_element(session, get_test_page, using, value): ("LINK TEXT", "LINK TEXT"), ("link text", "LINK TEXT"), ]) -def test_find_element_link_text(session, get_test_page, document, value): - session.url = get_test_page(shadow_doc=f"
{document}
") - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - expected = session.execute_script(""" - return arguments[0].shadowRoot.querySelectorAll('a')[0] - """, args=(host,)) +def test_find_element_link_text(session, inline, get_shadow_page, document, value): + session.url = inline(get_shadow_page("
{0}
".format(document))) + custom_element = session.find.css("custom-shadow-element", all=False) + expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[0]", + args=(custom_element,)) + shadow_root = custom_element.shadow_root response = find_element(session, shadow_root.id, "link text", value) value = assert_success(response) @@ -201,15 +181,12 @@ def test_find_element_link_text(session, get_test_page, document, value): ("PARTIAL LINK TEXT", "LINK"), ("partial link text", "LINK"), ]) -def test_find_element_partial_link_text(session, get_test_page, document, value): - session.url = get_test_page(shadow_doc=f"
{document}
") - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - expected = session.execute_script(""" - return arguments[0].shadowRoot.querySelectorAll('a')[0] - """, args=(host,)) +def test_find_element_partial_link_text(session, inline, get_shadow_page, document, value): + session.url = inline(get_shadow_page("
{0}
".format(document))) + custom_element = session.find.css("custom-shadow-element", all=False) + expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[0]", + args=(custom_element,)) + shadow_root = custom_element.shadow_root response = find_element(session, shadow_root.id, "partial link text", value) value = assert_success(response) diff --git a/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py b/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py index 3e3381e7853b..ee79ed79f479 100644 --- a/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py +++ b/testing/web-platform/tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py @@ -19,20 +19,17 @@ def find_element(session, shadow_id, using, value): @pytest.fixture -def check_user_prompt_closed_without_exception(session, create_dialog, get_test_page): +def check_user_prompt_closed_without_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_closed_without_exception(dialog_type, retval): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - inner_element = session.execute_script(""" - return arguments[0].shadowRoot.querySelector('input') - """, args=(host,)) + session.url = inline(get_shadow_page("

bar

")) + outer_element = session.find.css("custom-shadow-element", all=False) + shadow_root = outer_element.shadow_root + inner_element = session.execute_script("return arguments[0].shadowRoot.querySelector('p')", + args=(outer_element,)) create_dialog(dialog_type, text=dialog_type) - response = find_element(session, shadow_root.id, "css selector", "input") + response = find_element(session, shadow_root.id, "css selector", "p") value = assert_success(response) assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval) @@ -43,16 +40,15 @@ def check_user_prompt_closed_without_exception(session, create_dialog, get_test_ @pytest.fixture -def check_user_prompt_closed_with_exception(session, create_dialog, get_test_page): +def check_user_prompt_closed_with_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_closed_with_exception(dialog_type, retval): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root + session.url = inline(get_shadow_page("

bar

")) + outer_element = session.find.css("custom-shadow-element", all=False) + shadow_root = outer_element.shadow_root create_dialog(dialog_type, text=dialog_type) - response = find_element(session, shadow_root.id, "css selector", "input") + response = find_element(session, shadow_root.id, "css selector", "p") assert_error(response, "unexpected alert open") assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval) @@ -61,16 +57,15 @@ def check_user_prompt_closed_with_exception(session, create_dialog, get_test_pag @pytest.fixture -def check_user_prompt_not_closed_but_exception(session, create_dialog, get_test_page): +def check_user_prompt_not_closed_but_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_not_closed_but_exception(dialog_type): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root + session.url = inline(get_shadow_page("

bar

")) + outer_element = session.find.css("custom-shadow-element", all=False) + shadow_root = outer_element.shadow_root create_dialog(dialog_type, text=dialog_type) - response = find_element(session, shadow_root.id, "css selector", "input") + response = find_element(session, shadow_root.id, "css selector", "p") assert_error(response, "unexpected alert open") assert session.alert.text == dialog_type diff --git a/testing/web-platform/tests/webdriver/tests/find_elements/find.py b/testing/web-platform/tests/webdriver/tests/find_elements/find.py index 0d9ce21186c9..6f1283bf351f 100644 --- a/testing/web-platform/tests/webdriver/tests/find_elements/find.py +++ b/testing/web-platform/tests/webdriver/tests/find_elements/find.py @@ -28,16 +28,37 @@ def test_no_browsing_context(session, closed_frame): @pytest.mark.parametrize( - "selector", - ["#same1", "#in-frame", "#in-shadow-dom"], - ids=["not-existent", "existent-other-frame", "existent-inside-shadow-root"], + "value", + ["#same1", "#frame", "#shadow"], + ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], ) -def test_no_elements_with_unknown_selector(session, get_test_page,selector): - session.url = get_test_page() +def test_no_such_element_with_invalid_value(session, iframe, inline, value): + session.url = inline(f""" + + +
+
+ {iframe("
")} + +
""") - response = find_elements(session, "css selector", selector) - elements = assert_success(response) - assert elements == [] + response = find_elements(session, "css selector", value) + assert_success(response) + assert response.body["value"] == [] @pytest.mark.parametrize("using", ["a", True, None, 1, [], {}]) diff --git a/testing/web-platform/tests/webdriver/tests/find_elements_from_element/find.py b/testing/web-platform/tests/webdriver/tests/find_elements_from_element/find.py index fc898bc95afe..0e3bf2fd11cf 100644 --- a/testing/web-platform/tests/webdriver/tests/find_elements_from_element/find.py +++ b/testing/web-platform/tests/webdriver/tests/find_elements_from_element/find.py @@ -33,27 +33,38 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = find_elements(session, element.shadow_root.id, "css selector", "#in-shadow-dom") - assert_error(result, "no such element") - - @pytest.mark.parametrize( - "selector", - ["#same1", "#in-frame", "#in-shadow-dom"], - ids=["not-existent", "existent-other-frame", "existent-inside-shadow-root"], + "value", + ["#same1", "#frame", "#shadow"], + ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], ) -def test_no_elements_with_unknown_selector(session, get_test_page,selector): - session.url = get_test_page() +def test_no_such_element_with_invalid_value(session, iframe, inline, value): + session.url = inline(f""" + + +
+
+ {iframe("
")} + +
""") - element = session.find.css(":root", all=False) - response = find_elements(session, element.id, "css selector", selector) - elements = assert_success(response) - assert elements == [] + element = session.find.css("#top", all=False) + response = find_elements(session, element.id, "css selector", value) + assert response.body["value"] == [] def test_no_such_element_with_startnode_from_other_window_handle(session, inline): @@ -80,7 +91,7 @@ def test_no_such_element_with_startnode_from_other_frame(session, iframe, inline @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("div#with-children", as_frame=as_frame) + element = stale_element("

foo

", "div", as_frame=as_frame) response = find_elements(session, element.id, "css selector", "p") assert_error(response, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/conftest.py b/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/conftest.py new file mode 100644 index 000000000000..5fd5f8a065ce --- /dev/null +++ b/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/conftest.py @@ -0,0 +1,19 @@ +import pytest + +@pytest.fixture +def get_shadow_page(): + def get_shadow_page(shadow_content): + return """ + + """.format(shadow_content) + return get_shadow_page diff --git a/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/find.py b/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/find.py index 7f2685b3b556..c21f08112584 100644 --- a/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/find.py +++ b/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/find.py @@ -1,5 +1,4 @@ import pytest -from webdriver.client import ShadowRoot from webdriver.transport import Response from tests.support.asserts import assert_error, assert_same_element, assert_success @@ -13,11 +12,10 @@ def find_elements(session, shadow_id, using, value): {"using": using, "value": value}) -def test_null_parameter_value(session, http, get_test_page): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root +def test_null_parameter_value(session, http, get_shadow_page): + session.url = get_shadow_page("") + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root path = "/session/{session_id}/shadow/{shadow_id}/elements".format( session_id=session.session_id, shadow_id=shadow_root.id) @@ -35,116 +33,104 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_no_such_shadow_root_with_element(session, get_test_page): - session.url = get_test_page() +def test_no_such_element_with_unknown_shadow_root(session, inline, get_shadow_page): + session.url = inline(get_shadow_page("
")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root - host = session.find.css("custom-element", all=False) - - result = find_elements(session, host.id, "css selector", "input") - assert_error(result, "no such shadow root") - - -def test_no_such_shadow_root_with_unknown_shadow_root(session): - shadow_root = ShadowRoot(session, "foo") + session.url = inline("

") result = find_elements(session, shadow_root.id, "css selector", "input") - assert_error(result, "no such shadow root") + assert_error(result, "no such element") -def test_no_such_shadow_root_with_shadow_root_from_other_window_handle( - session, get_test_page +@pytest.mark.parametrize( + "value", + ["#doesNotExist", "#inner"], + ids=["not-existent", "existent-inner-shadow-dom"], +) +def test_no_such_element_with_invalid_value( + session, iframe, inline, get_shadow_page, value ): - session.url = get_test_page() + session.url = inline(get_shadow_page(f""" +

+ {get_shadow_page("
")} + """)) - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + + response = find_elements(session, shadow_root.id, "css selector", value) + assert_error(response, "no such element") + + +def test_no_such_element_with_shadow_root_from_other_window_handle( + session, inline, get_shadow_page +): + session.url = inline(get_shadow_page("
")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root new_handle = session.new_window() session.window_handle = new_handle response = find_elements(session, shadow_root.id, "css selector", "div") - assert_error(response, "no such shadow root") + assert_error(response, "no such element") -def test_no_such_shadow_root_with_shadow_root_from_other_frame( - session, get_test_page +def test_no_such_element_with_shadow_root_from_other_frame( + session, iframe, inline, get_shadow_page ): - session.url = get_test_page(as_frame=True) + session.url = inline(iframe(get_shadow_page("
"))) + session.switch_frame(0) - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root session.switch_frame("parent") response = find_elements(session, shadow_root.id, "css selector", "div") - assert_error(response, "no such shadow root") + assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_detached_shadow_root(session, get_test_page, as_frame): - session.url = get_test_page(as_frame=as_frame) +def test_detached_shadow_root(session, iframe, inline, get_shadow_page, as_frame): + page = get_shadow_page("
") if as_frame: + session.url = inline(iframe(page)) frame = session.find.css("iframe", all=False) session.switch_frame(frame) + else: + session.url = inline(page) - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root - session.execute_script("arguments[0].remove();", args=[host]) + session.execute_script("arguments[0].remove();", args=[custom_element]) response = find_elements(session, shadow_root.id, "css selector", "input") assert_error(response, "detached shadow root") -@pytest.mark.parametrize( - "selector", - ["#same1", "#in-frame", "#with-children"], - ids=["not-existent", "existent-other-frame", "existent-outside-shadow-root"], -) -def test_no_elements_with_unknown_selector(session, get_test_page,selector): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - response = find_elements(session, shadow_root.id, "css selector", selector) - elements = assert_success(response) - assert elements == [] - - @pytest.mark.parametrize("using", [("a"), (True), (None), (1), ([]), ({})]) -def test_invalid_using_argument(session, get_test_page, using): - session.url = get_test_page() - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - response = find_elements(session, shadow_root.id, using, "input") +def test_invalid_using_argument(session, using): + # Step 1 - 2 + response = find_elements(session, "notReal", using, "value") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) -def test_invalid_selector_argument(session, get_test_page, value): - session.url = get_test_page() - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - response = find_elements(session, shadow_root.id, "css selector", value) +def test_invalid_selector_argument(session, value): + # Step 3 - 4 + response = find_elements(session, "notReal", "css selector", value) assert_error(response, "invalid argument") -def test_find_elements_equivalence(session, get_test_page): - session.url = get_test_page( - shadow_doc="
") - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - expected = session.execute_script(""" - return arguments[0].shadowRoot.querySelector('input') - """, args=(host,)) - +def test_find_elements_equivalence(session, inline, get_shadow_page): + session.url = inline(get_shadow_page( + "
")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root response = find_elements(session, shadow_root.id, "css selector", "input") assert_success(response) @@ -155,12 +141,11 @@ def test_find_elements_equivalence(session, get_test_page): ("partial link text", "link text"), ("tag name", "a"), ("xpath", "//a")]) -def test_find_elements(session, get_test_page, using, value): - session.url = get_test_page(shadow_doc="") - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - +def test_find_elements(session, inline, get_shadow_page, using, value): + # Step 8 - 9 + session.url = inline(get_shadow_page("")) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root response = find_elements(session, shadow_root.id, using, value) assert_success(response) @@ -173,22 +158,22 @@ def test_find_elements(session, get_test_page, using, value): ("LINK TEXT", "LINK TEXT"), ("link text", "LINK TEXT"), ]) -def test_find_elements_link_text(session, get_test_page, document, value): - session.url = get_test_page(shadow_doc=f"
not wanted
{document}
") - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - expected = session.execute_script(""" - return arguments[0].shadowRoot.querySelectorAll('a')[1] - """, args=(host,)) +def test_find_elements_link_text(session, inline, get_shadow_page, document, value): + # Step 8 - 9 + session.url = inline(get_shadow_page( + "".format(document))) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[1]", + args=(custom_element,)) response = find_elements(session, shadow_root.id, "link text", value) value = assert_success(response) assert isinstance(value, list) assert len(value) == 1 - assert_same_element(session, value[0], expected) + found_element = value[0] + assert_same_element(session, found_element, expected) @pytest.mark.parametrize("document,value", [ @@ -200,19 +185,19 @@ def test_find_elements_link_text(session, get_test_page, document, value): ("PARTIAL LINK TEXT", "LINK"), ("partial link text", "LINK"), ]) -def test_find_elements_partial_link_text(session, get_test_page, document, value): - session.url = get_test_page(shadow_doc=f"
not wanted
{document}
") - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - - expected = session.execute_script(""" - return arguments[0].shadowRoot.querySelectorAll('a')[1] - """, args=(host,)) +def test_find_elements_partial_link_text(session, inline, get_shadow_page, document, value): + # Step 8 - 9 + session.url = inline(get_shadow_page( + "".format(document))) + custom_element = session.find.css("custom-shadow-element", all=False) + shadow_root = custom_element.shadow_root + expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[1]", + args=(custom_element,)) response = find_elements(session, shadow_root.id, "partial link text", value) value = assert_success(response) assert isinstance(value, list) assert len(value) == 1 - assert_same_element(session, value[0], expected) + found_element = value[0] + assert_same_element(session, found_element, expected) diff --git a/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py b/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py index 45986ad6dab9..8ec381b3870d 100644 --- a/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py +++ b/testing/web-platform/tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py @@ -19,19 +19,17 @@ def find_elements(session, shadow_id, using, value): @pytest.fixture -def check_user_prompt_closed_without_exception(session, create_dialog, get_test_page): +def check_user_prompt_closed_without_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_closed_without_exception(dialog_type, retval): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root - inner_element = session.execute_script(""" - return arguments[0].shadowRoot.querySelector("input") - """, args=(host,)) + session.url = inline(get_shadow_page("

bar

")) + outer_element = session.find.css("custom-shadow-element", all=False) + shadow_root = outer_element.shadow_root + inner_element = session.execute_script("return arguments[0].shadowRoot.querySelector('p')", + args=(outer_element,)) create_dialog(dialog_type, text=dialog_type) - response = find_elements(session, shadow_root.id, "css selector", "input") + response = find_elements(session, shadow_root.id, "css selector", "p") value = assert_success(response) assert isinstance(value, list) assert len(value) == 1 @@ -44,16 +42,15 @@ def check_user_prompt_closed_without_exception(session, create_dialog, get_test_ @pytest.fixture -def check_user_prompt_closed_with_exception(session, create_dialog, get_test_page): +def check_user_prompt_closed_with_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_closed_with_exception(dialog_type, retval): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root + session.url = inline(get_shadow_page("

bar

")) + outer_element = session.find.css("custom-shadow-element", all=False) + shadow_root = outer_element.shadow_root create_dialog(dialog_type, text=dialog_type) - response = find_elements(session, shadow_root.id, "css selector", "input") + response = find_elements(session, shadow_root.id, "css selector", "p") assert_error(response, "unexpected alert open") assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval) @@ -62,16 +59,15 @@ def check_user_prompt_closed_with_exception(session, create_dialog, get_test_pag @pytest.fixture -def check_user_prompt_not_closed_but_exception(session, create_dialog, get_test_page): +def check_user_prompt_not_closed_but_exception(session, create_dialog, inline, get_shadow_page): def check_user_prompt_not_closed_but_exception(dialog_type): - session.url = get_test_page() - - host = session.find.css("custom-element", all=False) - shadow_root = host.shadow_root + session.url = inline(get_shadow_page("

bar

")) + outer_element = session.find.css("custom-shadow-element", all=False) + shadow_root = outer_element.shadow_root create_dialog(dialog_type, text=dialog_type) - response = find_elements(session, shadow_root.id, "css selector", "input") + response = find_elements(session, shadow_root.id, "css selector", "p") assert_error(response, "unexpected alert open") assert session.alert.text == dialog_type diff --git a/testing/web-platform/tests/webdriver/tests/get_computed_label/get.py b/testing/web-platform/tests/webdriver/tests/get_computed_label/get.py index 8124fee0c9de..32b4ce33bbe4 100644 --- a/testing/web-platform/tests/webdriver/tests/get_computed_label/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_computed_label/get.py @@ -25,15 +25,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(result, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = get_computed_label(session, element.shadow_root.id) - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -51,26 +42,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - result = get_computed_label(session, element.id) + result = get_computed_label(session, button.id) assert_error(result, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) response = get_computed_label(session, element.id) assert_error(response, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/get_computed_role/get.py b/testing/web-platform/tests/webdriver/tests/get_computed_role/get.py index dcfe753f0dca..1e61799dc946 100644 --- a/testing/web-platform/tests/webdriver/tests/get_computed_role/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_computed_role/get.py @@ -25,15 +25,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(result, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = get_computed_role(session, element.shadow_root.id) - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -51,26 +42,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - result = get_computed_role(session, element.id) + result = get_computed_role(session, button.id) assert_error(result, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) response = get_computed_role(session, element.id) assert_error(response, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/get_element_attribute/get.py b/testing/web-platform/tests/webdriver/tests/get_element_attribute/get.py index e23d7e4d5abb..87fd5f3333cc 100644 --- a/testing/web-platform/tests/webdriver/tests/get_element_attribute/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_element_attribute/get.py @@ -5,11 +5,11 @@ from webdriver import Element from tests.support.asserts import assert_error, assert_success -def get_element_attribute(session, element_id, attr): +def get_element_attribute(session, element, attr): return session.transport.send( "GET", "session/{session_id}/element/{element_id}/attribute/{attr}".format( session_id=session.session_id, - element_id=element_id, + element_id=element, attr=attr)) @@ -36,15 +36,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = get_element_attribute(session, element.shadow_root.id, "id") - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -62,26 +53,24 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = get_element_attribute(session, element.id, "id") + response = get_element_attribute(session, button.id, "id") assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) result = get_element_attribute(session, element.id, "id") assert_error(result, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/get_element_css_value/get.py b/testing/web-platform/tests/webdriver/tests/get_element_css_value/get.py index f9797c2cff51..d178fc25f185 100644 --- a/testing/web-platform/tests/webdriver/tests/get_element_css_value/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_element_css_value/get.py @@ -40,15 +40,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = get_element_css_value(session, element.shadow_root.id, "display") - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -66,26 +57,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = get_element_css_value(session, element.id, "display") + response = get_element_css_value(session, button.id, "display") assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) result = get_element_css_value(session, element.id, "display") assert_error(result, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/get_element_property/get.py b/testing/web-platform/tests/webdriver/tests/get_element_property/get.py index 072375804e81..7d9d7083acc3 100644 --- a/testing/web-platform/tests/webdriver/tests/get_element_property/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_element_property/get.py @@ -37,15 +37,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = get_element_property(session, element.shadow_root.id, "id") - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -63,26 +54,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = get_element_property(session, element.id, "id") + response = get_element_property(session, button.id, "id") assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) result = get_element_property(session, element.id, "id") assert_error(result, "stale element reference") @@ -160,18 +150,32 @@ def test_primitives_set_by_execute_script(session, inline, js_primitive, py_prim ("shadowRoot", ShadowRoot), ("window", Window), ]) -def test_web_reference(session, get_test_page, js_web_reference, py_web_reference): - session.url = get_test_page() +def test_web_reference(session, inline, js_web_reference, py_web_reference): + session.url = inline(""" +

+

+ + - session.execute_script(""" - const parent = document.querySelector("body"); - parent.__element = document.querySelector("div"); - parent.__frame = document.querySelector("iframe").contentWindow; - parent.__shadowRoot = document.querySelector("custom-element").shadowRoot; - parent.__window = document.defaultView; + """) - elem = session.find.css("body", all=False) + elem = session.find.css("#parent", all=False) response = get_element_property(session, elem.id, "__{}".format(js_web_reference)) value = assert_success(response) diff --git a/testing/web-platform/tests/webdriver/tests/get_element_rect/get.py b/testing/web-platform/tests/webdriver/tests/get_element_rect/get.py index 7f87b44e7e93..113bc8383835 100644 --- a/testing/web-platform/tests/webdriver/tests/get_element_rect/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_element_rect/get.py @@ -40,15 +40,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = get_element_rect(session, element.shadow_root.id) - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -66,26 +57,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = get_element_rect(session, element.id) + response = get_element_rect(session, button.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) result = get_element_rect(session, element.id) assert_error(result, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/conftest.py b/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/conftest.py new file mode 100644 index 000000000000..4ca71025d691 --- /dev/null +++ b/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/conftest.py @@ -0,0 +1,22 @@ +import pytest + +@pytest.fixture +def checkbox_dom(inline): + return """ + + + """ diff --git a/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/get.py b/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/get.py index 61d0d0081004..55b2089a6708 100644 --- a/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/get.py @@ -53,46 +53,40 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = get_shadow_root(session, element.id) + response = get_shadow_root(session, button.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("custom-element", as_frame=as_frame) +def test_stale_element_reference(session, stale_element, checkbox_dom, as_frame): + element = stale_element(checkbox_dom, "custom-checkbox-element", as_frame=as_frame) result = get_shadow_root(session, element.id) assert_error(result, "stale element reference") -def test_get_shadow_root(session, get_test_page): - session.url = get_test_page() - - host_element = session.find.css("custom-element", all=False) - - response = get_shadow_root(session, host_element.id) +def test_get_shadow_root(session, inline, checkbox_dom): + session.url = inline(checkbox_dom) + expected = session.execute_script( + "return document.querySelector('custom-checkbox-element').shadowRoot.host") + custom_element = session.find.css("custom-checkbox-element", all=False) + response = get_shadow_root(session, custom_element.id) value = assert_success(response) assert isinstance(value, dict) assert "shadow-6066-11e4-a52e-4f735466cecf" in value - - expected_host = session.execute_script(""" - return arguments[0].shadowRoot.host - """, args=(host_element,)) - - assert_same_element(session, host_element, expected_host) + assert_same_element(session, custom_element, expected) def test_no_shadow_root(session, inline): diff --git a/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/user_prompts.py b/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/user_prompts.py index 5b991bac26b6..b94650a6f0b7 100644 --- a/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/user_prompts.py +++ b/testing/web-platform/tests/webdriver/tests/get_element_shadow_root/user_prompts.py @@ -13,10 +13,10 @@ def get_shadow_root(session, element_id): @pytest.fixture -def check_user_prompt_closed_without_exception(session, create_dialog, get_test_page): +def check_user_prompt_closed_without_exception(session, create_dialog, inline, checkbox_dom): def check_user_prompt_closed_without_exception(dialog_type, retval): - session.url = get_test_page() - element = session.find.css("custom-element", all=False) + session.url = inline(checkbox_dom) + element = session.find.css("custom-checkbox-element", all=False) create_dialog(dialog_type, text=dialog_type) @@ -30,10 +30,10 @@ def check_user_prompt_closed_without_exception(session, create_dialog, get_test_ @pytest.fixture -def check_user_prompt_closed_with_exception(session, create_dialog, get_test_page): +def check_user_prompt_closed_with_exception(session, create_dialog, inline, checkbox_dom): def check_user_prompt_closed_with_exception(dialog_type, retval): - session.url = get_test_page() - element = session.find.css("custom-element", all=False) + session.url = inline(checkbox_dom) + element = session.find.css("custom-checkbox-element", all=False) create_dialog(dialog_type, text=dialog_type) @@ -46,10 +46,10 @@ def check_user_prompt_closed_with_exception(session, create_dialog, get_test_pag @pytest.fixture -def check_user_prompt_not_closed_but_exception(session, create_dialog, get_test_page): +def check_user_prompt_not_closed_but_exception(session, create_dialog, inline, checkbox_dom): def check_user_prompt_not_closed_but_exception(dialog_type): - session.url = get_test_page() - element = session.find.css("custom-element", all=False) + session.url = inline(checkbox_dom) + element = session.find.css("custom-checkbox-element", all=False) create_dialog(dialog_type, text=dialog_type) diff --git a/testing/web-platform/tests/webdriver/tests/get_element_tag_name/get.py b/testing/web-platform/tests/webdriver/tests/get_element_tag_name/get.py index 1bf19309e458..bdfebc2ce79d 100644 --- a/testing/web-platform/tests/webdriver/tests/get_element_tag_name/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_element_tag_name/get.py @@ -36,15 +36,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = get_element_tag_name(session, element.shadow_root.id) - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -62,26 +53,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = get_element_tag_name(session, element.id) + response = get_element_tag_name(session, button.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) result = get_element_tag_name(session, element.id) assert_error(result, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/get_element_text/get.py b/testing/web-platform/tests/webdriver/tests/get_element_text/get.py index aa36c487c809..b2c8a09f8c46 100644 --- a/testing/web-platform/tests/webdriver/tests/get_element_text/get.py +++ b/testing/web-platform/tests/webdriver/tests/get_element_text/get.py @@ -36,15 +36,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = get_element_text(session, element.shadow_root.id) - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -62,26 +53,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = get_element_text(session, element.id) + response = get_element_text(session, button.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) response = get_element_text(session, element.id) assert_error(response, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/is_element_enabled/enabled.py b/testing/web-platform/tests/webdriver/tests/is_element_enabled/enabled.py index 34e5cce4197c..ef9106cce86a 100644 --- a/testing/web-platform/tests/webdriver/tests/is_element_enabled/enabled.py +++ b/testing/web-platform/tests/webdriver/tests/is_element_enabled/enabled.py @@ -39,15 +39,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = is_element_enabled(session, element.shadow_root.id) - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -65,26 +56,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("input#text", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = is_element_enabled(session, element.id) + response = is_element_enabled(session, button.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) result = is_element_enabled(session, element.id) assert_error(result, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/is_element_selected/selected.py b/testing/web-platform/tests/webdriver/tests/is_element_selected/selected.py index b119705e7dd1..a57737590c56 100644 --- a/testing/web-platform/tests/webdriver/tests/is_element_selected/selected.py +++ b/testing/web-platform/tests/webdriver/tests/is_element_selected/selected.py @@ -55,15 +55,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = is_element_selected(session, element.shadow_root.id) - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -81,26 +72,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("input#text", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = is_element_selected(session, element.id) + response = is_element_selected(session, button.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, check_doc, as_frame): - element = stale_element("input#checkbox", as_frame=as_frame) + element = stale_element(check_doc, "#checked", as_frame=as_frame) result = is_element_selected(session, element.id) assert_error(result, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_mouse.py b/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_mouse.py index 1b739a75aa07..bbf2dde993b2 100644 --- a/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_mouse.py +++ b/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_mouse.py @@ -28,7 +28,7 @@ def test_no_browsing_context(session, closed_frame, mouse_chain): @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, mouse_chain, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) with pytest.raises(StaleElementReferenceException): mouse_chain.click(element=element).perform() diff --git a/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_pen.py b/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_pen.py index 29d40276b25b..6637f0315314 100644 --- a/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_pen.py +++ b/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_pen.py @@ -25,7 +25,7 @@ def test_no_browsing_context(session, closed_frame, pen_chain): @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, pen_chain, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) with pytest.raises(StaleElementReferenceException): pen_chain.click(element=element).perform() diff --git a/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_touch.py b/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_touch.py index 03f32af2b48c..9e76273cbbba 100644 --- a/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_touch.py +++ b/testing/web-platform/tests/webdriver/tests/perform_actions/pointer_touch.py @@ -24,7 +24,7 @@ def test_no_browsing_context(session, closed_frame, touch_chain): @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, touch_chain, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) with pytest.raises(StaleElementReferenceException): touch_chain.click(element=element).perform() diff --git a/testing/web-platform/tests/webdriver/tests/support/fixtures_http.py b/testing/web-platform/tests/webdriver/tests/support/fixtures_http.py index 748fe214a2b3..42a74ba41fbc 100644 --- a/testing/web-platform/tests/webdriver/tests/support/fixtures_http.py +++ b/testing/web-platform/tests/webdriver/tests/support/fixtures_http.py @@ -153,114 +153,24 @@ def create_frame(session): @pytest.fixture -def stale_element(current_session, get_test_page): +def stale_element(current_session, iframe, inline): """Create a stale element reference - The document will be loaded in the top-level or child browsing context. - Before the requested element or its shadow root is returned the element - is removed from the document's DOM. + The given document will be loaded in the top-level or child browsing context. + Before the requested element is returned it is removed from the document's DOM. """ - def stale_element(css_value, as_frame=False, want_shadow_root=False): - current_session.url = get_test_page(as_frame=as_frame) - + def stale_element(doc, css_value, as_frame=False): if as_frame: + current_session.url = inline(iframe(doc)) frame = current_session.find.css("iframe", all=False) current_session.switch_frame(frame) + else: + current_session.url = inline(doc) element = current_session.find.css(css_value, all=False) - shadow_root = element.shadow_root if want_shadow_root else None current_session.execute_script("arguments[0].remove();", args=[element]) - return shadow_root if want_shadow_root else element + return element return stale_element - - -@pytest.fixture -def get_test_page(iframe, inline): - def get_test_page( - as_frame=False, - frame_doc=None, - shadow_doc=None, - nested_shadow_dom=False - ): - if frame_doc is None: - frame_doc = """

""" - - if shadow_doc is None: - shadow_doc = """ -
- -
- """ - - definition_inner_shadow_dom = "" - if nested_shadow_dom: - definition_inner_shadow_dom = f""" - customElements.define('inner-custom-element', - class extends HTMLElement {{ - constructor() {{ - super(); - this.attachShadow({{mode: "open"}}).innerHTML = ` - {shadow_doc} - `; - }} - }} - ); - """ - shadow_doc = """ - -
- -
- """ - - page_data = f""" - -


-
Lorem
-
- - - - - - - - {iframe(frame_doc)} - - - - - """ - - if as_frame: - return inline(iframe(page_data)) - else: - return inline(page_data) - - return get_test_page diff --git a/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch.py b/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch.py index b9cccb3ecc09..9ccab2c6c96d 100644 --- a/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch.py +++ b/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch.py @@ -75,15 +75,6 @@ def test_frame_id_invalid_types(session, value): assert_error(response, "invalid argument") -def test_frame_id_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = switch_to_frame(session, element.shadow_root) - assert_error(result, "invalid argument") - - def test_frame_id_null(session, inline, iframe): session.url = inline(iframe("{}
foo".format(iframe("

bar")))) diff --git a/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch_webelement.py b/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch_webelement.py index ceadccd81210..5b571862054f 100644 --- a/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch_webelement.py +++ b/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch_webelement.py @@ -28,8 +28,8 @@ def test_frame_id_webelement_no_such_element(session, iframe, inline): @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_frame_id_webelement_stale_element_reference(session, stale_element, as_frame): - frame = stale_element("iframe", as_frame=as_frame) +def test_frame_id_webelement_stale_element_reference(session, iframe, stale_element, as_frame): + frame = stale_element(iframe("

"), "iframe", as_frame=as_frame) result = switch_to_frame(session, frame) assert_error(result, "stale element reference") diff --git a/testing/web-platform/tests/webdriver/tests/take_element_screenshot/screenshot.py b/testing/web-platform/tests/webdriver/tests/take_element_screenshot/screenshot.py index deea9514ed48..a1fcfac5f449 100644 --- a/testing/web-platform/tests/webdriver/tests/take_element_screenshot/screenshot.py +++ b/testing/web-platform/tests/webdriver/tests/take_element_screenshot/screenshot.py @@ -39,15 +39,6 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") -def test_no_such_element_with_shadow_root(session, get_test_page): - session.url = get_test_page() - - element = session.find.css("custom-element", all=False) - - result = take_element_screenshot(session, element.shadow_root.id) - assert_error(result, "no such element") - - @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

") @@ -65,26 +56,25 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, get_test_page, closed): - session.url = get_test_page(as_frame=True) +def test_no_such_element_from_other_frame(session, url, closed): + session.url = url("/webdriver/tests/support/html/subframe.html") - frame = session.find.css("iframe", all=False) + frame = session.find.css("#delete-frame", all=False) session.switch_frame(frame) - element = session.find.css("div", all=False) + button = session.find.css("#remove-parent", all=False) + if closed: + button.click() session.switch_frame("parent") - if closed: - session.execute_script("arguments[0].remove();", args=[frame]) - - response = take_element_screenshot(session, element.id) + response = take_element_screenshot(session, button.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("input#text", as_frame=as_frame) + element = stale_element("", "input", as_frame=as_frame) result = take_element_screenshot(session, element.id) assert_error(result, "stale element reference")