microsoft / playwright

Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.
https://playwright.dev
Apache License 2.0
66.16k stars 3.61k forks source link

[BUG] Navigating to chrome://extensions for chromium >=115 closes the browser #26759

Closed ankur-lt closed 1 year ago

ankur-lt commented 1 year ago

System info

Source code

const { chromium } = require('playwright');

(async () => {
    const browser = await chromium.launch({
        headless: false,
    });
    const context = await browser.newContext();

    const page = await context.newPage();

    await page.goto('chrome://version');
    await page.goto('chrome://extensions');
    await page.goto('https://www.bing.com');

    await context.close();
    await browser.close();
})();

Steps

Expected For chromium <=114, we are able to navigate to chrome://extensions and thus we can enable extensions in incognito and run tests.

Actual For chromium >= 115, navigating to chrome://extensions closes the browser. The playwright server doesn't have any error logs. the logs are added below.

Playwright logs: playwright_server_logs.log CDP logs: CDP_logs.log

mxschmitt commented 1 year ago

Stack:

  pw:browser [pid=11006][err] Received signal 11 SEGV_MAPERR 000000000010 +3ms
  pw:browser [pid=11006][err] #0 0x5635c9d3d3b2 base::debug::CollectStackTrace() +6ms
  pw:browser [pid=11006][err] #1 0x5635c9d29c73 base::debug::StackTrace::StackTrace() +7ms
  pw:browser [pid=11006][err] #2 0x5635c9d3ce41 base::debug::(anonymous namespace)::StackDumpSignalHandler() +5ms
  pw:browser [pid=11006][err] #3 0x7f7f239a9520 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x4251f) +0ms
  pw:browser [pid=11006][err] #4 0x5635c9c5cebf SupervisedUserService::IsSubjectToParentalControls() +6ms
  pw:browser [pid=11006][err] #5 0x5635c9c5d9e9 SupervisedUserService::AreExtensionsPermissionsEnabled() +6ms
  pw:browser [pid=11006][err] #6 0x5635cc963043 extensions::DeveloperPrivateAPI::CreateProfileInfo() +10ms
  pw:browser [pid=11006][err] #7 0x5635cc96708f extensions::api::DeveloperPrivateGetProfileConfigurationFunction::Run() +9ms
  pw:browser [pid=11006][err] #8 0x5635c8af210f ExtensionFunction::RunWithValidation() +4ms
  pw:browser [pid=11006][err] #9 0x5635c8af59bd extensions::ExtensionFunctionDispatcher::DispatchWithCallbackInternal() +4ms
  pw:browser [pid=11006][err] #10 0x5635c8af4e52 extensions::ExtensionFunctionDispatcher::Dispatch() +4ms
  pw:browser [pid=11006][err] #11 0x5635c8af1233 extensions::ExtensionFrameHost::Request() +3ms
  pw:browser [pid=11006][err] #12 0x5635c866e0ba extensions::mojom::LocalFrameHostStubDispatch::AcceptWithResponder() +4ms
  pw:browser [pid=11006][err] #13 0x5635ca8822d8 mojo::InterfaceEndpointClient::HandleValidatedMessage() +7ms
  pw:browser [pid=11006][err] #14 0x5635ca888f01 mojo::MessageDispatcher::Accept() +6ms
  pw:browser [pid=11006][err] #15 0x5635ca883a5d mojo::InterfaceEndpointClient::HandleIncomingMessage() +7ms
  pw:browser [pid=11006][err] #16 0x5635ca9bd31d IPC::(anonymous namespace)::ChannelAssociatedGroupController::AcceptOnEndpointThread() +7ms
  pw:browser [pid=11006][err] #17 0x5635ca8866e6 base::internal::Invoker<>::RunOnce() +6ms
  pw:browser [pid=11006][err] #18 0x5635c9ccb714 base::TaskAnnotator::RunTaskImpl() +6ms
  pw:browser [pid=11006][err] #19 0x5635c9ce637f base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl() +6ms
  pw:browser [pid=11006][err] #20 0x5635c9ce5df9 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() +6ms
  pw:browser [pid=11006][err] #21 0x5635c9ce6855 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() +5ms
  pw:browser [pid=11006][err] #22 0x5635c9d51c2a base::(anonymous namespace)::WorkSourceDispatch() +6ms
  pw:browser [pid=11006][err] #23 0x7f7f246eed3b g_main_context_dispatch +0ms
  pw:browser [pid=11006][err] #24 0x7f7f24744258 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.4+0xab257) +0ms
  pw:browser [pid=11006][err] #25 0x7f7f246ec3e3 g_main_context_iteration +0ms
  pw:browser [pid=11006][err] #26 0x5635c9d5158a base::MessagePumpGlib::Run() +6ms
  pw:browser [pid=11006][err] #27 0x5635c9ce6bab base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run() +6ms
  pw:browser [pid=11006][err] #28 0x5635c9cab5c6 base::RunLoop::Run() +6ms
  pw:browser [pid=11006][err] #29 0x5635c7d0d443 content::BrowserMainLoop::RunMainMessageLoop() +2ms
  pw:browser [pid=11006][err] #30 0x5635c7d0f042 content::BrowserMainRunnerImpl::Run() +3ms
  pw:browser [pid=11006][err] #31 0x5635c7d0ab36 content::BrowserMain() +3ms
  pw:browser [pid=11006][err] #32 0x5635c919e158 content::RunBrowserProcessMain() +4ms
  pw:browser [pid=11006][err] #33 0x5635c919fa54 content::ContentMainRunnerImpl::RunBrowser() +5ms
  pw:browser [pid=11006][err] #34 0x5635c919f845 content::ContentMainRunnerImpl::Run() +4ms
  pw:browser [pid=11006][err] #35 0x5635c919cf7c content::RunContentProcess() +5ms
  pw:browser [pid=11006][err] #36 0x5635c919d0e6 content::ContentMain() +4ms
  pw:browser [pid=11006][err] #37 0x5635c58b3309 ChromeMain +15ms
  pw:browser [pid=11006][err] #38 0x7f7f23990d90 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) +0ms
  pw:browser [pid=11006][err] #39 0x7f7f23990e40 __libc_start_main +0ms
  pw:browser [pid=11006][err] #40 0x5635c58b302a _start +14ms
  pw:browser [pid=11006][err]   r8: 00007f7f24843000  r9: 0000000000000000 r10: 00005635d0712800 r11: 0000000000000020 +0ms
  pw:browser [pid=11006][err]  r12: 00000b240065cc80 r13: 00007ffe40861720 r14: 0000000000000010 r15: 00000b2400e98c60 +0ms
  pw:browser [pid=11006][err]   di: 0000000000000000  si: 00005635d024d768  bp: 00007ffe408614b0  bx: 00000b2400f3c080 +0ms
  pw:browser [pid=11006][err]   dx: 00005635c39e7250  ax: 0000000000000000  cx: 00000000d0070801  sp: 00007ffe40861490 +0ms
  pw:browser [pid=11006][err]   ip: 00005635c9c5cebf efl: 0000000000010206 cgf: 002b000000000033 erf: 0000000000000004 +0ms
  pw:browser [pid=11006][err]  trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000010 +0ms
  pw:browser [pid=11006][err] [end of stack trace] +0ms
  pw:browser [pid=11006][err] [0901/191536.004118:ERROR:nacl_helper_linux.cc(355)] NaCl helper process running without a sandbox! +81ms
  pw:browser [pid=11006][err] Most likely you need to configure your SUID sandbox correctly +1ms
  pw:browser [pid=11006] <process did exit: exitCode=null, signal=SIGSEGV> +0ms
  pw:browser [pid=11006] starting temporary directories cleanup +0ms

RANGE: https://chromium.googlesource.com/chromium/src/+log/b532da28bad9f79da0bae55df241d03eb2dd0e9d..d46243c7db1edf8b9ddb18aa582af840b25c82c3

Bisected to https://chromium.googlesource.com/chromium/src/+/e4749156477181ae0e85beebe29139d075e003a9

aslushnikov commented 1 year ago

@ankur-lt new chrome doesn't allow navigating to chrome://extensions in incognito context. If you try opening the page manually, it opens a new page in non-default context.

For chromium >= 115, navigating to chrome://extensions closes the browser.

This is an issue with CDP protocol; the page crashes while trying to navigate to the URL inside the incognito context. Could you please file this upstream to https://crbug.com/new ?

Navigation to chrome://extensions on chrome >=115 works when I checked with Playwright with chromium.connectOverCDP() method Puppeteer Taiko

This does work for non-incognito contexts. You can also launch persistent context with Playwright - it would work there as well.

mxschmitt commented 1 year ago

Filed as https://crbug.com/1478591. No action needed from the user anymore.

ankur-lt commented 1 year ago

Thanks @mxschmitt ! @aslushnikov , yes, it works with launch persistent context, but Playwright currently does not support launching Playwright server with persistent context. We run Playwright server on the LambdaTest cloud where users can run tests on different OS/browser combinations on the remote browser. I had created an issue regarding launching Playwright server with persistent context earlier: https://github.com/microsoft/playwright/issues/17120.

mxschmitt commented 1 year ago

Should be fixed in https://chromium-review.googlesource.com/c/chromium/src/+/4843033 which will land in Chrome Canary in a few days.

mxschmitt commented 1 year ago

Closing by that then!