Coder Social home page Coder Social logo

Comments (14)

OrKoN avatar OrKoN commented on June 10, 2024 1

I am able to reproduce on a Mac using the sleep action. It looks like the websocket connection is disconnected (browser.connected === false when the error happens and also the disconnected event is emitted on the browser instance as expected). The disconnect comes from the web socket transport so I am not sure it is fixable, if the socket connection is severed the browser would destroy all automation agents so the only correct way is to re-connect Puppeteer again and set up everything again. You mentioned this worked before? Do you know which version was it?

from puppeteer.

OrKoN avatar OrKoN commented on June 10, 2024 1

As a workaround, use pipe: true when launching the browser to avoid using sockets for communication. In general, it looks like standby/sleep might be severing network connections as expected (?) and CDP does not really support reconnection once the socket was closed.

from puppeteer.

github-actions avatar github-actions commented on June 10, 2024

This issue was not reproducible. Please check that your example runs locally and the following:

  • Ensure the script does not rely on dependencies outside of puppeteer and puppeteer-core.
  • Ensure the error string is just the error message.
    • Bad:

      Error: something went wrong
        at Object.<anonymous> (/Users/username/repository/script.js:2:1)
        at Module._compile (node:internal/modules/cjs/loader:1159:14)
        at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
        at Module.load (node:internal/modules/cjs/loader:1037:32)
        at Module._load (node:internal/modules/cjs/loader:878:12)
        at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
        at node:internal/main/run_main_module:23:47
    • Good: Error: something went wrong.

  • Ensure your configuration file (if applicable) is valid.
  • If the issue is flaky (does not reproduce all the time), make sure 'Flaky' is checked.
  • If the issue is not expected to error, make sure to write 'no error'.

Once the above checks are satisfied, please edit your issue with the changes and we will
try to reproduce the bug again.


Analyzer run

from puppeteer.

OrKoN avatar OrKoN commented on June 10, 2024

v22.8.0 is only tested against the Chromium version 124.0.6367.91 Can you reproduce the issue using the Chrome for Testing binary that is downloaded by Puppeteer by default? Could you also include the CDP log when the error happens?

from puppeteer.

systemoperator avatar systemoperator commented on June 10, 2024

@OrKoN I've updated the working example.

The exact version of puppeteer is not that relevant. I had this issue for a year now, including the puppeteer versions within this time. For example, earlier, I've used puppeteer version 21.11.0 with the same issue. Also older Chromium versions have been used, with the same outcome.

I have now tried it with the Chrome for Testing binary that is downloaded by Puppeteer by default, as you suggested. The same behavior could be observed, with the output:

Error: Attempted to use detached Frame '33AFC84DE51AB885228B5314A97A0242'.
    at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
    at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
    at /home/aaa/xxx/test.js:18:18
done
Error: Attempted to use detached Frame '33AFC84DE51AB885228B5314A97A0242'.
    at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
    at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
    at /home/aaa/xxx/test.js:18:18
done
Error: Attempted to use detached Frame '33AFC84DE51AB885228B5314A97A0242'.
    at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
    at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
    at /home/aaa/xxx/test.js:18:18

Now run with:

Puppeteer version: 22.8.0 (unchanged)
Node version: 20.11.0 (unchanged)
Package manager: npm (unchanged)
Package manager version: 10.2.4 (unchanged)
Operating system: Linux, Debian 11.9 (64-bit) (unchanged)
Chrome version: Google Chrome for Testing, Version 124.0.6367.91 (Official Build) (64-bit)

The CDP log as requested:

done
TargetCloseError: Protocol error (Page.navigate): Target closed
    at CallbackRegistry.clear (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:72:36)
    at CdpCDPSession._onClosed (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:101:25)
    at #onClose (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:165:21)
    at Immediate.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js:50:34)
    at process.processImmediate (node:internal/timers:478:21)
    at process.callbackTrampoline (node:internal/async_hooks:130:17) {
  cause: ProtocolError
      at <instance_members_initializer> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:93:14)
      at new Callback (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:97:16)
      at CallbackRegistry.create (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:22:26)
      at Connection._rawSend (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:88:26)
      at CdpCDPSession.send (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:66:33)
      at navigate (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Frame.js:160:51)
      at CdpFrame.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Frame.js:138:17)
      at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:98:27)
      at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
      at /home/aaa/xxx/test.js:21:18
}
done
Error: Attempted to use detached Frame 'A023209FB3205A8676E8E57D6D3D98D6'.
    at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
    at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
    at /home/aaa/xxx/test.js:21:18
done
Error: Attempted to use detached Frame 'A023209FB3205A8676E8E57D6D3D98D6'.
    at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
    at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
    at /home/aaa/xxx/test.js:21:18
done

from puppeteer.

systemoperator avatar systemoperator commented on June 10, 2024

running with % env DEBUG="puppeteer:*" env DEBUG_COLORS=true node test.js 2>&1 | grep -v '"Network' showed:

puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"A88456549EAC4A62CFF1A691AA45E37C","targetInfo":{"targetId":"B2E4E9683F4B3E6BE2C173D327B5A90E","type":"service_worker","title":"Service Worker https://developer.chrome.com/sw.js","url":"https://developer.chrome.com/sw.js","attached":true,"canAccessOpener":false,"browserContextId":"31621F79EEE6CA0B589B34C010202998"},"waitingForDebugger":true},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":1,"sessionId":"A88456549EAC4A62CFF1A691AA45E37C"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:RECV ◀ [
[...]
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"383AD8DE73114917AF90FE8570C1992F"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Target.detachFromTarget","params":{"sessionId":"383AD8DE73114917AF90FE8570C1992F"},"id":4}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"A88456549EAC4A62CFF1A691AA45E37C"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Target.detachFromTarget","params":{"sessionId":"A88456549EAC4A62CFF1A691AA45E37C"},"id":19,"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:RECV ◀ [
[...]
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Target.detachedFromTarget","params":{"sessionId":"383AD8DE73114917AF90FE8570C1992F","targetId":"B2E4E9683F4B3E6BE2C173D327B5A90E"}}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [ '{"id":4,"result":{}}' ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Target.detachedFromTarget","params":{"sessionId":"A88456549EAC4A62CFF1A691AA45E37C","targetId":"B2E4E9683F4B3E6BE2C173D327B5A90E"},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":19,"result":{},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
[...]
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.loadEventFired","params":{"timestamp":239988.812602},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"F22625267E234D7275B8C58D6E13AD7B","loaderId":"0BD15FE2B0034EACA8D87F077FA339CF","name":"load","timestamp":239988.812602},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
  done
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.frameStoppedLoading","params":{"frameId":"F22625267E234D7275B8C58D6E13AD7B"},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
[...]
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.frameAttached","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","parentFrameId":"F22625267E234D7275B8C58D6E13AD7B","stack":{"callFrames":[{"functionName":"qw","scriptId":"14","url":"https://www.gstatic.com/devrel-devsite/prod/ve5ef9ac7b497e19ece9427facc78d0c59aaab7a2bc6a0f75fdae93f4ee589f67/js/devsite_app_custom_elements_module.js","lineNumber":263,"columnNumber":494}],"parent":{"description":"await","callFrames":[{"functionName":"fw","scriptId":"14","url":"https://www.gstatic.com/devrel-devsite/prod/ve5ef9ac7b497e19ece9427facc78d0c59aaab7a2bc6a0f75fdae93f4ee589f67/js/devsite_app_custom_elements_module.js","lineNumber":257,"columnNumber":162},{"functionName":"setup","scriptId":"14","url":"https://www.gstatic.com/devrel-devsite/prod/ve5ef9ac7b497e19ece9427facc78d0c59aaab7a2bc6a0f75fdae93f4ee589f67/js/devsite_app_custom_elements_module.js","lineNumber":274,"columnNumber":0}],"parent":{"description":"await","callFrames":[{"functionName":"setup","scriptId":"14","url":"https://www.gstatic.com/devrel-devsite/prod/ve5ef9ac7b497e19ece9427facc78d0c59aaab7a2bc6a0f75fdae93f4ee589f67/js/devsite_app_custom_elements_module.js","lineNumber":288,"columnNumber":356},{"functionName":"connectedCallback","scriptId":"14","url":"https://www.gstatic.com/devrel-devsite/prod/ve5ef9ac7b497e19ece9427facc78d0c59aaab7a2bc6a0f75fdae93f4ee589f67/js/devsite_app_custom_elements_module.js","lineNumber":273,"columnNumber":391},{"functionName":"connectedCallback","scriptId":"14","url":"https://www.gstatic.com/devrel-devsite/prod/ve5ef9ac7b497e19ece9427facc78d0c59aaab7a2bc6a0f75fdae93f4ee589f67/js/devsite_app_custom_elements_module.js","lineNumber":288,"columnNumber":111},{"functionName":"","scriptId":"28","url":"https://www.gstatic.com/devrel-devsite/prod/ve5ef9ac7b497e19ece9427facc78d0c59aaab7a2bc6a0f75fdae93f4ee589f67/js/devsite_devsite_analytics_module.js","lineNumber":0,"columnNumber":57},{"functionName":"","scriptId":"28","url":"https://www.gstatic.com/devrel-devsite/prod/ve5ef9ac7b497e19ece9427facc78d0c59aaab7a2bc6a0f75fdae93f4ee589f67/js/devsite_devsite_analytics_module.js","lineNumber":0,"columnNumber":177}]}}}},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"B82E8C664D3E459BA1917A63DBEA721B","name":"init","timestamp":239988.953262},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.frameStartedLoading","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74"},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"2AD6636B0D438E76EE882E04DCD25C74","type":"iframe","title":"","url":"","attached":false,"canAccessOpener":false,"browserContextId":"31621F79EEE6CA0B589B34C010202998"}}}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"2AD6636B0D438E76EE882E04DCD25C74","type":"iframe","title":"","url":"","attached":true,"canAccessOpener":false,"browserContextId":"31621F79EEE6CA0B589B34C010202998"}}}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"701928DC2E3AB72226A2D968CAF60B63","targetInfo":{"targetId":"2AD6636B0D438E76EE882E04DCD25C74","type":"iframe","title":"","url":"","attached":true,"canAccessOpener":false,"browserContextId":"31621F79EEE6CA0B589B34C010202998"},"waitingForDebugger":true},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Fetch.disable","id":4,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Page.enable","id":5,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Page.getFrameTree","id":6,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Page.setLifecycleEventsEnabled","params":{"enabled":true},"id":7,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Runtime.enable","id":8,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":9,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":10,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":4,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":3,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":5,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":6,"result":{"frameTree":{"frame":{"id":"2AD6636B0D438E76EE882E04DCD25C74","parentId":"F22625267E234D7275B8C58D6E13AD7B","loaderId":"ED24D958F4BDE167A742390D77C775A8","name":"","url":":","domainAndRegistry":"","securityOrigin":"://","mimeType":"text/html","adFrameStatus":{"adFrameType":"none"},"secureContextType":"InsecureScheme","crossOriginIsolatedContextType":"NotIsolatedFeatureDisabled","gatedAPIFeatures":[]}}},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"ED24D958F4BDE167A742390D77C775A8","name":"commit","timestamp":239988.965858},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"ED24D958F4BDE167A742390D77C775A8","name":"DOMContentLoaded","timestamp":239988.966082},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"ED24D958F4BDE167A742390D77C775A8","name":"networkAlmostIdle","timestamp":239988.966092},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"ED24D958F4BDE167A742390D77C775A8","name":"networkIdle","timestamp":239988.966092},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":7,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":8,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Page.addScriptToEvaluateOnNewDocument","params":{"source":"//# sourceURL=pptr:internal","worldName":"__puppeteer_utility_world__"},"id":11,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":9,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":10,"result":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":11,"result":{"identifier":"1"},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:SEND ► [
    puppeteer:protocol:SEND ►   '{"method":"Page.createIsolatedWorld","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","worldName":"__puppeteer_utility_world__","grantUniveralAccess":true},"id":12,"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:SEND ► ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"EC2001AD6A12BDB11B35E5CC79ADAA4C","name":"init","timestamp":239989.447055},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"2AD6636B0D438E76EE882E04DCD25C74","type":"iframe","title":"https://developers.google.com/_d/analytics-iframe","url":"https://developers.google.com/_d/analytics-iframe","attached":true,"canAccessOpener":false,"browserContextId":"31621F79EEE6CA0B589B34C010202998"}},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"2AD6636B0D438E76EE882E04DCD25C74","type":"iframe","title":"https://developers.google.com/_d/analytics-iframe","url":"https://developers.google.com/_d/analytics-iframe","attached":true,"canAccessOpener":false,"browserContextId":"31621F79EEE6CA0B589B34C010202998"}}}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.frameDetached","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","reason":"swap"},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextsCleared","params":{},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.frameNavigated","params":{"frame":{"id":"2AD6636B0D438E76EE882E04DCD25C74","parentId":"F22625267E234D7275B8C58D6E13AD7B","loaderId":"EC2001AD6A12BDB11B35E5CC79ADAA4C","name":"","url":"https://developers.google.com/_d/analytics-iframe","domainAndRegistry":"google.com","securityOrigin":"https://developers.google.com","mimeType":"text/html","adFrameStatus":{"adFrameType":"none","explanations":[]},"secureContextType":"Secure","crossOriginIsolatedContextType":"NotIsolatedFeatureDisabled","gatedAPIFeatures":[]},"type":"Navigation"},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"https://developers.google.com","name":"","uniqueId":"7084073672674550678.212438118653409540","auxData":{"isDefault":true,"type":"default","frameId":"2AD6636B0D438E76EE882E04DCD25C74"}}},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":2,"origin":"","name":"__puppeteer_utility_world__","uniqueId":"8432745131390137880.-4307715748158059442","auxData":{"isDefault":false,"type":"isolated","frameId":"2AD6636B0D438E76EE882E04DCD25C74"}}},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"id":12,"result":{"executionContextId":2},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"F22625267E234D7275B8C58D6E13AD7B","loaderId":"0BD15FE2B0034EACA8D87F077FA339CF","name":"networkAlmostIdle","timestamp":239988.888319},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"F22625267E234D7275B8C58D6E13AD7B","loaderId":"0BD15FE2B0034EACA8D87F077FA339CF","name":"firstMeaningfulPaint","timestamp":239987.450118},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"F22625267E234D7275B8C58D6E13AD7B","loaderId":"0BD15FE2B0034EACA8D87F077FA339CF","name":"networkIdle","timestamp":239988.995954},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.domContentEventFired","params":{"timestamp":239989.665317},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"EC2001AD6A12BDB11B35E5CC79ADAA4C","name":"DOMContentLoaded","timestamp":239989.665317},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.loadEventFired","params":{"timestamp":239989.666497},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"EC2001AD6A12BDB11B35E5CC79ADAA4C","name":"load","timestamp":239989.666497},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.frameStoppedLoading","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74"},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
[...]
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"EC2001AD6A12BDB11B35E5CC79ADAA4C","name":"networkAlmostIdle","timestamp":239989.666286},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"2AD6636B0D438E76EE882E04DCD25C74","loaderId":"EC2001AD6A12BDB11B35E5CC79ADAA4C","name":"networkIdle","timestamp":239990.413558},"sessionId":"701928DC2E3AB72226A2D968CAF60B63"}'
    puppeteer:protocol:RECV ◀ ] +0ms
    puppeteer:protocol:RECV ◀ [
    puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"F22625267E234D7275B8C58D6E13AD7B","loaderId":"0BD15FE2B0034EACA8D87F077FA339CF","name":"InteractiveTime","timestamp":239993.847758},"sessionId":"5C8FF259F5088844FDD025F0AA4D0A41"}'
    puppeteer:protocol:RECV ◀ ] +0ms
  Error: Attempted to use detached Frame 'F22625267E234D7275B8C58D6E13AD7B'.
      at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
      at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
      at /home/aaa/xxx/test.js:21:18
  done
  Error: Attempted to use detached Frame 'F22625267E234D7275B8C58D6E13AD7B'.
      at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
      at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
      at /home/aaa/xxx/test.js:21:18
  done
  Error: Attempted to use detached Frame 'F22625267E234D7275B8C58D6E13AD7B'.
      at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
      at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
      at /home/aaa/xxx/test.js:21:18
  done
  Error: Attempted to use detached Frame 'F22625267E234D7275B8C58D6E13AD7B'.
      at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
      at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
      at /home/aaa/xxx/test.js:21:18
  done
  Error: Attempted to use detached Frame 'F22625267E234D7275B8C58D6E13AD7B'.
      at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
      at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
      at /home/aaa/xxx/test.js:21:18
  done
  Error: Attempted to use detached Frame 'F22625267E234D7275B8C58D6E13AD7B'.
      at CdpFrame.<anonymous> (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:96:23)
      at CdpPage.goto (/home/aaa/xxx/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:585:43)
      at /home/aaa/xxx/test.js:21:18
  done

from puppeteer.

OrKoN avatar OrKoN commented on June 10, 2024

For future reference, here is the stacktrace of the socket disconnect:

➜  pptr-test node reset.cjs
[32873:259:0512/112546.673131:ERROR:chrome_browser_cloud_management_controller.cc(161)] Cloud management controller initialization aborted as CBCM is not enabled. Please use the `--enable-chrome-browser-cloud-management` command line flag to enable it if you are not using the official Google Chrome build.

DevTools listening on ws://127.0.0.1:65061/devtools/browser/a03b330c-7f4d-425f-9aba-3ae5e359d369
done
[32873:34307:0512/112552.228492:ERROR:unexportable_key_mac.mm(323)] Unexportable keys unavailable because keychain-access-group entitlement missing or incorrect. Expected value: .com.google.chrome.for.testing.unexportable-keys
closed Error
    at #onClose (/Users/alex/projects/pptr-test/node_modules/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:157:31)
    at Immediate._onImmediate (/Users/alex/projects/pptr-test/node_modules/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js:50:34)
    at process.processImmediate (node:internal/timers:478:21)
disconnected

which indicates that https://github.com/websockets/ws emitted the close event.

from puppeteer.

OrKoN avatar OrKoN commented on June 10, 2024

The connection is also closed for a bare ws client:

const WebSocket = require('ws');

const ws = new WebSocket(process.argv[2]); // pass the DevTools web socket server URL

ws.on('close', () => {
    console.log('closed')
});

ws.on('open', function open() {
  console.log('opened')
});

from puppeteer.

OrKoN avatar OrKoN commented on June 10, 2024

It does not happen for a bare ws server:

const WebSocket = require('ws');

const wss = new WebSocket.WebSocketServer({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.on('error', console.error);

  ws.on('message', function message(data) {
    console.log('received: %s', data);
  });
});

const ws = new WebSocket('ws://127.0.0.1:8080');

ws.on('close', () => {
    console.log('closed')
});

ws.on('open', function open() {
  console.log('opened')
});

so it looks like Chrome disconnects the socket on stanbdy/sleep.

from puppeteer.

OrKoN avatar OrKoN commented on June 10, 2024

It happens at least since Chrome 115.

from puppeteer.

systemoperator avatar systemoperator commented on June 10, 2024

As a workaround, use pipe: true when launching the browser to avoid using sockets for communication. In general, it looks like standby/sleep might be severing network connections as expected (?) and CDP does not really support reconnection once the socket was closed.

This is amazing, it works perfectly!

from puppeteer.

systemoperator avatar systemoperator commented on June 10, 2024

I am able to reproduce on a Mac using the sleep action. It looks like the websocket connection is disconnected (browser.connected === false when the error happens and also the disconnected event is emitted on the browser instance as expected). The disconnect comes from the web socket transport so I am not sure it is fixable, if the socket connection is severed the browser would destroy all automation agents so the only correct way is to re-connect Puppeteer again and set up everything again. You mentioned this worked before? Do you know which version was it?

It's difficult to reconstruct the version, but I can try it. The puppeteer version might be easy to find out. You would be interested in the Chromium version, right? What I can say for sure is the following observation: It seemed to be an OS-dependent issue. On Ubuntu 16.04.6, it worked without any issue with the standby. When I migrated my OS to Debian 11, this issue showed up immediately and I could not fix it.

from puppeteer.

systemoperator avatar systemoperator commented on June 10, 2024

As the issue seems independent of puppeteer's version, I would say, that any version listed on https://launchpad.net/ubuntu/xenial/+source/chromium-browser worked properly for Ubuntu 16.04 considering the standby issue, including the latest version 90.0.4430.72-0ubuntu0 for Ubuntu 16.04 (https://launchpad.net/ubuntu/+source/chromium-browser/90.0.4430.72-0ubuntu0.16.04.1).

from puppeteer.

OrKoN avatar OrKoN commented on June 10, 2024

@AntonioFavero is your problem also related to standby/reconnection? if not, it is not the same issue, and please file a separate one including a minimal reproducible example.

from puppeteer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.