cuprite icon indicating copy to clipboard operation
cuprite copied to clipboard

PDF download timing out on Chromium > 127

Open brianclinkenbeard opened this issue 1 year ago • 12 comments

After updating past Chromium 127, running RSpec tests on PDF downloads now uniformly time out. We use this somewhat popular helper code to yield the download after clicking a PDF link:

module DownloadHelpers
  TIMEOUT = 10
  PATH    = Capybara.save_path

  module_function

  def downloads
    Dir[PATH.join('*.{pdf,csv}')]
  end

  def download
    downloads.first
  end

  def download_content
    wait_for_download
    File.read(download)
  end

  def wait_for_download
    Timeout.timeout(TIMEOUT) do
      sleep 0.1 until downloaded?
    end
  end

  def downloaded?
    !downloading? && downloads.any?
  end

  def downloading?
    downloads.grep(/\.crdownload$/).any?
  end

  def clear_downloads
    FileUtils.rm_f(downloads)
  end
end

RSpec.configure do |config|
  config.include DownloadHelpers, type: :system

  config.before(:each, type: :system) do
    clear_downloads
  end
  config.after(:each, type: :system) do
    clear_downloads
  end
end

Waiting for a PDF download just hangs indefinitely. Watching with headless turned off, the PDF will never load in the new tab, however, trying this manually on a clean instance of Chromium will load the PDF perfectly. Perhaps an upstream regression with the CDP? Maybe also related: https://github.com/rubycdp/ferrum/discussions/457#discussioncomment-9151778

brianclinkenbeard avatar Nov 08 '24 23:11 brianclinkenbeard

Any luck here? I am having the same issue with the same helper downloading a file (not a PDF).

huda-kh avatar Dec 01 '24 23:12 huda-kh

Thanks for the hint @brianclinkenbeard. Recently our tests related to file downloads started to fail and I had no clue why. We use the same or similar download handling code. I could get some tests running again by changing the way kt-paperclip constructs URLs (sic), but other still failed and I didn't really know how to proceed.

After reading your issue I thought, maybe that hit us as well. We have a layered Docker setup for our app. The lowest layer is a base image derived from the ruby-3.3 image. Into this image we install additionally required external tools like chrome by adding the chrome repo from Google and installing the package google-chrome-stable. For an unrelated reason I built a new version of this image and after that the aforementioned issues started to occur.

I replaced the repo version of chrome by the headless variant found here: https://googlechromelabs.github.io/chrome-for-testing/ (back linked to from here https://developer.chrome.com/blog/chrome-for-testing, so I believe it is credible). First I used some older version (some 127) but then I wondered whether newer versions also work. And indeed, the currently latest stable version 131.0.6778.87 also works.

I changed our base image to install chrome from that archive file rather then the repo, so we have control over the actually used version and when to update.

RST-J avatar Dec 09 '24 09:12 RST-J

It's not cuprite/ferrum issue, find the version that still works

route avatar Jan 07 '25 10:01 route

For me, the problem only occurs with specific versions of cuprite / ferrum:

  • cuprite 0.15 / ferrum 0.14: Dowloading works
  • cuprite 0.15.1 / ferrum 0.15: Downloading fails

It does not seem to be affected by the version of Chrome (I tried both Chrome for Testing v113.0.5672.0 and v133.0.6943.2).

Also, the problem seems to be triggered by opening a new (second) browser window during a test. We have tests like this (using RSpec and Capybara):

scenario "foo" do
  visit root_path
  print_view_window = window_opened_by do
    click_on "Open print view"
  end
  within_window print_view_window do
    expect(page).to have_css("h1", text: "Dolor lorem ipsum")
  end
  print_view_window.close
end

These tests run fine. However, as soon as one such test has been executed, all subsequent tests trying to download a file fail. Again, this only happens with cuprite 0.15.1 / ferrum 0.15.

noniq avatar Jan 08 '25 12:01 noniq

Interesting, @noniq could you try to activate given page with https://github.com/rubycdp/ferrum/commit/600d63d0a2b1fd7787f69038ffeb9eabcc6c2f49 for ferrum 0.15

route avatar Jan 08 '25 13:01 route

Not really sure if I got this right – I tried the following:

scenario "foo" do
  visit root_path
  print_view_window = window_opened_by do
    click_on "Open print view"
  end

  # ADDED 
  print_view_window.session.driver.browser.page.activate

  within_window print_view_window do
    expect(page).to have_css("h1", text: "Dolor lorem ipsum")
  end
  print_view_window.close
end

This does not make a difference, though.

noniq avatar Jan 08 '25 13:01 noniq

hm I think wrong target is active, I have a sense what's going on. Let me try to reproduce it with pure Cuprite test

route avatar Jan 08 '25 13:01 route

running chromium-132.0.6834.83-1.el9 on rocky linux in a docker context both seem to timeout for me, so it may still be chromium related

 cuprite (0.15)
      capybara (~> 3.0)
      ferrum (~> 0.14.0)

and

cuprite (0.15.1)
      capybara (~> 3.0)
      ferrum (~> 0.15.0)

running via chrome external of docker is fine

phyzical avatar Jan 22 '25 06:01 phyzical

hm I think wrong target is active, I have a sense what's going on. Let me try to reproduce it with pure Cuprite test

@route Did this go anywhere? Any way I could help?

brianclinkenbeard avatar Apr 10 '25 06:04 brianclinkenbeard

I'm also seeing problems with Chrome when using Cuprite >=0.15.1. We see recurring issues with Failed to find browser context for id <hex id>.

Ferrum traceback

1.1) Failure/Error: visit patients_path
      Ferrum::BrowserError:
        Failed to find browser context for id 1274A81C8D5668C26F3AA90EFB5D8A34
      # /usr/local/bundle/gems/ferrum-0.17.1/lib/ferrum/client.rb:175:in 'Ferrum::Client#raise_browser_error'
      # /usr/local/bundle/gems/ferrum-0.17.1/lib/ferrum/client.rb:99:in 'Ferrum::Client#send_message'
      # /usr/local/bundle/gems/ferrum-0.17.1/lib/ferrum/client.rb:24:in 'Ferrum::SessionClient#command'
      # /usr/local/bundle/gems/ferrum-0.17.1/lib/ferrum/page.rb:358:in 'Ferrum::Page#command'
      # /usr/local/bundle/gems/ferrum-0.17.1/lib/ferrum/downloads.rb:28:in 'Ferrum::Downloads#set_behavior'
      # /usr/local/bundle/gems/ferrum-0.17.1/lib/ferrum/page.rb:477:in 'Ferrum::Page#prepare_page'
      # /usr/local/bundle/gems/cuprite-0.17/lib/capybara/cuprite/page.rb:144:in 'Capybara::Cuprite::Page#prepare_page'
      # /usr/local/bundle/gems/ferrum-0.17.1/lib/ferrum/page.rb:94:in 'Ferrum::Page#initialize'
      # /usr/local/bundle/gems/cuprite-0.17/lib/capybara/cuprite/page.rb:27:in 'Capybara::Cuprite::Page#initialize'
      # /usr/local/bundle/gems/cuprite-0.17/lib/capybara/cuprite/browser.rb:261:in 'Class#new'
      # /usr/local/bundle/gems/cuprite-0.17/lib/capybara/cuprite/browser.rb:261:in 'Capybara::Cuprite::Browser#attach_page'
      # /usr/local/bundle/gems/cuprite-0.17/lib/capybara/cuprite/browser.rb:33:in 'Capybara::Cuprite::Browser#page'
      # /usr/local/bundle/gems/cuprite-0.17/lib/capybara/cuprite/browser.rb:75:in 'Capybara::Cuprite::Browser#visit'
      # /usr/local/bundle/gems/cuprite-0.17/lib/capybara/cuprite/driver.rb:57:in 'Capybara::Cuprite::Driver#visit'
      # /usr/local/bundle/gems/capybara-3.40.0/lib/capybara/session.rb:281:in 'Capybara::Session#visit'
      # /usr/local/bundle/gems/capybara-3.40.0/lib/capybara/dsl.rb:52:in 'Method#call'
      # /usr/local/bundle/gems/capybara-3.40.0/lib/capybara/dsl.rb:52:in 'Capybara::DSL#visit'
      # ./spec/system/sidebar_spec.rb:71:in 'block (3 levels) in <top (required)>'
      # /usr/local/bundle/gems/webmock-3.25.1/lib/webmock/rspec.rb:39:in 'block (2 levels) in <top (required)>'

Chrome traceback

2025-05-14 11:32:56.760 | 2025-05-14T10:32:56.760Z pw:channel 
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/docs'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/metrics'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/metrics'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/metrics'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/metrics/total'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/metrics/total'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/metrics/total'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/config'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/config'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/config'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/workspace'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/workspace'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/workspace'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/workspace'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/workspace'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/workspace'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new /^\/workspace\/(.*)/
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new /^\/workspace\/(.*)/
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route get /^\/workspace\/(.*)/ { fast_star: false, fast_slash: false }
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new /^\/workspace\/(.*)/
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new /^\/workspace\/(.*)/
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route delete /^\/workspace\/(.*)/ { fast_star: false, fast_slash: false }
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/download'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/download'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/download'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/download'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/download'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/pressure'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/pressure'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/pressure'
2025-05-14 11:32:56.872 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/function'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/function'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/function'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/function'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/function'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/function'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/kill/all'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/kill/all'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/kill/all'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/kill/:id'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/kill/:id'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/kill/:id'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/screencast'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/screencast'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/screencast'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/screencast'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/screencast'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/screenshot'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/screenshot'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/screenshot'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/screenshot'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/screenshot'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/screenshot'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/content'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/content'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/content'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/content'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/content'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/content'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/scrape'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/scrape'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/scrape'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/scrape'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/scrape'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/pdf'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/pdf'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/pdf'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/pdf'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/pdf'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/pdf'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/stats'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/stats'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/stats'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/stats'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route post '/stats'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/json/protocol'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/json/protocol'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/json/protocol'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/json/new'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/json/new'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/json/new'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/json/version'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/json/version'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/json/version'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/json*'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/json*'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/json*'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route new '/sessions'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/sessions'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:route get '/sessions'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router use '/devtools' serveStatic
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/devtools'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router use '/' serveStatic
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router use '/' router
2025-05-14 11:32:56.873 | Wed, 14 May 2025 10:32:56 GMT express:router:layer new '/'
2025-05-14 11:33:04.517 | Wed, 14 May 2025 10:33:04 GMT express:router dispatching GET /json/version
2025-05-14 11:33:04.518 | Wed, 14 May 2025 10:33:04 GMT express:router query  : /json/version
2025-05-14 11:33:04.518 | Wed, 14 May 2025 10:33:04 GMT express:router expressInit  : /json/version
2025-05-14 11:33:04.518 | Wed, 14 May 2025 10:33:04 GMT express:router middleware  : /json/version
2025-05-14 11:33:04.518 | Wed, 14 May 2025 10:33:04 GMT express:router serveStatic  : /json/version
2025-05-14 11:33:04.519 | Wed, 14 May 2025 10:33:04 GMT send stat "/usr/src/app/node_modules/browserless-debugger/static/json/version"
2025-05-14 11:33:04.519 | Wed, 14 May 2025 10:33:04 GMT express:router router  : /json/version
2025-05-14 11:33:04.519 | Wed, 14 May 2025 10:33:04 GMT express:router dispatching GET /json/version
2025-05-14 11:33:04.521 | 
2025-05-14 11:33:04.521 |   Puppeteer old Headless deprecation warning:
2025-05-14 11:33:04.521 |     In the near future `headless: true` will default to the new Headless mode
2025-05-14 11:33:04.521 |     for Chrome instead of the old Headless implementation. For more
2025-05-14 11:33:04.521 |     information, please see https://developer.chrome.com/articles/new-headless/.
2025-05-14 11:33:04.521 |     Consider opting in early by passing `headless: "new"` to `puppeteer.launch()`
2025-05-14 11:33:04.521 |     If you encounter any bugs, please report them to https://github.com/puppeteer/puppeteer/issues/new/choose.
2025-05-14 11:33:04.521 | 
2025-05-14 11:33:04.522 | 2025-05-14T10:33:04.521Z puppeteer:browsers:launcher Launching /usr/bin/google-chrome --allow-pre-commit-input --disable-background-networking --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-component-update --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-field-trial-config --disable-hang-monitor --disable-infobars --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-search-engine-choice-screen --disable-sync --enable-automation --export-tagged-pdf --force-color-profile=srgb --metrics-recording-only --no-first-run --password-store=basic --use-mock-keychain --disable-features=Translate,AcceptCHFrame,MediaRouter,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold --enable-features=NetworkServiceInProcess2 --headless --hide-scrollbars --mute-audio about:blank --no-sandbox --enable-logging --v1=1 --disable-dev-shm-usage --no-first-run --remote-debugging-port=40821 --user-data-dir=/tmp/puppeteer_dev_chrome_profile-YRlwmH {
2025-05-14 11:33:04.522 |   detached: true,
2025-05-14 11:33:04.522 |   env: {
2025-05-14 11:33:04.522 |     PUPPETEER_CHROMIUM_REVISION: '',
2025-05-14 11:33:04.522 |     PUPPETEER_CACHE_DIR: '/usr/src/app',
2025-05-14 11:33:04.522 |     PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 'true'
2025-05-14 11:33:04.522 |   },
2025-05-14 11:33:04.522 |   stdio: [ 'pipe', 'ignore', 'pipe' ]
2025-05-14 11:33:04.522 | }
2025-05-14 11:33:04.524 | 2025-05-14T10:33:04.524Z puppeteer:browsers:launcher Launched 21
2025-05-14 11:33:04.732 | 2025-05-14T10:33:04.731Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.733 |   '{"method":"Target.setDiscoverTargets","params":{"discover":true,"filter":[{}]},"id":1}'
2025-05-14 11:33:04.733 | ]
2025-05-14 11:33:04.735 | 2025-05-14T10:33:04.735Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.735 |   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"2120e780-037e-4bd2-aab6-5b34270407c4","type":"browser","title":"","url":"","attached":true,"canAccessOpener":false}}}'
2025-05-14 11:33:04.735 | ]
2025-05-14 11:33:04.737 | 2025-05-14T10:33:04.736Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.737 |   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"47372C06F4AB733957C6F4D62BF1D333","type":"page","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"}}}'
2025-05-14 11:33:04.737 | ]
2025-05-14 11:33:04.737 | 2025-05-14T10:33:04.736Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.737 |   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"6fdcd6b9-b9f3-4f3a-b4aa-b65cdc6fb113","type":"browser","title":"","url":"","attached":false,"canAccessOpener":false}}}'
2025-05-14 11:33:04.737 | ]
2025-05-14 11:33:04.737 | 2025-05-14T10:33:04.737Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.737 |   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"E1F8B7149B4F3015A140A1C5B9073DA6","type":"tab","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"}}}'
2025-05-14 11:33:04.737 | ]
2025-05-14 11:33:04.737 | 2025-05-14T10:33:04.737Z puppeteer:protocol:RECV ◀ [ '{"id":1,"result":{}}' ]
2025-05-14 11:33:04.737 | 2025-05-14T10:33:04.737Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.737 |   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{"type":"page","exclude":true},{}]},"id":2}'
2025-05-14 11:33:04.737 | ]
2025-05-14 11:33:04.739 | 2025-05-14T10:33:04.738Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.739 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"E1F8B7149B4F3015A140A1C5B9073DA6","type":"tab","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"}}}'
2025-05-14 11:33:04.739 | ]
2025-05-14 11:33:04.740 | 2025-05-14T10:33:04.740Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.740 |   '{"method":"Target.attachedToTarget","params":{"sessionId":"96D85101A5C6B92BD6EA8566E7775CC1","targetInfo":{"targetId":"E1F8B7149B4F3015A140A1C5B9073DA6","type":"tab","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"},"waitingForDebugger":false}}'
2025-05-14 11:33:04.740 | ]
2025-05-14 11:33:04.740 | 2025-05-14T10:33:04.740Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.740 |   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"96D85101A5C6B92BD6EA8566E7775CC1"}'
2025-05-14 11:33:04.740 | ]
2025-05-14 11:33:04.740 | 2025-05-14T10:33:04.740Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.740 |   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"96D85101A5C6B92BD6EA8566E7775CC1"}'
2025-05-14 11:33:04.740 | ]
2025-05-14 11:33:04.740 | 2025-05-14T10:33:04.740Z puppeteer:protocol:RECV ◀ [ '{"id":2,"result":{}}' ]
2025-05-14 11:33:04.744 | 2025-05-14T10:33:04.744Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.744 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"47372C06F4AB733957C6F4D62BF1D333","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"}}}'
2025-05-14 11:33:04.744 | ]
2025-05-14 11:33:04.745 | 2025-05-14T10:33:04.745Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.745 |   '{"method":"Target.attachedToTarget","params":{"sessionId":"506382225FE4C9E58648803089CBA63B","targetInfo":{"targetId":"47372C06F4AB733957C6F4D62BF1D333","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"},"waitingForDebugger":false},"sessionId":"96D85101A5C6B92BD6EA8566E7775CC1"}'
2025-05-14 11:33:04.745 | ]
2025-05-14 11:33:04.745 | 2025-05-14T10:33:04.745Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.745 |   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"506382225FE4C9E58648803089CBA63B"}'
2025-05-14 11:33:04.745 | ]
2025-05-14 11:33:04.746 | 2025-05-14T10:33:04.745Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.746 |   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"506382225FE4C9E58648803089CBA63B"}'
2025-05-14 11:33:04.746 | ]
2025-05-14 11:33:04.746 | 2025-05-14T10:33:04.746Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.746 |   '{"id":1,"result":{},"sessionId":"96D85101A5C6B92BD6EA8566E7775CC1"}'
2025-05-14 11:33:04.746 | ]
2025-05-14 11:33:04.746 | 2025-05-14T10:33:04.746Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.746 |   '{"id":2,"result":{},"sessionId":"96D85101A5C6B92BD6EA8566E7775CC1"}'
2025-05-14 11:33:04.746 | ]
2025-05-14 11:33:04.769 | 2025-05-14T10:33:04.769Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.769 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"47372C06F4AB733957C6F4D62BF1D333","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"}}}'
2025-05-14 11:33:04.769 | ]
2025-05-14 11:33:04.769 | 2025-05-14T10:33:04.769Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.769 |   '{"id":1,"result":{},"sessionId":"506382225FE4C9E58648803089CBA63B"}'
2025-05-14 11:33:04.769 | ]
2025-05-14 11:33:04.769 | 2025-05-14T10:33:04.769Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.769 |   '{"id":2,"result":{},"sessionId":"506382225FE4C9E58648803089CBA63B"}'
2025-05-14 11:33:04.769 | ]
2025-05-14 11:33:04.781 | 2025-05-14T10:33:04.781Z puppeteer:protocol:SEND ► [ '{"method":"Browser.close","id":3}' ]
2025-05-14 11:33:04.786 | 2025-05-14T10:33:04.786Z puppeteer:protocol:RECV ◀ [ '{"id":3,"result":{}}' ]
2025-05-14 11:33:04.787 | 2025-05-14T10:33:04.786Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.787 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"47372C06F4AB733957C6F4D62BF1D333","type":"page","title":"about:blank","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"}}}'
2025-05-14 11:33:04.787 | ]
2025-05-14 11:33:04.788 | 2025-05-14T10:33:04.788Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.788 |   '{"method":"Target.detachedFromTarget","params":{"sessionId":"506382225FE4C9E58648803089CBA63B","targetId":"47372C06F4AB733957C6F4D62BF1D333"},"sessionId":"96D85101A5C6B92BD6EA8566E7775CC1"}'
2025-05-14 11:33:04.788 | ]
2025-05-14 11:33:04.788 | 2025-05-14T10:33:04.788Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.788 |   '{"method":"Target.targetDestroyed","params":{"targetId":"47372C06F4AB733957C6F4D62BF1D333"}}'
2025-05-14 11:33:04.788 | ]
2025-05-14 11:33:04.788 | 2025-05-14T10:33:04.788Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.788 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"E1F8B7149B4F3015A140A1C5B9073DA6","type":"tab","title":"","url":"","attached":false,"canAccessOpener":false,"browserContextId":"BA6F45DBB3AC609564B1979934905141"}}}'
2025-05-14 11:33:04.788 | ]
2025-05-14 11:33:04.789 | 2025-05-14T10:33:04.789Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.789 |   '{"method":"Target.detachedFromTarget","params":{"sessionId":"96D85101A5C6B92BD6EA8566E7775CC1","targetId":"E1F8B7149B4F3015A140A1C5B9073DA6"}}'
2025-05-14 11:33:04.789 | ]
2025-05-14 11:33:04.789 | 2025-05-14T10:33:04.789Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.789 |   '{"method":"Target.targetDestroyed","params":{"targetId":"E1F8B7149B4F3015A140A1C5B9073DA6"}}'
2025-05-14 11:33:04.789 | ]
2025-05-14 11:33:04.791 | 2025-05-14T10:33:04.791Z browserless:job W62K50HHY47LN2Z3630RM6NUEYARC6RT: /: Inbound WebSocket request.
2025-05-14 11:33:04.797 | 2025-05-14T10:33:04.797Z puppeteer:browsers:launcher Browser process 21 onExit
2025-05-14 11:33:04.799 | 2025-05-14T10:33:04.799Z browserless:hardware Checking overload status: CPU 2% Memory 37%
2025-05-14 11:33:04.799 | 2025-05-14T10:33:04.799Z browserless:job W62K50HHY47LN2Z3630RM6NUEYARC6RT: Adding new job to queue.
2025-05-14 11:33:04.800 | 2025-05-14T10:33:04.800Z browserless:server Starting new job
2025-05-14 11:33:04.800 | 2025-05-14T10:33:04.800Z browserless:system Generating fresh chrome browser
2025-05-14 11:33:04.800 | 2025-05-14T10:33:04.800Z browserless:job W62K50HHY47LN2Z3630RM6NUEYARC6RT: Getting browser.
2025-05-14 11:33:04.801 | 2025-05-14T10:33:04.801Z browserless:chrome-helper Launching Chrome with args: {
2025-05-14 11:33:04.801 |   "args": [
2025-05-14 11:33:04.801 |     "--no-sandbox",
2025-05-14 11:33:04.801 |     "--enable-logging",
2025-05-14 11:33:04.801 |     "--v1=1",
2025-05-14 11:33:04.801 |     "--disable-dev-shm-usage",
2025-05-14 11:33:04.801 |     "--no-first-run",
2025-05-14 11:33:04.801 |     "--remote-debugging-port=38855",
2025-05-14 11:33:04.801 |     "--user-data-dir=/tmp/browserless-data-dir-VG9QJD"
2025-05-14 11:33:04.801 |   ],
2025-05-14 11:33:04.801 |   "blockAds": false,
2025-05-14 11:33:04.801 |   "dumpio": false,
2025-05-14 11:33:04.801 |   "headless": "new",
2025-05-14 11:33:04.801 |   "stealth": false,
2025-05-14 11:33:04.801 |   "ignoreDefaultArgs": false,
2025-05-14 11:33:04.801 |   "ignoreHTTPSErrors": false,
2025-05-14 11:33:04.801 |   "pauseOnConnect": false,
2025-05-14 11:33:04.801 |   "playwright": false,
2025-05-14 11:33:04.801 |   "userDataDir": "/tmp/browserless-data-dir-VG9QJD",
2025-05-14 11:33:04.801 |   "meta": {
2025-05-14 11:33:04.801 |     "protocol": null,
2025-05-14 11:33:04.801 |     "slashes": null,
2025-05-14 11:33:04.801 |     "auth": null,
2025-05-14 11:33:04.801 |     "host": null,
2025-05-14 11:33:04.801 |     "port": null,
2025-05-14 11:33:04.801 |     "hostname": null,
2025-05-14 11:33:04.801 |     "hash": null,
2025-05-14 11:33:04.801 |     "search": null,
2025-05-14 11:33:04.801 |     "query": {},
2025-05-14 11:33:04.801 |     "pathname": "/",
2025-05-14 11:33:04.801 |     "path": "/",
2025-05-14 11:33:04.801 |     "href": "/"
2025-05-14 11:33:04.801 |   },
2025-05-14 11:33:04.801 |   "executablePath": "/usr/bin/google-chrome",
2025-05-14 11:33:04.801 |   "handleSIGINT": false,
2025-05-14 11:33:04.801 |   "handleSIGTERM": false,
2025-05-14 11:33:04.801 |   "handleSIGHUP": false
2025-05-14 11:33:04.801 | }
2025-05-14 11:33:04.801 | 2025-05-14T10:33:04.801Z puppeteer:browsers:launcher Launching /usr/bin/google-chrome --allow-pre-commit-input --disable-background-networking --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-component-update --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-field-trial-config --disable-hang-monitor --disable-infobars --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-search-engine-choice-screen --disable-sync --enable-automation --export-tagged-pdf --force-color-profile=srgb --metrics-recording-only --no-first-run --password-store=basic --use-mock-keychain --disable-features=Translate,AcceptCHFrame,MediaRouter,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold --enable-features=NetworkServiceInProcess2 --user-data-dir=/tmp/browserless-data-dir-VG9QJD --headless=new --hide-scrollbars --mute-audio about:blank --no-sandbox --enable-logging --v1=1 --disable-dev-shm-usage --no-first-run --remote-debugging-port=38855 --user-data-dir=/tmp/browserless-data-dir-VG9QJD {
2025-05-14 11:33:04.801 |   detached: true,
2025-05-14 11:33:04.801 |   env: {
2025-05-14 11:33:04.801 |     PUPPETEER_CHROMIUM_REVISION: '',
2025-05-14 11:33:04.801 |     PUPPETEER_CACHE_DIR: '/usr/src/app',
2025-05-14 11:33:04.801 |     PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 'true'
2025-05-14 11:33:04.801 |   },
2025-05-14 11:33:04.801 |   stdio: [ 'pipe', 'ignore', 'pipe' ]
2025-05-14 11:33:04.801 | }
2025-05-14 11:33:04.803 | 2025-05-14T10:33:04.803Z puppeteer:browsers:launcher Launched 67
2025-05-14 11:33:04.913 | 2025-05-14T10:33:04.913Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.913 |   '{"method":"Target.setDiscoverTargets","params":{"discover":true,"filter":[{}]},"id":1}'
2025-05-14 11:33:04.913 | ]
2025-05-14 11:33:04.920 | 2025-05-14T10:33:04.920Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.920 |   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"3FE402E688A77630B081CA1310C76D4B","type":"tab","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"}}}'
2025-05-14 11:33:04.920 | ]
2025-05-14 11:33:04.920 | 2025-05-14T10:33:04.920Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.920 |   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"5012FE069D34312545AC6CF09176E600","type":"page","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"}}}'
2025-05-14 11:33:04.920 | ]
2025-05-14 11:33:04.920 | 2025-05-14T10:33:04.920Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.920 |   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"a1468e70-1419-48a4-9ee6-f9164bb1b4e8","type":"browser","title":"","url":"","attached":true,"canAccessOpener":false}}}'
2025-05-14 11:33:04.920 | ]
2025-05-14 11:33:04.920 | 2025-05-14T10:33:04.920Z puppeteer:protocol:RECV ◀ [ '{"id":1,"result":{}}' ]
2025-05-14 11:33:04.920 | 2025-05-14T10:33:04.920Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.920 |   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{"type":"page","exclude":true},{}]},"id":2}'
2025-05-14 11:33:04.920 | ]
2025-05-14 11:33:04.925 | 2025-05-14T10:33:04.925Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.925 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"5012FE069D34312545AC6CF09176E600","type":"page","title":"about:blank","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"}}}'
2025-05-14 11:33:04.925 | ]
2025-05-14 11:33:04.925 | 2025-05-14T10:33:04.925Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.925 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"3FE402E688A77630B081CA1310C76D4B","type":"tab","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"}}}'
2025-05-14 11:33:04.925 | ]
2025-05-14 11:33:04.925 | 2025-05-14T10:33:04.925Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.925 |   '{"method":"Target.attachedToTarget","params":{"sessionId":"8A9A4C63BBDD690999660273B9EE9BE9","targetInfo":{"targetId":"3FE402E688A77630B081CA1310C76D4B","type":"tab","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"},"waitingForDebugger":false}}'
2025-05-14 11:33:04.925 | ]
2025-05-14 11:33:04.925 | 2025-05-14T10:33:04.925Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.925 |   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"8A9A4C63BBDD690999660273B9EE9BE9"}'
2025-05-14 11:33:04.925 | ]
2025-05-14 11:33:04.925 | 2025-05-14T10:33:04.925Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.925 |   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"8A9A4C63BBDD690999660273B9EE9BE9"}'
2025-05-14 11:33:04.925 | ]
2025-05-14 11:33:04.925 | 2025-05-14T10:33:04.925Z puppeteer:protocol:RECV ◀ [ '{"id":2,"result":{}}' ]
2025-05-14 11:33:04.929 | 2025-05-14T10:33:04.929Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.929 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"5012FE069D34312545AC6CF09176E600","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"}}}'
2025-05-14 11:33:04.929 | ]
2025-05-14 11:33:04.930 | 2025-05-14T10:33:04.930Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.930 |   '{"method":"Target.attachedToTarget","params":{"sessionId":"474BFB6EEF428C30441A548C409041B5","targetInfo":{"targetId":"5012FE069D34312545AC6CF09176E600","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"},"waitingForDebugger":false},"sessionId":"8A9A4C63BBDD690999660273B9EE9BE9"}'
2025-05-14 11:33:04.930 | ]
2025-05-14 11:33:04.930 | 2025-05-14T10:33:04.930Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.930 |   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.930 | ]
2025-05-14 11:33:04.930 | 2025-05-14T10:33:04.930Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.930 |   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.930 | ]
2025-05-14 11:33:04.930 | 2025-05-14T10:33:04.930Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.930 |   '{"id":1,"result":{},"sessionId":"8A9A4C63BBDD690999660273B9EE9BE9"}'
2025-05-14 11:33:04.930 | ]
2025-05-14 11:33:04.930 | 2025-05-14T10:33:04.930Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.930 |   '{"id":2,"result":{},"sessionId":"8A9A4C63BBDD690999660273B9EE9BE9"}'
2025-05-14 11:33:04.930 | ]
2025-05-14 11:33:04.935 | 2025-05-14T10:33:04.934Z browserless:chrome-helper Chrome PID: 67
2025-05-14 11:33:04.935 | 2025-05-14T10:33:04.935Z browserless:chrome-helper Finding prior pages
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Network.enable","id":3,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Network.setCacheDisabled","params":{"cacheDisabled":false},"id":4,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Fetch.disable","id":5,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Page.enable","id":6,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Page.getFrameTree","id":7,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Page.setLifecycleEventsEnabled","params":{"enabled":true},"id":8,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Runtime.enable","id":9,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Performance.enable","id":10,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.938 | 2025-05-14T10:33:04.938Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.938 |   '{"method":"Log.enable","id":11,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.938 | ]
2025-05-14 11:33:04.939 | 2025-05-14T10:33:04.939Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.939 |   '{"id":1,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.939 | ]
2025-05-14 11:33:04.939 | 2025-05-14T10:33:04.939Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.939 |   '{"id":2,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.939 | ]
2025-05-14 11:33:04.939 | 2025-05-14T10:33:04.939Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.939 |   '{"id":5,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.939 | ]
2025-05-14 11:33:04.940 | 2025-05-14T10:33:04.939Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.940 |   '{"id":3,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.940 | ]
2025-05-14 11:33:04.940 | 2025-05-14T10:33:04.940Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.940 |   '{"id":4,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.940 | ]
2025-05-14 11:33:04.940 | 2025-05-14T10:33:04.940Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.940 |   '{"id":6,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.940 | ]
2025-05-14 11:33:04.940 | 2025-05-14T10:33:04.940Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.940 |   '{"id":7,"result":{"frameTree":{"frame":{"id":"5012FE069D34312545AC6CF09176E600","loaderId":"0D94A84B9FFF4E4BDFBC8035414A90F7","url":"about:blank","domainAndRegistry":"","securityOrigin":"://","mimeType":"text/html","adFrameStatus":{"adFrameType":"none"},"secureContextType":"InsecureScheme","crossOriginIsolatedContextType":"NotIsolated","gatedAPIFeatures":[]}}},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.940 | ]
2025-05-14 11:33:04.941 | 2025-05-14T10:33:04.941Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.941 |   '{"method":"Page.lifecycleEvent","params":{"frameId":"5012FE069D34312545AC6CF09176E600","loaderId":"0D94A84B9FFF4E4BDFBC8035414A90F7","name":"commit","timestamp":8214.890889},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.941 | ]
2025-05-14 11:33:04.941 | 2025-05-14T10:33:04.941Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.941 |   '{"method":"Page.lifecycleEvent","params":{"frameId":"5012FE069D34312545AC6CF09176E600","loaderId":"0D94A84B9FFF4E4BDFBC8035414A90F7","name":"DOMContentLoaded","timestamp":8214.891069},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.941 | ]
2025-05-14 11:33:04.941 | 2025-05-14T10:33:04.941Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.941 |   '{"method":"Page.lifecycleEvent","params":{"frameId":"5012FE069D34312545AC6CF09176E600","loaderId":"0D94A84B9FFF4E4BDFBC8035414A90F7","name":"load","timestamp":8214.891976},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.941 | ]
2025-05-14 11:33:04.941 | 2025-05-14T10:33:04.941Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.941 |   '{"method":"Page.lifecycleEvent","params":{"frameId":"5012FE069D34312545AC6CF09176E600","loaderId":"0D94A84B9FFF4E4BDFBC8035414A90F7","name":"networkAlmostIdle","timestamp":8214.891863},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.941 | ]
2025-05-14 11:33:04.941 | 2025-05-14T10:33:04.941Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.941 |   '{"method":"Page.lifecycleEvent","params":{"frameId":"5012FE069D34312545AC6CF09176E600","loaderId":"0D94A84B9FFF4E4BDFBC8035414A90F7","name":"networkIdle","timestamp":8214.891863},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.941 | ]
2025-05-14 11:33:04.941 | 2025-05-14T10:33:04.941Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.941 |   '{"id":8,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.941 | ]
2025-05-14 11:33:04.942 | 2025-05-14T10:33:04.942Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.942 |   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"://","name":"","uniqueId":"2040737622622678562.-1064061270709278418","auxData":{"isDefault":true,"type":"default","frameId":"5012FE069D34312545AC6CF09176E600"}}},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.942 | ]
2025-05-14 11:33:04.942 | 2025-05-14T10:33:04.942Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.942 |   '{"id":9,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.942 | ]
2025-05-14 11:33:04.942 | 2025-05-14T10:33:04.942Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.942 |   '{"id":10,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.942 | ]
2025-05-14 11:33:04.942 | 2025-05-14T10:33:04.942Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.942 |   '{"id":11,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.942 | ]
2025-05-14 11:33:04.942 | 2025-05-14T10:33:04.942Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.942 |   '{"method":"Page.addScriptToEvaluateOnNewDocument","params":{"source":"//# sourceURL=pptr:internal","worldName":"__puppeteer_utility_world__"},"id":12,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.942 | ]
2025-05-14 11:33:04.942 | 2025-05-14T10:33:04.942Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.942 |   '{"id":12,"result":{"identifier":"1"},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.942 | ]
2025-05-14 11:33:04.942 | 2025-05-14T10:33:04.942Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.942 |   '{"method":"Page.createIsolatedWorld","params":{"frameId":"5012FE069D34312545AC6CF09176E600","worldName":"__puppeteer_utility_world__","grantUniveralAccess":true},"id":13,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.942 | ]
2025-05-14 11:33:04.943 | 2025-05-14T10:33:04.943Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.943 |   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":2,"origin":"","name":"__puppeteer_utility_world__","uniqueId":"6672577902003181026.-1052090299191956553","auxData":{"isDefault":false,"type":"isolated","frameId":"5012FE069D34312545AC6CF09176E600"}}},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.943 | ]
2025-05-14 11:33:04.943 | 2025-05-14T10:33:04.943Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.943 |   '{"id":13,"result":{"executionContextId":2},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.943 | ]
2025-05-14 11:33:04.944 | 2025-05-14T10:33:04.944Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.944 |   '{"method":"Emulation.setDeviceMetricsOverride","params":{"mobile":false,"width":800,"height":600,"deviceScaleFactor":1,"screenOrientation":{"angle":0,"type":"portraitPrimary"}},"id":14,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.944 | ]
2025-05-14 11:33:04.944 | 2025-05-14T10:33:04.944Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.944 |   '{"method":"Emulation.setTouchEmulationEnabled","params":{"enabled":false},"id":15,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.944 | ]
2025-05-14 11:33:04.944 | 2025-05-14T10:33:04.944Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.944 |   '{"method":"Page.frameResized","params":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.944 | ]
2025-05-14 11:33:04.944 | 2025-05-14T10:33:04.944Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.944 |   '{"id":14,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.944 | ]
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.944Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.945 |   '{"id":15,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.945 | ]
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.945Z browserless:chrome-helper Found 1 pages
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.945Z browserless:chrome-helper Setting up page Unknown
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.945Z browserless:chrome-helper Injecting download dir "/usr/src/app/workspace"
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.945Z puppeteer:protocol:SEND ► [
2025-05-14 11:33:04.945 |   '{"method":"Page.setDownloadBehavior","params":{"behavior":"allow","downloadPath":"/usr/src/app/workspace"},"id":16,"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.945 | ]
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.945Z browserless:system Chrome launched 145ms
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.945Z browserless:system Got chrome instance
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.945Z browserless:job W62K50HHY47LN2Z3630RM6NUEYARC6RT: Starting session.
2025-05-14 11:33:04.945 | 2025-05-14T10:33:04.945Z browserless:job W62K50HHY47LN2Z3630RM6NUEYARC6RT: Proxying request to /devtools/browser route: ws://127.0.0.1:38855/devtools/browser/ed758c7a-cb70-4e56-a673-02cb280fb7ab.
2025-05-14 11:33:04.946 | 2025-05-14T10:33:04.946Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.946 |   '{"id":16,"result":{},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:04.946 | ]
2025-05-14 11:33:04.946 | 2025-05-14T10:33:04.946Z browserless:chrome-helper Setting up file:// protocol request rejection
2025-05-14 11:33:04.947 | 2025-05-14T10:33:04.947Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.947 |   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"33372f73-deb9-483d-bd31-b4253115fb41","type":"browser","title":"","url":"","attached":false,"canAccessOpener":false}}}'
2025-05-14 11:33:04.947 | ]
2025-05-14 11:33:04.947 | 2025-05-14T10:33:04.947Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:04.947 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"33372f73-deb9-483d-bd31-b4253115fb41","type":"browser","title":"","url":"","attached":true,"canAccessOpener":false}}}'
2025-05-14 11:33:04.947 | ]
2025-05-14 11:33:05.060 | 2025-05-14T10:33:05.060Z browserless:server W62K50HHY47LN2Z3630RM6NUEYARC6RT: Recording successful stat and cleaning up.
2025-05-14 11:33:05.060 | 2025-05-14T10:33:05.060Z browserless:job W62K50HHY47LN2Z3630RM6NUEYARC6RT: Cleaning up job
2025-05-14 11:33:05.060 | 2025-05-14T10:33:05.060Z browserless:job W62K50HHY47LN2Z3630RM6NUEYARC6RT: Browser not needed, closing
2025-05-14 11:33:05.060 | 2025-05-14T10:33:05.060Z browserless:chrome-helper Shutting down browser with close command
2025-05-14 11:33:05.060 | 2025-05-14T10:33:05.060Z browserless:job W62K50HHY47LN2Z3630RM6NUEYARC6RT: Browser cleanup complete.
2025-05-14 11:33:05.060 | 2025-05-14T10:33:05.060Z browserless:server Current workload complete.
2025-05-14 11:33:05.060 | 2025-05-14T10:33:05.060Z browserless:chrome-helper Sending SIGKILL signal to browser process 67
2025-05-14 11:33:05.067 | 2025-05-14T10:33:05.067Z browserless:chrome-helper Removing temp data-dir /tmp/browserless-data-dir-VG9QJD
2025-05-14 11:33:05.068 | 2025-05-14T10:33:05.068Z puppeteer:protocol:SEND ► [ '{"method":"Browser.close","id":3}' ]
2025-05-14 11:33:05.068 | 2025-05-14T10:33:05.068Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.068 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"33372f73-deb9-483d-bd31-b4253115fb41","type":"browser","title":"","url":"","attached":false,"canAccessOpener":false}}}'
2025-05-14 11:33:05.068 | ]
2025-05-14 11:33:05.068 | 2025-05-14T10:33:05.068Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.068 |   '{"method":"Target.targetDestroyed","params":{"targetId":"33372f73-deb9-483d-bd31-b4253115fb41"}}'
2025-05-14 11:33:05.068 | ]
2025-05-14 11:33:05.068 | 2025-05-14T10:33:05.068Z puppeteer:protocol:RECV ◀ [ '{"id":3,"result":{}}' ]
2025-05-14 11:33:05.069 | 2025-05-14T10:33:05.069Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.069 |   '{"method":"Inspector.detached","params":{"reason":"Render process gone."},"sessionId":"474BFB6EEF428C30441A548C409041B5"}'
2025-05-14 11:33:05.069 | ]
2025-05-14 11:33:05.069 | 2025-05-14T10:33:05.069Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.069 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"5012FE069D34312545AC6CF09176E600","type":"page","title":"about:blank","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"}}}'
2025-05-14 11:33:05.069 | ]
2025-05-14 11:33:05.070 | 2025-05-14T10:33:05.070Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.070 |   '{"method":"Target.detachedFromTarget","params":{"sessionId":"474BFB6EEF428C30441A548C409041B5","targetId":"5012FE069D34312545AC6CF09176E600"},"sessionId":"8A9A4C63BBDD690999660273B9EE9BE9"}'
2025-05-14 11:33:05.070 | ]
2025-05-14 11:33:05.070 | 2025-05-14T10:33:05.070Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.070 |   '{"method":"Target.targetDestroyed","params":{"targetId":"5012FE069D34312545AC6CF09176E600"}}'
2025-05-14 11:33:05.070 | ]
2025-05-14 11:33:05.070 | 2025-05-14T10:33:05.070Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.070 |   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"3FE402E688A77630B081CA1310C76D4B","type":"tab","title":"","url":"","attached":false,"canAccessOpener":false,"browserContextId":"1274A81C8D5668C26F3AA90EFB5D8A34"}}}'
2025-05-14 11:33:05.070 | ]
2025-05-14 11:33:05.070 | 2025-05-14T10:33:05.070Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.070 |   '{"method":"Target.detachedFromTarget","params":{"sessionId":"8A9A4C63BBDD690999660273B9EE9BE9","targetId":"3FE402E688A77630B081CA1310C76D4B"}}'
2025-05-14 11:33:05.070 | ]
2025-05-14 11:33:05.070 | 2025-05-14T10:33:05.070Z puppeteer:protocol:RECV ◀ [
2025-05-14 11:33:05.070 |   '{"method":"Target.targetDestroyed","params":{"targetId":"3FE402E688A77630B081CA1310C76D4B"}}'
2025-05-14 11:33:05.070 | ]
2025-05-14 11:33:05.108 | 2025-05-14T10:33:05.107Z puppeteer:browsers:launcher Browser process 67 onExit
2025-05-14 11:33:05.108 | 2025-05-14T10:33:05.108Z browserless:chrome-helper Garbage collecting and removing listeners
2025-05-14 11:33:05.109 | 2025-05-14T10:33:05.109Z puppeteer:error [
2025-05-14 11:33:05.109 |   Error: Protocol error: Connection closed. Most likely the page has been closed.
2025-05-14 11:33:05.109 |       at assert (/usr/src/app/node_modules/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/util/assert.js:18:15)
2025-05-14 11:33:05.109 |       at CdpPage.close (/usr/src/app/node_modules/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Page.js:859:32)
2025-05-14 11:33:05.109 |       at [nodejs.dispose] (/usr/src/app/node_modules/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:1370:30)
2025-05-14 11:33:05.109 |       at CdpPage.removeAllListeners (/usr/src/app/node_modules/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js:135:44)
2025-05-14 11:33:05.109 |       at /usr/src/app/build/chrome-helper.js:531:26
2025-05-14 11:33:05.109 |       at Array.forEach ()
2025-05-14 11:33:05.109 |       at /usr/src/app/build/chrome-helper.js:530:32
2025-05-14 11:33:05.109 |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
2025-05-14 11:33:05.109 | ]
2025-05-14 11:33:05.109 | 2025-05-14T10:33:05.109Z browserless:chrome-helper Browser process ed758c7a-cb70-4e56-a673-02cb280fb7ab has closed, cleaning up.
2025-05-14 11:33:05.307 | 2025-05-14T10:33:05.307Z browserless:chrome-helper Temp dir /tmp/browserless-data-dir-VG9QJD removed successfully

neanias avatar May 14 '25 10:05 neanias

Anyone found a workaround for this?

brianclinkenbeard avatar Nov 18 '25 20:11 brianclinkenbeard

Anyone found a workaround for this?

@brianclinkenbeard I recently updated our dependencies and for us with cuprite 0.17, ferrum 0.17.1 and Chrome 141.0.7390.122 everything went back to normal again. No failing download specs anymore. I guess, more recent versions of Chrome will also work again.

RST-J avatar Nov 19 '25 16:11 RST-J