rubycdp / ferrum

Headless Chrome Ruby API
https://ferrum.rubycdp.com
MIT License
1.7k stars 122 forks source link

Network#intercept silently discards unknown resource_types #313

Closed ttilberg closed 1 year ago

ttilberg commented 1 year ago

https://github.com/rubycdp/ferrum/blob/277f04ebc618be7029bf281ac79e2487ab48af1d/lib/ferrum/network.rb#L190

If you try to create an intercept filter with an unknown resource type, the option is silently discarded:

browser.network.intercept resource_type: :Hotdogs
# => Okie dokie

Instead, it should raise an exception either by letting the CDP exception bubble up:

Unknown resource type in fetch filter: 'Hotdogs' (Ferrum::BrowserError)
    from /Users/ttilberg/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/ferrum-0.12/lib/ferrum/browser/client.rb:49:in `command'
    from /Users/ttilberg/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/ferrum-0.12/lib/ferrum/page.rb:177:in `command'
    from /Users/ttilberg/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/ferrum-0.12/lib/ferrum/network.rb:98:in `intercept'
    from browse.rb:4:in `<main>'

Or, raise an exception that helps the user by tailoring the language to the Ferrum API:

/Users/ttilberg/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/ferrum-0.12/lib/ferrum/network.rb:96:in `intercept': resource_type must be one of ["Document", "Stylesheet", "Image", "Media", "Font", "Script", "TextTrack", "XHR", "Fetch", "EventSource", "WebSocket", "Manifest", "SignedExchange", "Ping", "CSPViolationReport", "Other"] (RuntimeError)
    from browse.rb:4:in `<main>'

It looks like RESOURCE_TYPES is only used to guard this value, so perhaps by letting it bubble up you wouldn't have to maintain this list anyway.

This came up after trying to send WebSocket as a value, and finding that it wasn't accepted by CDP anyway. So maybe there's a higher-level thing that needs to change anyway.

route commented 1 year ago

Thanks for reporting, fixed!

route commented 11 months ago

I have reported to Chrome https://bugs.chromium.org/p/chromium/issues/detail?id=1465257#c3 but I think it's gonna take them forever to address this issue.