cuprite
cuprite copied to clipboard
DevTools discovery page is deprecated
debug
method access the DevTools discovery page. But the page is deprecated now.
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?
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.
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:
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...?
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 ?
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 does it open devtools session for you? I have this message on my Mac:
What OS, Chrome version do you have?
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.
Missed it somehow. Could you please create a PR?
@route done in https://github.com/rubycdp/cuprite/pull/252
Thanks!