Skip to content

Current limitations blocking Playwright's WebDriver BiDi adoption #32577

Open
@yury-s

Description

We've spent a couple weeks adding support for Bidi to Playwright and running Playwright tests with the new protocol. The good news is there has been a large progress in Bidi support in Firefox and Chromium, many Playwright tests are now passing. However, there is still a long list of issues that are blocking Playwright from adopting Bidi as the browser automation protocol. At this point the number of bugs we identified is too large to file individual reports for each of them, instead we'll use this issue to describe some of the major problems that we've discovered.

🎉 Current stats are the following:

  • Chromium: 2368 / 3877 passed (3.2m)
  • Firefox: 1469 / 3877 passed (4.1m)

Spec

These are just some of the issue that we discovered while looking at the first cut. There are many other issues that are currently blocked by the ones above.

Implementation

  • Firefox: browsingContext.setViewport fails intermittently with {"type":"error","id":14,"error":"unknown error","message":"AbortError: Actor 'MessageHandlerFrame' destroyed before query 'MessageHandlerFrameParent:sendCommand' was resolved","stacktrace":""}. See this bug report.
  • Firefox: page.setContent doesn't work because of 'Error: page.setContent: SecurityError: The operation is insecure.' in utility context. Bug report
  • Firefox pointerDown/pointerUp/pointerDown/pointerUp in separate input.performActions commands don't generate dblclick event, see 'should dblclick the div' in page-mouse.spec.ts
  • Firefox: script.realmDestroyed comes after browsingContext.contextDestroyed
  • Firefox: script.evaluate exception have no details/message
  • Firefox: browsingContext.contextDestroyed comes before input.performActions response, see 'should not throw UnhandledPromiseRejection when page closes'. I.e. some events can come after browsingContext was destroyed.
  • Firefox: navigation id stays the same for different navigations, see 'should return from goto if new navigation is started'
  • Intermittent Error: Protocol error (script.evaluate): unknown error
    Message: AbortError: Actor 'MessageHandlerFrame' destroyed before query 'MessageHandlerFrameParent:sendCommand' was resolved - apparently fails if a command is sent before about:blank navigation finishes.
  • Firefox: lazy loading iframes are not reported (can be disabled in settings I think)
  • Firefox: setViewport does not affect window.screen.width/height, matchMedia, see 'should emulate device width'
  • Firefox: CSP tests are failing
  • Firefox: "url" not supported yet in network.continueRequest
  • Firefox: no requestfailed event when it's cancelled by the page, see 'should not throw if request was cancelled by the page' in
  • Firefox: 'should amend utf8 post data' - doesn't work with non-latin post data
  • Firefox: 'redirected requests should report overridden headers' - does not allow to override headers on redirects
  • Firefox: browsingContext.create sometimes hangs in parallel tests
  • Firefox: browsingContext.downloadWillBegin is not fired
  • Firefox: "Blocked request with id 15 not found" when sending network.continueWithAuth, authentication not working
  • Firefox: about:blank page is required for firefox to not close even in headless! (--silent didn't work)
  • Firefox: crash reporter dialog, can probably be fixed with settings.
  • Firefox: need canonical settings for testing browser
  • Chromium: Method 'network.setCacheBehavior' is not implemented.

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions