mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
feat(webdriver): support Network interception (#12279)
This commit is contained in:
parent
e75ec2b016
commit
8fa52a50bd
@ -18,8 +18,8 @@ Firefox integration is nearing feature parity with its previous CDP-based approa
|
|||||||
|
|
||||||
To gauge the capabilities of WebDriver BiDi, we utilized the comprehensive [Puppeteer test suite](https://puppeteer.github.io/ispuppeteerwebdriverbidiready/)
|
To gauge the capabilities of WebDriver BiDi, we utilized the comprehensive [Puppeteer test suite](https://puppeteer.github.io/ispuppeteerwebdriverbidiready/)
|
||||||
|
|
||||||
- For Firefox, there are currently under [60](https://puppeteer.github.io/ispuppeteerwebdriverbidiready/firefox-delta.json) failing tests compared to the CDP implementation, while over [82](https://puppeteer.github.io/ispuppeteerwebdriverbidiready/firefox-delta.json) new tests successfully utilize WebDriver BiDi, demonstrating its growing potential.
|
- For Firefox, there are currently under [30](https://puppeteer.github.io/ispuppeteerwebdriverbidiready/firefox-delta.json) failing tests compared to the CDP implementation, while over [140](https://puppeteer.github.io/ispuppeteerwebdriverbidiready/firefox-delta.json) new tests successfully utilize WebDriver BiDi, demonstrating its growing potential.
|
||||||
- For Chrome, around 68% of tests pass with WebDriver BiDi, indicating room for improvement compared to the CDP-based approach.
|
- For Chrome, around 85% of tests pass with WebDriver BiDi, indicating room for improvement compared to the CDP-based approach.
|
||||||
|
|
||||||
## Get started
|
## Get started
|
||||||
|
|
||||||
@ -41,17 +41,28 @@ This is an exciting step towards a more unified and efficient cross-browser auto
|
|||||||
|
|
||||||
## Puppeteer features supported over WebDriver BiDi
|
## Puppeteer features supported over WebDriver BiDi
|
||||||
|
|
||||||
- Browser and page automation
|
- Browser automation
|
||||||
|
|
||||||
|
- Puppeteer.launch
|
||||||
- Browser.close
|
- Browser.close
|
||||||
- Frame.goto() (except `referer` and `referrerPolicy`)
|
- Browser.userAgent()
|
||||||
|
|
||||||
|
- Page automation
|
||||||
|
|
||||||
- Page.bringToFront
|
- Page.bringToFront
|
||||||
- Page.goBack()
|
- Page.goBack()
|
||||||
- Page.goForward()
|
- Page.goForward()
|
||||||
- Page.goto (except `referer` and `referrerPolicy`)
|
- Page.goto (except `referer` and `referrerPolicy`)
|
||||||
|
- Frame.goto() (except `referer` and `referrerPolicy`)
|
||||||
- Page.reload (except for `ignoreCache` parameter)
|
- Page.reload (except for `ignoreCache` parameter)
|
||||||
- Page.setViewport (`width`, `height`, `deviceScaleFactor` only)
|
- Page.setViewport (`width`, `height`, `deviceScaleFactor` only)
|
||||||
- Puppeteer.launch
|
- Page.cookies()
|
||||||
|
- Page.setCookie()
|
||||||
|
- Page.deleteCookie()
|
||||||
|
- Page.workers()
|
||||||
|
- PageEvent.WorkerCreated
|
||||||
|
- PageEvent.WorkerDestroyed
|
||||||
|
- Page.setExtraHTTPHeaders()
|
||||||
|
|
||||||
- [Script evaluation](https://pptr.dev/guides/evaluate-javascript):
|
- [Script evaluation](https://pptr.dev/guides/evaluate-javascript):
|
||||||
|
|
||||||
@ -100,13 +111,9 @@ This is an exciting step towards a more unified and efficient cross-browser auto
|
|||||||
- BrowserContext.clearPermissionOverrides()
|
- BrowserContext.clearPermissionOverrides()
|
||||||
- BrowserContext.overridePermissions()
|
- BrowserContext.overridePermissions()
|
||||||
|
|
||||||
## Puppeteer features not yet supported over WebDriver BiDi
|
|
||||||
|
|
||||||
- [Request interception](https://pptr.dev/guides/request-interception)
|
- [Request interception](https://pptr.dev/guides/request-interception)
|
||||||
|
- HTTPRequest.abort() (no custom error support)
|
||||||
- HTTPRequest.abort()
|
|
||||||
- HTTPRequest.abortErrorReason()
|
- HTTPRequest.abortErrorReason()
|
||||||
- HTTPRequest.client()
|
|
||||||
- HTTPRequest.continue()
|
- HTTPRequest.continue()
|
||||||
- HTTPRequest.continueRequestOverrides()
|
- HTTPRequest.continueRequestOverrides()
|
||||||
- HTTPRequest.failure()
|
- HTTPRequest.failure()
|
||||||
@ -117,6 +124,8 @@ This is an exciting step towards a more unified and efficient cross-browser auto
|
|||||||
- HTTPRequest.responseForRequest()
|
- HTTPRequest.responseForRequest()
|
||||||
- Page.setRequestInterception()
|
- Page.setRequestInterception()
|
||||||
|
|
||||||
|
## Puppeteer features not yet supported over WebDriver BiDi
|
||||||
|
|
||||||
- Various emulations (most are supported with Chrome)
|
- Various emulations (most are supported with Chrome)
|
||||||
|
|
||||||
- Page.emulate() (supported only in Chrome)
|
- Page.emulate() (supported only in Chrome)
|
||||||
@ -134,6 +143,7 @@ This is an exciting step towards a more unified and efficient cross-browser auto
|
|||||||
- CDP-specific features
|
- CDP-specific features
|
||||||
|
|
||||||
- Page.createCDPSession() (supported only in Chrome)
|
- Page.createCDPSession() (supported only in Chrome)
|
||||||
|
- HTTPRequest.client() (supported only in Chrome)
|
||||||
|
|
||||||
- Tracing (supported only in Chrome)
|
- Tracing (supported only in Chrome)
|
||||||
- Coverage (supported only in Chrome)
|
- Coverage (supported only in Chrome)
|
||||||
@ -141,7 +151,6 @@ This is an exciting step towards a more unified and efficient cross-browser auto
|
|||||||
|
|
||||||
- Other methods:
|
- Other methods:
|
||||||
|
|
||||||
- Browser.userAgent()
|
|
||||||
- Frame.isOOPFrame()
|
- Frame.isOOPFrame()
|
||||||
- Frame.waitForDevicePrompt()
|
- Frame.waitForDevicePrompt()
|
||||||
- HTTPResponse.buffer()
|
- HTTPResponse.buffer()
|
||||||
@ -152,8 +161,6 @@ This is an exciting step towards a more unified and efficient cross-browser auto
|
|||||||
- Input.dragOver()
|
- Input.dragOver()
|
||||||
- Input.drop()
|
- Input.drop()
|
||||||
- Page.authenticate()
|
- Page.authenticate()
|
||||||
- Page.cookies()
|
|
||||||
- Page.deleteCookie()
|
|
||||||
- Page.emulateNetworkConditions()
|
- Page.emulateNetworkConditions()
|
||||||
- Page.isDragInterceptionEnabled()
|
- Page.isDragInterceptionEnabled()
|
||||||
- Page.isJavaScriptEnabled() (supported only in Chrome)
|
- Page.isJavaScriptEnabled() (supported only in Chrome)
|
||||||
@ -162,15 +169,10 @@ This is an exciting step towards a more unified and efficient cross-browser auto
|
|||||||
- Page.queryObjects() (supported only in Chrome)
|
- Page.queryObjects() (supported only in Chrome)
|
||||||
- Page.screencast() (supported only in Chrome)
|
- Page.screencast() (supported only in Chrome)
|
||||||
- Page.setBypassServiceWorker()
|
- Page.setBypassServiceWorker()
|
||||||
- Page.setCookie()
|
|
||||||
- Page.setDragInterception()
|
- Page.setDragInterception()
|
||||||
- Page.setExtraHTTPHeaders()
|
|
||||||
- Page.setOfflineMode()
|
- Page.setOfflineMode()
|
||||||
- Page.setUserAgent()
|
- Page.setUserAgent()
|
||||||
- Page.waitForDevicePrompt()
|
- Page.waitForDevicePrompt()
|
||||||
- Page.waitForFileChooser()
|
- Page.waitForFileChooser()
|
||||||
- Page.workers()
|
|
||||||
- PageEvent.popup
|
- PageEvent.popup
|
||||||
- PageEvent.WorkerCreated
|
|
||||||
- PageEvent.WorkerDestroyed
|
|
||||||
- Target.opener()
|
- Target.opener()
|
||||||
|
@ -61,6 +61,8 @@ import {rewriteNavigationError} from './util.js';
|
|||||||
import type {BidiWebWorker} from './WebWorker.js';
|
import type {BidiWebWorker} from './WebWorker.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Implements Page using WebDriver BiDi.
|
||||||
|
*
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export class BidiPage extends Page {
|
export class BidiPage extends Page {
|
||||||
|
@ -2733,6 +2733,12 @@
|
|||||||
"expectations": ["TIMEOUT"],
|
"expectations": ["TIMEOUT"],
|
||||||
"comment": "When navigating to page with authentication the command response (error) never comes without interception"
|
"comment": "When navigating to page with authentication the command response (error) never comes without interception"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"testIdPattern": "[network.spec] network Page.setExtraHTTPHeaders should throw for non-string header values",
|
||||||
|
"platforms": ["darwin", "linux", "win32"],
|
||||||
|
"parameters": ["firefox", "webDriverBiDi"],
|
||||||
|
"expectations": ["PASS"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"testIdPattern": "[network.spec] network Page.setExtraHTTPHeaders should work",
|
"testIdPattern": "[network.spec] network Page.setExtraHTTPHeaders should work",
|
||||||
"platforms": ["darwin", "linux", "win32"],
|
"platforms": ["darwin", "linux", "win32"],
|
||||||
@ -3980,20 +3986,6 @@
|
|||||||
"expectations": ["SKIP"],
|
"expectations": ["SKIP"],
|
||||||
"comment": "TODO: add a comment explaining why this expectation is required (include links to issues)"
|
"comment": "TODO: add a comment explaining why this expectation is required (include links to issues)"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"testIdPattern": "[waittask.spec] waittask specs Frame.waitForSelector should survive cross-process navigation",
|
|
||||||
"platforms": ["darwin", "linux", "win32"],
|
|
||||||
"parameters": ["chrome", "webDriverBiDi"],
|
|
||||||
"expectations": ["SKIP"],
|
|
||||||
"comment": "TODO: add a comment explaining why this expectation is required (include links to issues)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"testIdPattern": "[waittask.spec] waittask specs Frame.waitForSelector should survive cross-process navigation",
|
|
||||||
"platforms": ["darwin", "linux", "win32"],
|
|
||||||
"parameters": ["firefox", "webDriverBiDi"],
|
|
||||||
"expectations": ["SKIP"],
|
|
||||||
"comment": "TODO: add a comment explaining why this expectation is required (include links to issues)"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"testIdPattern": "[waittask.spec] waittask specs Frame.waitForSelector should survive cross-process navigation",
|
"testIdPattern": "[waittask.spec] waittask specs Frame.waitForSelector should survive cross-process navigation",
|
||||||
"platforms": ["darwin", "linux", "win32"],
|
"platforms": ["darwin", "linux", "win32"],
|
||||||
|
Loading…
Reference in New Issue
Block a user