cuprite icon indicating copy to clipboard operation
cuprite copied to clipboard

DevTools discovery page is deprecated

Open y-yagi opened this issue 3 years ago • 1 comments

debug method access the DevTools discovery page. But the page is deprecated now.

Screenshot from 2021-09-03 10-24-32

Ref: https://bugs.chromium.org/p/chromium/issues/detail?id=1232509

They suggest to use chrome://inspect instead. But, if my understanding is correct, the inspect page can't access directly. Should we remove accessing a page and show a message only?

y-yagi avatar Sep 03 '21 01:09 y-yagi

The discovery page content seems to have been removed and the page is now empty (since this commit, released in Chrome 100).

A workaround that works for us is to load the JSON version of the page (http://127.0.0.1:<port>/json) and append the first devtoolsFrontendUrl path to the discovery page URL.

borama avatar Aug 18 '22 06:08 borama

I tried page.driver.debug(binding) as described at https://github.com/rubycdp/cuprite#debugging

This will launch the browser where you can inspect the content.

but, while it does open a visible browser window, the content is empty:

image

I was considering opening an issue for it, but it sounds like this #161 is already the issue for this bug, right? It's just that as a new user who is just following the Readme and is unfamiliar with terms like "discovery page", I would not have recognized this issue as being the one to look at for my problem. Should we update the title to some thing more like what users might be searching for, like "Debug open new tab but just shows a blank page"?

Anyway, thanks for the workaround! That does work for me:

  • Change the address bar to http://127.0.0.1:<port>/json
  • Take the first devtoolsFrontendUrl path and edit the address bar to use it.
    • For example: http://127.0.0.1:33369/devtools/inspector.html?ws=127.0.0.1:33369/devtools/page/A5FB1C95B850A704A50543BF7E005BA4

Could those steps be automated and done for the user automatically? Or does the driver not have a way to control the visible window?

Since the instructions for this are currently incomplete, should we update the Readme in the meantime to include the full instructions (the above "workaround") for how to inspect your actual page-under-test? Unless a fix for this is forthcoming...?

TylerRick avatar Oct 27 '22 19:10 TylerRick

I have exactly the same issue as you @TylerRick . If a add /json I can find the url, but maybe you find a better solution since 2022 ?

jpheos avatar Nov 28 '23 23:11 jpheos

I fixed it for now by monkey-patching the method which generates the debug url (put this in some file which is loaded after cuprite, e.g. spec/support/cuprite.rb if you autoload files in that folder):

module Capybara
  module Cuprite
    class Driver
      def debug_url
        response = JSON.parse(Net::HTTP.get(URI(build_remote_debug_url(path: "/json"))))

        devtools_frontend_path = response[0]&.[]("devtoolsFrontendUrl")
        raise "Could not generate debug url for remote debugging session" unless devtools_frontend_path

        build_remote_debug_url path: devtools_frontend_path
      end

      private

      def build_remote_debug_url(path:)
        "http://#{browser.process.host}:#{browser.process.port}#{path}"
      end
    end
  end
end

Edit: I am not sure if this is exclusive to my setup, but I also needed to add a browser option otherwise the devtools websocket wouldn't connect.

  Capybara::Cuprite::Driver.new(app, browser_options: {"remote-allow-origins": "*"}, ...)

I'd gladly create a PR if desired.

phikes avatar Nov 29 '23 16:11 phikes

@phikes does it open devtools session for you? I have this message on my Mac: Screenshot 2023-12-11 at 11 16 12 What OS, Chrome version do you have?

route avatar Dec 11 '23 08:12 route

Yes, it does. I use Chrome Canary on OS X Ventura 13.0.1. Did you try the browser_options I posted below? Before that I always got this error.

phikes avatar Dec 11 '23 10:12 phikes

Missed it somehow. Could you please create a PR?

route avatar Dec 11 '23 19:12 route

@route done in https://github.com/rubycdp/cuprite/pull/252

phikes avatar Dec 12 '23 19:12 phikes

Thanks!

route avatar Dec 13 '23 09:12 route