Skip to content

Instantly share code, notes, and snippets.

@Meir017
Created June 2, 2020 05:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Meir017/2a3a191683f0d3fe84aace9b486b3a94 to your computer and use it in GitHub Desktop.
Save Meir017/2a3a191683f0d3fe84aace9b486b3a94 to your computer and use it in GitHub Desktop.
playwright firefox tests
[
{
"name": "Browser",
"it": []
},
{
"name": "Page",
"it": []
},
{
"name": "Accessibility",
"it": [
{
"name": "should work"
},
{
"name": "should work with regular text",
"skip": true
},
{
"name": "roledescription"
},
{
"name": "orientation"
},
{
"name": "autocomplete"
},
{
"name": "multiselectable"
},
{
"name": "keyshortcuts"
}
]
},
{
"name": "filtering children of leaf nodes",
"it": [
{
"name": "should not report text nodes inside controls"
},
{
"name": "rich text editable fields should have children"
},
{
"name": "rich text editable fields with role should have children"
}
]
},
{
"name": "plaintext contenteditable",
"it": [
{
"name": "plain text field with role should not have children"
},
{
"name": "plain text field without role should not have content"
},
{
"name": "plain text field with tabindex and without role should not have content"
},
{
"name": "non editable textbox with role and tabIndex and label should not have children"
},
{
"name": "checkbox with and tabIndex and label should not have children"
},
{
"name": "checkbox without label should not have children"
}
]
},
{
"name": "root option",
"it": [
{
"name": "should work a button"
},
{
"name": "should work an input"
},
{
"name": "should work on a menu"
},
{
"name": "should return null when the element is no longer in DOM"
},
{
"name": "should show uninteresting nodes"
}
]
},
{
"name": "Page.click",
"it": [
{
"name": "should click the button"
},
{
"name": "should click svg"
},
{
"name": "should click the button if window.Node is removed"
},
{
"name": "should click on a span with an inline element inside"
},
{
"name": "should not throw UnhandledPromiseRejection when page closes"
},
{
"name": "should click the button after navigation "
},
{
"name": "should click the button after a cross origin navigation "
},
{
"name": "should click with disabled javascript"
},
{
"name": "should click when one of inline box children is outside of viewport"
},
{
"name": "should select the text by triple clicking"
},
{
"name": "should click offscreen buttons"
},
{
"name": "should waitFor visible when already visible"
},
{
"name": "should waitFor hidden when already hidden"
},
{
"name": "should waitFor hidden"
},
{
"name": "should waitFor visible"
},
{
"name": "should click wrapped links"
},
{
"name": "should click on checkbox input and toggle"
},
{
"name": "should click on checkbox label and toggle"
},
{
"name": "should fail to click a missing button"
},
{
"name": "should not hang with touch-enabled viewports"
},
{
"name": "should scroll and click the button"
},
{
"name": "should double click the button"
},
{
"name": "should click a partially obscured button"
},
{
"name": "should click a rotated button"
},
{
"name": "should fire contextmenu event on right click"
},
{
"name": "should click links which cause navigation"
},
{
"name": "should click the button inside an iframe"
},
{
"name": "should click the button with fixed position inside an iframe",
"skip": true
},
{
"name": "should click the button with deviceScaleFactor set"
},
{
"name": "should click the button with px border with relative point"
},
{
"name": "should click the button with em border with relative point"
},
{
"name": "should click a very large button with relative point"
},
{
"name": "should click a button in scrolling container with relative point",
"skip": true
},
{
"name": "should update modifiers correctly"
},
{
"name": "should click an offscreen element when scroll-behavior is smooth",
"skip": true
},
{
"name": "should click on an animated button",
"skip": true
}
]
},
{
"name": "BrowserContext.cookies",
"it": [
{
"name": "should return no cookies in pristine browser context"
},
{
"name": "should get a cookie"
},
{
"name": "should properly report httpOnly cookie"
},
{
"name": "should properly report \"Strict\" sameSite cookie",
"skip": true
},
{
"name": "should properly report \"Lax\" sameSite cookie",
"skip": true
},
{
"name": "should get multiple cookies"
},
{
"name": "should get cookies from multiple urls"
}
]
},
{
"name": "BrowserContext.setCookies",
"it": [
{
"name": "should work"
},
{
"name": "should isolate cookies in browser contexts"
},
{
"name": "should set multiple cookies"
},
{
"name": "should have |expires| set to |-1| for session cookies"
},
{
"name": "should set cookie with reasonable defaults"
},
{
"name": "should set a cookie with a path"
},
{
"name": "should not set a cookie with blank page URL"
},
{
"name": "should not set a cookie on a data URL page"
},
{
"name": "should default to setting secure cookie for HTTPS websites"
},
{
"name": "should be able to set unsecure cookie for HTTP website"
},
{
"name": "should set a cookie on a different domain"
},
{
"name": "should set cookies from a frame"
}
]
},
{
"name": "BrowserContext.clearCookies",
"it": [
{
"name": "should clear cookies"
},
{
"name": "should isolate cookies when clearing"
}
]
},
{
"name": "Page.Events.Dialog",
"it": [
{
"name": "should fire"
},
{
"name": "should allow accepting prompts"
},
{
"name": "should dismiss the prompt"
},
{
"name": "should accept the confirm prompt"
},
{
"name": "should dismiss the confirm prompt"
}
]
},
{
"name": "ElementHandle.boundingBox",
"it": [
{
"name": "should work"
},
{
"name": "should handle nested frames"
},
{
"name": "should return null for invisible elements"
},
{
"name": "should force a layout"
},
{
"name": "should work with SVG nodes"
}
]
},
{
"name": "ElementHandle.contentFrame",
"it": [
{
"name": "should work"
},
{
"name": "should work for cross-process iframes"
},
{
"name": "should work for cross-frame evaluations"
},
{
"name": "should return null for non-iframes"
},
{
"name": "should return null for document.documentElement"
}
]
},
{
"name": "ElementHandle.ownerFrame",
"it": [
{
"name": "should work"
},
{
"name": "should work for cross-process iframes"
},
{
"name": "should work for document"
},
{
"name": "should work for iframe elements"
},
{
"name": "should work for cross-frame evaluations"
},
{
"name": "should work for detached elements"
},
{
"name": "should work for adopted elements",
"skip": true
}
]
},
{
"name": "ElementHandle.click",
"it": [
{
"name": "should work"
},
{
"name": "should work with Node removed"
},
{
"name": "should work for Shadow DOM v1"
},
{
"name": "should work for TextNodes"
},
{
"name": "should throw for detached nodes"
},
{
"name": "should throw for hidden nodes"
},
{
"name": "should throw for recursively hidden nodes"
},
{
"name": "should throw for <br> elements"
}
]
},
{
"name": "ElementHandle.hover",
"it": [
{
"name": "should work"
},
{
"name": "should work when Node is removed"
}
]
},
{
"name": "ElementHandle.visibleRatio",
"it": [
{
"name": "should work"
},
{
"name": "should work when Node is removed"
}
]
},
{
"name": "ElementHandle.scrollIntoViewIfNeeded",
"it": [
{
"name": "should work",
"skip": true
}
]
},
{
"name": "ElementHandle.fill",
"it": [
{
"name": "should fill input"
},
{
"name": "should fill input when Node is removed"
}
]
},
{
"name": "Page.viewport",
"it": [
{
"name": "should get the proper viewport size"
},
{
"name": "should support mobile emulation"
},
{
"name": "should support touch emulation"
},
{
"name": "should be detectable by Modernizr"
},
{
"name": "should detect touch when applying viewport with touches"
},
{
"name": "should support landscape emulation",
"skip": true
},
{
"name": "should fire orientationchange event",
"skip": true
},
{
"name": "default mobile viewports to 980 width",
"skip": true
},
{
"name": "respect meta viewport tag",
"skip": true
}
]
},
{
"name": "Page.emulate",
"it": [
{
"name": "should work"
},
{
"name": "should support clicking"
}
]
},
{
"name": "Page.emulateMedia type",
"it": [
{
"name": "should work"
},
{
"name": "should throw in case of bad type argument"
}
]
},
{
"name": "Page.emulateMedia colorScheme",
"it": [
{
"name": "should work"
},
{
"name": "should throw in case of bad argument"
},
{
"name": "should work during navigation",
"skip": true
}
]
},
{
"name": "BrowserContext({timezoneId})",
"it": [
{
"name": "should work"
},
{
"name": "should throw for invalid timezone IDs"
}
]
},
{
"name": "Page.evaluate",
"it": [
{
"name": "should work"
},
{
"name": "should transfer NaN"
},
{
"name": "should transfer -0"
},
{
"name": "should transfer Infinity"
},
{
"name": "should transfer -Infinity"
},
{
"name": "should transfer arrays"
},
{
"name": "should transfer arrays as arrays, not objects"
},
{
"name": "should modify global environment"
},
{
"name": "should evaluate in the page context"
},
{
"name": "should return undefined for objects with symbols"
},
{
"name": "should work with function shorthands"
},
{
"name": "should work with unicode chars"
},
{
"name": "should throw when evaluation triggers reload"
},
{
"name": "should await promise"
},
{
"name": "should work right after framenavigated"
},
{
"name": "should work right after a cross-origin navigation"
},
{
"name": "should work from-inside an exposed function"
},
{
"name": "should reject promise with exception"
},
{
"name": "should support thrown strings as error messages"
},
{
"name": "should support thrown numbers as error messages"
},
{
"name": "should return complex objects"
},
{
"name": "should return NaN"
},
{
"name": "should return -0"
},
{
"name": "should return Infinity"
},
{
"name": "should return -Infinity"
},
{
"name": "should accept \"undefined\" as one of multiple parameters"
},
{
"name": "should properly serialize undefined arguments"
},
{
"name": "should properly serialize undefined fields"
},
{
"name": "should properly serialize null arguments"
},
{
"name": "should properly serialize null fields"
},
{
"name": "should return undefined for non-serializable objects"
},
{
"name": "should fail for circular object"
},
{
"name": "should be able to throw a tricky error"
},
{
"name": "should accept a string"
},
{
"name": "should accept a string with semi colons"
},
{
"name": "should accept a string with comments"
},
{
"name": "should accept element handle as an argument"
},
{
"name": "should throw if underlying element was disposed"
},
{
"name": "should simulate a user gesture"
},
{
"name": "should throw a nice error after a navigation"
},
{
"name": "should not throw an error when evaluation does a navigation"
},
{
"name": "should transfer 100Mb of data from page to node.js",
"skip": true
},
{
"name": "should throw error with detailed information on exception inside promise "
},
{
"name": "should work even when JSON is set to null"
}
]
},
{
"name": "Page.evaluateOnNewDocument",
"it": [
{
"name": "should evaluate before anything else on the page"
},
{
"name": "should support multiple scripts"
},
{
"name": "should work with CSP"
},
{
"name": "should work after a cross origin navigation"
}
]
},
{
"name": "Frame.evaluate",
"it": [
{
"name": "should have different execution contexts"
},
{
"name": "should have correct execution contexts"
},
{
"name": "should dispose context on navigation"
},
{
"name": "should dispose context on cross-origin navigation"
},
{
"name": "should execute after cross-site navigation"
},
{
"name": "should allow cross-frame js handles",
"skip": true
},
{
"name": "should allow cross-frame element handles"
},
{
"name": "should not allow cross-frame element handles when frames do not script each other",
"skip": true
},
{
"name": "should return non-empty Node.constructor.name in utility context",
"skip": true
}
]
},
{
"name": "Frame.evaluateHandle",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Frame.evaluate",
"it": [
{
"name": "should throw for detached frames"
},
{
"name": "should be isolated between frames"
}
]
},
{
"name": "Frame Management",
"it": [
{
"name": "should handle nested frames"
},
{
"name": "should send events when frames are manipulated dynamically"
},
{
"name": "should send \"framenavigated\" when navigating on anchor URLs"
},
{
"name": "should persist mainFrame on cross-process navigation"
},
{
"name": "should not send attach/detach events for main frame"
},
{
"name": "should detach child frames on navigation"
},
{
"name": "should support framesets"
},
{
"name": "should report frame from-inside shadow DOM"
},
{
"name": "should report frame.name()"
},
{
"name": "should report frame.parent()"
},
{
"name": "should report different frame instance when frame re-attaches"
}
]
},
{
"name": "input",
"it": [
{
"name": "should upload the file"
}
]
},
{
"name": "Page.waitForFileChooser",
"it": [
{
"name": "should emit event"
},
{
"name": "should work when file input is attached to DOM"
},
{
"name": "should work when file input is not attached to DOM"
},
{
"name": "should respect timeout"
},
{
"name": "should respect default timeout when there is no custom timeout"
},
{
"name": "should prioritize exact timeout over default timeout"
},
{
"name": "should work with no timeout"
},
{
"name": "should return the same file chooser when there are many watchdogs simultaneously"
},
{
"name": "should accept single file"
},
{
"name": "should be able to read selected file"
},
{
"name": "should be able to reset selected files with empty file list"
},
{
"name": "should not accept multiple files for single-file input"
}
]
},
{
"name": "Page.waitForFileChooser isMultiple",
"it": [
{
"name": "should work for single file pick"
},
{
"name": "should work for \"multiple\""
},
{
"name": "should work for \"webkitdirectory\""
}
]
},
{
"name": "Page.evaluateHandle",
"it": [
{
"name": "should work"
},
{
"name": "should accept object handle as an argument"
},
{
"name": "should accept object handle to primitive types"
},
{
"name": "should warn on nested object handles"
},
{
"name": "should accept object handle to unserializable value"
},
{
"name": "should use the same JS wrappers"
},
{
"name": "should work with primitives"
}
]
},
{
"name": "JSHandle.getProperty",
"it": [
{
"name": "should work"
}
]
},
{
"name": "JSHandle.jsonValue",
"it": [
{
"name": "should work"
},
{
"name": "should not work with dates"
},
{
"name": "should throw for circular objects"
},
{
"name": "should work with tricky values"
}
]
},
{
"name": "JSHandle.getProperties",
"it": [
{
"name": "should work"
},
{
"name": "should return empty map for non-objects"
},
{
"name": "should return even non-own properties"
}
]
},
{
"name": "JSHandle.asElement",
"it": [
{
"name": "should work"
},
{
"name": "should return null for non-elements"
},
{
"name": "should return ElementHandle for TextNodes"
},
{
"name": "should work with nullified Node"
}
]
},
{
"name": "JSHandle.toString",
"it": [
{
"name": "should work for primitives"
},
{
"name": "should work for complicated objects"
},
{
"name": "should work for promises"
},
{
"name": "should work with different subtypes"
}
]
},
{
"name": "Keyboard",
"it": [
{
"name": "should type into a textarea"
},
{
"name": "should press the metaKey"
},
{
"name": "should move with the arrow keys"
},
{
"name": "should send a character with ElementHandle.press"
},
{
"name": "ElementHandle.press should support |text| option",
"skip": true
},
{
"name": "should send a character with sendCharacter"
},
{
"name": "should report shiftKey",
"skip": true
},
{
"name": "should report multiple modifiers"
},
{
"name": "should send proper codes while typing"
},
{
"name": "should send proper codes while typing with shift"
},
{
"name": "should not type canceled events"
},
{
"name": "should specify repeat property"
},
{
"name": "should type all kinds of characters"
},
{
"name": "should specify location"
},
{
"name": "should throw on unknown keys"
},
{
"name": "should type emoji"
},
{
"name": "should type emoji into an iframe"
},
{
"name": "should handle selectAll",
"skip": true
},
{
"name": "should be able to prevent selectAll",
"skip": true
},
{
"name": "should press the meta key"
},
{
"name": "should work after a cross origin navigation"
}
]
},
{
"name": "Mouse",
"it": [
{
"name": "should click the document"
},
{
"name": "should select the text with mouse"
},
{
"name": "should trigger hover state"
},
{
"name": "should trigger hover state with removed window.Node"
},
{
"name": "should set modifier keys on click"
},
{
"name": "should tween mouse movement"
},
{
"name": "should work with mobile viewports and cross process navigations"
}
]
},
{
"name": "Page.goto",
"it": [
{
"name": "should work"
},
{
"name": "should work cross-process"
},
{
"name": "should capture iframe navigation request"
},
{
"name": "should capture cross-process iframe navigation request"
},
{
"name": "should work with anchor navigation"
},
{
"name": "should work with redirects"
},
{
"name": "should navigate to about:blank"
},
{
"name": "should return response when page changes its URL after load"
},
{
"name": "should work with subframes return 204"
},
{
"name": "should fail when server returns 204"
},
{
"name": "should navigate to empty page with domcontentloaded"
},
{
"name": "should work when page calls history API in beforeunload"
},
{
"name": "should fail when navigating to bad url"
},
{
"name": "should fail when navigating to bad SSL"
},
{
"name": "should fail when navigating to bad SSL after redirects"
},
{
"name": "should not crash when navigating to bad SSL after a cross origin navigation"
},
{
"name": "should throw if networkidle is passed as an option"
},
{
"name": "should fail when main resources failed to load"
},
{
"name": "should fail when exceeding maximum navigation timeout"
},
{
"name": "should fail when exceeding default maximum navigation timeout"
},
{
"name": "should fail when exceeding default maximum timeout"
},
{
"name": "should prioritize default navigation timeout over default timeout"
},
{
"name": "should disable timeout when its set to 0"
},
{
"name": "should work when navigating to valid url"
},
{
"name": "should work when navigating to data url"
},
{
"name": "should work when navigating to 404"
},
{
"name": "should return last response in redirect chain"
},
{
"name": "should not leak listeners during navigation"
},
{
"name": "should not leak listeners during bad navigation"
},
{
"name": "should not leak listeners during navigation of 11 pages"
},
{
"name": "should navigate to dataURL and not fire dataURL requests"
},
{
"name": "should navigate to URL with hash and fire requests without hash"
},
{
"name": "should work with self requesting page"
},
{
"name": "should fail when navigating and show the url at the error message"
},
{
"name": "should send referer"
},
{
"name": "should reject referer option when setExtraHTTPHeaders provides referer"
},
{
"name": "should override referrer-policy"
},
{
"name": "should fail when canceled by another navigation",
"skip": true
}
]
},
{
"name": "network idle",
"it": [
{
"name": "should navigate to empty page with networkidle0"
},
{
"name": "should navigate to empty page with networkidle2"
},
{
"name": "should wait for networkidle0 to succeed navigation"
},
{
"name": "should wait for networkidle2 to succeed navigation"
},
{
"name": "should wait for networkidle0 to succeed navigation with request from previous navigation"
},
{
"name": "should wait for networkidle2 to succeed navigation with request from previous navigation"
},
{
"name": "should wait for networkidle0 in waitForNavigation"
},
{
"name": "should wait for networkidle2 in waitForNavigation"
},
{
"name": "should wait for networkidle0 in setContent"
},
{
"name": "should wait for networkidle2 in setContent"
},
{
"name": "should wait for networkidle0 in setContent with request from previous navigation",
"skip": true
},
{
"name": "should wait for networkidle2 in setContent with request from previous navigation",
"skip": true
},
{
"name": "should wait for networkidle0 when navigating iframe"
},
{
"name": "should wait for networkidle2 when navigating iframe"
},
{
"name": "should wait for networkidle0 in setContent from the child frame"
},
{
"name": "should wait for networkidle2 in setContent from the child frame"
},
{
"name": "should wait for networkidle0 from the child frame"
},
{
"name": "should wait for networkidle2 from the child frame"
}
]
},
{
"name": "Page.waitForNavigation",
"it": [
{
"name": "should work"
},
{
"name": "should work with both domcontentloaded and load"
},
{
"name": "should work with clicking on anchor links"
},
{
"name": "should work with clicking on links which do not commit navigation"
},
{
"name": "should work with history.pushState()"
},
{
"name": "should work with history.replaceState()"
},
{
"name": "should work with DOM history.back()/history.forward()"
},
{
"name": "should work when subframe issues window.stop()",
"skip": true
},
{
"name": "should work with url match"
},
{
"name": "should work with url match for same document navigations"
}
]
},
{
"name": "Page.waitForLoadState",
"it": [
{
"name": "should pick up ongoing navigation"
},
{
"name": "should respect timeout"
},
{
"name": "should resolve immediately if loaded"
},
{
"name": "should resolve immediately if load state matches"
},
{
"name": "should work with pages that have loaded before being connected to",
"skip": true
}
]
},
{
"name": "Page.goBack",
"it": [
{
"name": "should work"
},
{
"name": "should work with HistoryAPI"
}
]
},
{
"name": "Frame.goto",
"it": [
{
"name": "should navigate subframes"
},
{
"name": "should reject when frame detaches"
},
{
"name": "should return matching responses"
}
]
},
{
"name": "Frame.waitForNavigation",
"it": [
{
"name": "should work"
},
{
"name": "should fail when frame detaches"
}
]
},
{
"name": "Page.reload",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Page.Events.Request",
"it": [
{
"name": "should fire for navigation requests"
},
{
"name": "should fire for iframes"
},
{
"name": "should fire for fetches"
}
]
},
{
"name": "Request.frame",
"it": [
{
"name": "should work for main frame navigation request"
},
{
"name": "should work for subframe navigation request"
},
{
"name": "should work for fetch requests"
}
]
},
{
"name": "Request.headers",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Response.headers",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Request.postData",
"it": [
{
"name": "should work"
},
{
"name": "should be |undefined| when there is no post data"
}
]
},
{
"name": "Response.text",
"it": [
{
"name": "should work"
},
{
"name": "should return uncompressed text"
},
{
"name": "should throw when requesting body of redirected response"
},
{
"name": "should wait until response completes"
}
]
},
{
"name": "Response.json",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Response.buffer",
"it": [
{
"name": "should work"
},
{
"name": "should work with compression"
}
]
},
{
"name": "Response.statusText",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Network Events",
"it": [
{
"name": "Page.Events.Request"
},
{
"name": "Page.Events.Response"
},
{
"name": "Page.Events.RequestFailed",
"skip": true
},
{
"name": "Page.Events.RequestFinished"
},
{
"name": "should fire events in proper order"
},
{
"name": "should support redirects"
}
]
},
{
"name": "Request.isNavigationRequest",
"it": [
{
"name": "should work"
},
{
"name": "should work when navigating to image"
}
]
},
{
"name": "Page.setExtraHTTPHeaders",
"it": [
{
"name": "should work"
},
{
"name": "should throw for non-string header values"
}
]
},
{
"name": "Page.close",
"it": [
{
"name": "should reject all promises when page is closed"
},
{
"name": "should not be visible in context.pages"
},
{
"name": "should run beforeunload if asked for"
},
{
"name": "should *not* run beforeunload by default"
},
{
"name": "should set the page close state"
},
{
"name": "should terminate network waiters",
"skip": true
}
]
},
{
"name": "Page.Events.Load",
"it": [
{
"name": "should fire when expected"
}
]
},
{
"name": "Async stacks",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Page.Events.error",
"it": [
{
"name": "should throw when page crashes"
}
]
},
{
"name": "Page.Events.Popup",
"it": [
{
"name": "should work"
},
{
"name": "should work with noopener"
},
{
"name": "should work with clicking target=_blank",
"skip": true
},
{
"name": "should work with fake-clicking target=_blank and rel=noopener",
"skip": true
},
{
"name": "should work with clicking target=_blank and rel=noopener",
"skip": true
},
{
"name": "should not treat navigations as new popups",
"skip": true
}
]
},
{
"name": "Page.opener",
"it": [
{
"name": "should provide access to the opener page"
},
{
"name": "should return null if parent page has been closed"
}
]
},
{
"name": "Page.Events.Console",
"it": [
{
"name": "should work"
},
{
"name": "should work for different console API calls"
},
{
"name": "should not fail for window object"
},
{
"name": "should trigger correct Log"
},
{
"name": "should have location for console API calls"
},
{
"name": "should not throw when there are console messages in detached iframes",
"skip": true
}
]
},
{
"name": "Page.Events.DOMContentLoaded",
"it": [
{
"name": "should fire when expected"
}
]
},
{
"name": "Page.waitForRequest",
"it": [
{
"name": "should work"
},
{
"name": "should work with predicate"
},
{
"name": "should respect timeout"
},
{
"name": "should respect default timeout"
},
{
"name": "should work with no timeout"
},
{
"name": "should work with url match"
}
]
},
{
"name": "Page.waitForResponse",
"it": [
{
"name": "should work"
},
{
"name": "should respect timeout"
},
{
"name": "should respect default timeout"
},
{
"name": "should work with predicate"
},
{
"name": "should work with no timeout"
}
]
},
{
"name": "Page.exposeFunction",
"it": [
{
"name": "should work"
},
{
"name": "should throw exception in page context"
},
{
"name": "should support throwing \"null\""
},
{
"name": "should be callable from-inside evaluateOnNewDocument"
},
{
"name": "should survive navigation"
},
{
"name": "should await returned promise"
},
{
"name": "should work on frames"
},
{
"name": "should work on frames before navigation"
},
{
"name": "should work after cross origin navigation"
},
{
"name": "should work with complex objects"
}
]
},
{
"name": "Page.Events.PageError",
"it": [
{
"name": "should fire"
}
]
},
{
"name": "Page.setContent",
"it": [
{
"name": "should work"
},
{
"name": "should work with domcontentloaded"
},
{
"name": "should not confuse with previous navigation"
},
{
"name": "should work with doctype"
},
{
"name": "should work with HTML 4 doctype"
},
{
"name": "should respect timeout"
},
{
"name": "should respect default navigation timeout"
},
{
"name": "should await resources to load"
},
{
"name": "should work fast enough"
},
{
"name": "should work with tricky content"
},
{
"name": "should work with accents"
},
{
"name": "should work with emojis"
},
{
"name": "should work with newline"
}
]
},
{
"name": "Page.addScriptTag",
"it": [
{
"name": "should throw an error if no options are provided"
},
{
"name": "should work with a url"
},
{
"name": "should work with a url and type=module"
},
{
"name": "should work with a path and type=module"
},
{
"name": "should work with a content and type=module"
},
{
"name": "should throw an error if loading from url fail"
},
{
"name": "should work with a path"
},
{
"name": "should work with content"
},
{
"name": "should throw when added with content to the CSP page",
"skip": true
},
{
"name": "should throw when added with URL to the CSP page"
}
]
},
{
"name": "Page.addStyleTag",
"it": [
{
"name": "should throw an error if no options are provided"
},
{
"name": "should work with a url"
},
{
"name": "should throw an error if loading from url fail"
},
{
"name": "should work with a path"
},
{
"name": "should include sourceURL when path is provided"
},
{
"name": "should work with content"
},
{
"name": "should throw when added with content to the CSP page"
},
{
"name": "should throw when added with URL to the CSP page"
}
]
},
{
"name": "Page.url",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Page.setCacheEnabled",
"it": [
{
"name": "should enable or disable the cache based on the state passed"
}
]
},
{
"name": "Page.title",
"it": [
{
"name": "should return the page title"
}
]
},
{
"name": "Page.select",
"it": [
{
"name": "should select single option"
},
{
"name": "should select single option by value"
},
{
"name": "should select single option by label"
},
{
"name": "should select single option by handle"
},
{
"name": "should select single option by index"
},
{
"name": "should select single option by multiple attributes"
},
{
"name": "should not select single option when some attributes do not match"
},
{
"name": "should select only first option"
},
{
"name": "should not throw when select causes navigation"
},
{
"name": "should select multiple options"
},
{
"name": "should select multiple options with attributes"
},
{
"name": "should respect event bubbling"
},
{
"name": "should throw when element is not a <select>"
},
{
"name": "should return [] on no matched values"
},
{
"name": "should return an array of matched values"
},
{
"name": "should return an array of one element when multiple is not set"
},
{
"name": "should return [] on no values"
},
{
"name": "should deselect all options when passed no values for a multiple select"
},
{
"name": "should deselect all options when passed no values for a select without multiple"
},
{
"name": "should throw if passed wrong types"
},
{
"name": "should work when re-defining top-level Event class"
}
]
},
{
"name": "Page.fill",
"it": [
{
"name": "should fill textarea"
},
{
"name": "should fill input"
},
{
"name": "should throw on non-text inputs"
},
{
"name": "should fill different input types"
},
{
"name": "should fill contenteditable"
},
{
"name": "should fill elements with existing value and selection"
},
{
"name": "should throw when element is not an <input>, <textarea> or [contenteditable]"
},
{
"name": "should throw if passed a non-string value"
},
{
"name": "should wait for visible visibilty"
},
{
"name": "should throw on disabled and readonly elements"
},
{
"name": "should throw on hidden and invisible elements"
},
{
"name": "should be able to fill the body"
},
{
"name": "should be able to fill when focus is in the wrong frame"
}
]
},
{
"name": "Page.Events.Close",
"it": [
{
"name": "should work with window.close"
},
{
"name": "should work with page.close"
}
]
},
{
"name": "Page.browserContext",
"it": [
{
"name": "should return the correct browser instance"
}
]
},
{
"name": "Page.$eval",
"it": [
{
"name": "should work with css selector"
},
{
"name": "should work with id selector"
},
{
"name": "should work with data-test selector"
},
{
"name": "should work with data-testid selector"
},
{
"name": "should work with data-test-id selector"
},
{
"name": "should work with zs selector"
},
{
"name": "should work with xpath selector"
},
{
"name": "should work with text selector"
},
{
"name": "should auto-detect css selector"
},
{
"name": "should auto-detect css selector with attributes"
},
{
"name": "should accept arguments"
},
{
"name": "should accept ElementHandles as arguments"
},
{
"name": "should throw error if no element is found"
},
{
"name": "should support >> syntax"
},
{
"name": "should support >> syntax with different engines"
},
{
"name": "should support spaces with >> syntax"
},
{
"name": "should enter shadow roots with >> syntax"
}
]
},
{
"name": "Page.$$eval",
"it": [
{
"name": "should work with css selector"
},
{
"name": "should work with zs selector"
},
{
"name": "should work with xpath selector"
},
{
"name": "should auto-detect css selector"
},
{
"name": "should support >> syntax"
},
{
"name": "should enter shadow roots with >> syntax"
}
]
},
{
"name": "Page.$",
"it": [
{
"name": "should query existing element with css selector"
},
{
"name": "should query existing element with zs selector"
},
{
"name": "should query existing element with xpath selector"
},
{
"name": "should return null for non-existing element"
},
{
"name": "should auto-detect xpath selector"
},
{
"name": "should auto-detect text selector"
},
{
"name": "should auto-detect css selector"
},
{
"name": "should support >> syntax"
},
{
"name": "should respect waitFor visibility"
}
]
},
{
"name": "Page.$$",
"it": [
{
"name": "should query existing elements"
},
{
"name": "should return empty array if nothing is found"
}
]
},
{
"name": "Page.$$ xpath",
"it": [
{
"name": "should query existing element"
},
{
"name": "should return empty array for non-existing element"
},
{
"name": "should return multiple elements"
}
]
},
{
"name": "ElementHandle.$",
"it": [
{
"name": "should query existing element"
},
{
"name": "should query existing element with zs selector"
},
{
"name": "should return null for non-existing element"
}
]
},
{
"name": "ElementHandle.$eval",
"it": [
{
"name": "should work"
},
{
"name": "should retrieve content from subtree"
},
{
"name": "should throw in case of missing selector"
}
]
},
{
"name": "ElementHandle.$$eval",
"it": [
{
"name": "should work"
},
{
"name": "should retrieve content from subtree"
},
{
"name": "should not throw in case of missing selector"
}
]
},
{
"name": "ElementHandle.$$",
"it": [
{
"name": "should query existing elements"
},
{
"name": "should return empty array for non-existing elements"
}
]
},
{
"name": "ElementHandle.$$ xpath",
"it": [
{
"name": "should query existing element"
},
{
"name": "should return null for non-existing element"
}
]
},
{
"name": "zselector",
"it": [
{
"name": "query"
},
{
"name": "create"
},
{
"name": "children of various display parents"
},
{
"name": "boundary"
}
]
},
{
"name": "text selector",
"it": [
{
"name": "query"
},
{
"name": "create"
}
]
},
{
"name": "selectors.register",
"it": [
{
"name": "should work"
},
{
"name": "should update"
}
]
},
{
"name": "Page.screenshot",
"it": [
{
"name": "should work"
},
{
"name": "should clip rect"
},
{
"name": "should clip elements to the viewport"
},
{
"name": "should throw on clip outside the viewport"
},
{
"name": "should run in parallel"
},
{
"name": "should take fullPage screenshots"
},
{
"name": "should restore viewport after fullPage screenshot"
},
{
"name": "should run in parallel in multiple pages"
},
{
"name": "should allow transparency",
"skip": true
},
{
"name": "should render white background on jpeg file"
},
{
"name": "should work with odd clip size on Retina displays"
},
{
"name": "should return base64"
},
{
"name": "should work with a mobile viewport",
"skip": true
},
{
"name": "should work for canvas"
},
{
"name": "should work for translateZ"
},
{
"name": "should work for webgl",
"skip": true
},
{
"name": "should work while navigating",
"skip": true
}
]
},
{
"name": "ElementHandle.screenshot",
"it": [
{
"name": "should work"
},
{
"name": "should take into account padding and border"
},
{
"name": "should capture full element when larger than viewport in parallel"
},
{
"name": "should capture full element when larger than viewport"
},
{
"name": "should scroll element into view"
},
{
"name": "should work with a rotated element"
},
{
"name": "should fail to screenshot a detached element"
},
{
"name": "should not hang with zero width/height element"
},
{
"name": "should work for an element with fractional dimensions"
},
{
"name": "should work for an element with an offset"
}
]
},
{
"name": "Page.waitFor",
"it": [
{
"name": "should wait for selector"
},
{
"name": "should wait for an xpath"
},
{
"name": "should not allow you to select an element with single slash xpath"
},
{
"name": "should timeout"
},
{
"name": "should work with multiline body"
},
{
"name": "should wait for predicate"
},
{
"name": "should throw when unknown type"
},
{
"name": "should wait for predicate with arguments"
}
]
},
{
"name": "Frame.waitForFunction",
"it": [
{
"name": "should accept a string"
},
{
"name": "should work when resolved right before execution context disposal"
},
{
"name": "should poll on interval"
},
{
"name": "should poll on mutation"
},
{
"name": "should poll on raf"
},
{
"name": "should work with strict CSP policy",
"skip": true
},
{
"name": "should throw on bad polling value"
},
{
"name": "should throw negative polling interval"
},
{
"name": "should return the success value as a JSHandle"
},
{
"name": "should return the window as a success value"
},
{
"name": "should accept ElementHandle arguments"
},
{
"name": "should respect timeout"
},
{
"name": "should respect default timeout"
},
{
"name": "should disable timeout when its set to 0"
},
{
"name": "should survive cross-process navigation"
},
{
"name": "should survive navigations"
}
]
},
{
"name": "Frame.$wait",
"it": [
{
"name": "should accept arguments"
},
{
"name": "should query selector constantly"
},
{
"name": "should be able to wait for removal"
}
]
},
{
"name": "Frame.waitForSelector",
"it": [
{
"name": "should immediately resolve promise if node exists"
},
{
"name": "should work with removed MutationObserver"
},
{
"name": "should resolve promise when node is added"
},
{
"name": "should work when node is added through innerHTML"
},
{
"name": "Page.$ waitFor is shortcut for main frame"
},
{
"name": "should run in specified frame"
},
{
"name": "should throw when frame is detached"
},
{
"name": "should survive cross-process navigation"
},
{
"name": "should wait for visible"
},
{
"name": "should wait for visible recursively"
},
{
"name": "hidden should wait for visibility: hidden"
},
{
"name": "hidden should wait for display: none"
},
{
"name": "hidden should wait for removal"
},
{
"name": "should return null if waiting to hide non-existing element"
},
{
"name": "should respect timeout"
},
{
"name": "should have an error message specifically for awaiting an element to be hidden"
},
{
"name": "should respond to node attribute mutation"
},
{
"name": "should return the element handle"
},
{
"name": "should have correct stack trace for timeout"
},
{
"name": "should throw for unknown waitFor option"
},
{
"name": "should throw for numeric waitFor option"
},
{
"name": "should throw for true waitFor option"
},
{
"name": "should throw for false waitFor option"
},
{
"name": "should support >> selector syntax"
}
]
},
{
"name": "Frame.waitForSelector xpath",
"it": [
{
"name": "should support some fancy xpath"
},
{
"name": "should respect timeout"
},
{
"name": "should run in specified frame"
},
{
"name": "should throw when frame is detached"
},
{
"name": "should return the element handle"
},
{
"name": "should allow you to select an element with single slash"
}
]
},
{
"name": "Page.setRequestInterception",
"it": [
{
"name": "should intercept"
},
{
"name": "should work when POST is redirected with 302"
},
{
"name": "should work when header manipulation headers with redirect"
},
{
"name": "should be able to remove headers"
},
{
"name": "should contain referer header"
},
{
"name": "should properly return navigation response when URL has cookies"
},
{
"name": "should stop intercepting"
},
{
"name": "should show custom HTTP headers"
},
{
"name": "should work with redirect inside sync XHR"
},
{
"name": "should work with custom referer headers"
},
{
"name": "should be abortable"
},
{
"name": "should be abortable with custom error codes"
},
{
"name": "should send referer"
},
{
"name": "should fail navigation when aborting main resource"
},
{
"name": "should work with redirects"
},
{
"name": "should work with redirects for subresources"
},
{
"name": "should work with equal requests"
},
{
"name": "should navigate to dataURL and not fire dataURL requests"
},
{
"name": "should be able to fetch dataURL and not fire dataURL requests"
},
{
"name": "should navigate to URL with hash and and fire requests without hash",
"skip": true
},
{
"name": "should work with encoded server"
},
{
"name": "should work with badly encoded server"
},
{
"name": "should work with encoded server - 2"
},
{
"name": "should not throw \"Invalid Interception Id\" if the request was cancelled"
},
{
"name": "should throw if interception is not enabled"
},
{
"name": "should intercept main resource during cross-process navigation"
},
{
"name": "should not throw when continued after navigation"
},
{
"name": "should not throw when continued after cross-process navigation"
}
]
},
{
"name": "Request.continue",
"it": [
{
"name": "should work"
},
{
"name": "should amend HTTP headers"
},
{
"name": "should amend method"
},
{
"name": "should amend method on main request"
},
{
"name": "should amend post data"
}
]
},
{
"name": "Request.fulfill",
"it": [
{
"name": "should work"
},
{
"name": "should work with status code 422"
},
{
"name": "should allow mocking binary responses"
},
{
"name": "should stringify intercepted request response headers"
}
]
},
{
"name": "Page.authenticate",
"it": [
{
"name": "should work"
},
{
"name": "should fail if wrong credentials"
},
{
"name": "should allow disable authentication"
}
]
},
{
"name": "Interception.setOfflineMode",
"it": [
{
"name": "should work"
},
{
"name": "should emulate navigator.onLine"
}
]
},
{
"name": "Interception vs isNavigationRequest",
"it": [
{
"name": "should work with request interception"
}
]
},
{
"name": "Page.setCacheEnabled",
"it": [
{
"name": "should stay disabled when toggling request interception on/off"
}
]
},
{
"name": "ignoreHTTPSErrors",
"it": [
{
"name": "should work with request interception"
}
]
},
{
"name": "Overrides.setGeolocation",
"it": [
{
"name": "should work"
},
{
"name": "should throw when invalid longitude"
},
{
"name": "should throw with missing latitude"
},
{
"name": "should not modify passed default options object"
},
{
"name": "should throw with missing longitude in default options"
},
{
"name": "should use context options"
}
]
},
{
"name": "Workers",
"it": [
{
"name": "Page.workers"
},
{
"name": "should emit created and destroyed events"
},
{
"name": "should report console logs"
},
{
"name": "should have JSHandles for console logs"
},
{
"name": "should evaluate"
},
{
"name": "should report errors"
},
{
"name": "should clear upon navigation"
},
{
"name": "should clear upon cross-process navigation"
},
{
"name": "should report network activity"
},
{
"name": "should report network activity on worker creation",
"skip": true
}
]
},
{
"name": "Capabilities",
"it": [
{
"name": "Web Assembly should work"
}
]
},
{
"name": "Permissions",
"it": [
{
"name": "should be prompt by default",
"skip": true
},
{
"name": "should deny permission when not listed",
"skip": true
},
{
"name": "should fail when bad permission is given",
"skip": true
},
{
"name": "should grant permission when listed",
"skip": true
},
{
"name": "should reset permissions",
"skip": true
},
{
"name": "should trigger permission onchange",
"skip": true
},
{
"name": "should isolate permissions between browser contexs",
"skip": true
}
]
},
{
"name": "BrowserContext",
"it": [
{
"name": "should have default context"
},
{
"name": "should create new incognito context"
},
{
"name": "window.open should use parent tab context"
},
{
"name": "should isolate localStorage and cookies"
},
{
"name": "should propagate default viewport to the page"
},
{
"name": "should take fullPage screenshots when default viewport is null"
},
{
"name": "should restore default viewport after fullPage screenshot"
},
{
"name": "should make a copy of default viewport"
},
{
"name": "should take element screenshot when default viewport is null and restore back"
}
]
},
{
"name": "BrowserContext({setUserAgent})",
"it": [
{
"name": "should work"
},
{
"name": "should work for subframes"
},
{
"name": "should emulate device user-agent"
},
{
"name": "should make a copy of default options"
}
]
},
{
"name": "BrowserContext({bypassCSP})",
"it": [
{
"name": "should bypass CSP meta tag"
},
{
"name": "should bypass CSP header"
},
{
"name": "should bypass after cross-process navigation"
},
{
"name": "should bypass CSP in iframes as well"
}
]
},
{
"name": "BrowserContext({javaScriptEnabled})",
"it": [
{
"name": "should work"
},
{
"name": "should be able to navigate after disabling javascript"
}
]
},
{
"name": "ignoreHTTPSErrors",
"it": [
{
"name": "should work"
},
{
"name": "should work with mixed content"
}
]
},
{
"name": "defaultContext()",
"it": [
{
"name": "context.cookies() should work"
},
{
"name": "context.setCookies() should work"
},
{
"name": "context.clearCookies() should work"
}
]
},
{
"name": "Fixtures",
"it": [
{
"name": "dumpio option should work with webSocket option"
},
{
"name": "should dump browser process stderr"
},
{
"name": "should close the browser when the node process closes"
},
{
"name": "should report browser close signal"
},
{
"name": "should report browser close signal 2"
},
{
"name": "should close the browser on SIGINT"
},
{
"name": "should close the browser on SIGTERM"
},
{
"name": "should close the browser on SIGHUP"
},
{
"name": "should kill the browser on double SIGINT"
},
{
"name": "should kill the browser on SIGINT + SIGTERM"
},
{
"name": "should kill the browser on SIGTERM + SIGINT"
}
]
},
{
"name": "Playwright",
"it": []
},
{
"name": "Playwright.launch",
"it": [
{
"name": "should reject all promises when browser is closed"
},
{
"name": "should reject if executable path is invalid"
},
{
"name": "should have default URL when launching browser"
},
{
"name": "should have custom URL when launching browser"
},
{
"name": "should return child_process instance"
}
]
},
{
"name": "Playwright.executablePath",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Playwright.name",
"it": [
{
"name": "should work"
}
]
},
{
"name": "Playwright.defaultArguments",
"it": [
{
"name": "should return the default arguments"
},
{
"name": "should filter out ignored default arguments"
}
]
},
{
"name": "Top-level requires",
"it": [
{
"name": "should require top-level Errors"
},
{
"name": "should require top-level DeviceDescriptors"
}
]
},
{
"name": "Browser.isConnected",
"it": [
{
"name": "should set the browser connected state"
},
{
"name": "should throw when used after isConnected returns false"
}
]
},
{
"name": "Browser.disconnect",
"it": [
{
"name": "should reject navigation when browser closes"
},
{
"name": "should reject waitForSelector when browser closes"
},
{
"name": "should throw if used after disconnect"
}
]
},
{
"name": "Browser.close",
"it": [
{
"name": "should terminate network waiters"
},
{
"name": "should be able to close remote browser"
}
]
},
{
"name": "Playwright.launch |webSocket| option",
"it": [
{
"name": "should not have websocket by default"
},
{
"name": "should support the webSocket option"
},
{
"name": "should fire \"disconnected\" when closing without webSocket"
},
{
"name": "should fire \"disconnected\" when closing with webSocket"
}
]
},
{
"name": "Playwright.connect",
"it": [
{
"name": "should be able to reconnect to a browser",
"skip": true
}
]
},
{
"name": "Playwright.launch({userDataDir})",
"it": [
{
"name": "userDataDir option"
},
{
"name": "userDataDir argument"
},
{
"name": "userDataDir option should restore state",
"skip": true
},
{
"name": "userDataDir option should restore cookies",
"skip": true
}
]
},
{
"name": "Headful",
"it": [
{
"name": "should have default url when launching browser"
},
{
"name": "headless should be able to read cookies written by headful",
"skip": true
},
{
"name": "should close browser with beforeunload page",
"skip": true
}
]
},
{
"name": "BrowserContext",
"it": [
{
"name": "should work across sessions"
}
]
},
{
"name": "Browser.Events.disconnected",
"it": [
{
"name": "should be emitted when: browser gets closed, disconnected or underlying websocket gets closed"
}
]
},
{
"name": "Playwright.connect",
"it": [
{
"name": "should be able to connect multiple times to the same browser"
},
{
"name": "should not be able to connect multiple times without websocket"
},
{
"name": "should be able to close remote browser"
},
{
"name": "should be able to connect to the same page simultaneously"
}
]
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment