From b1c8d0bb782d751853bfe86fb6823ee8b25c7a78 Mon Sep 17 00:00:00 2001 From: Dmitry Vorotilin Date: Tue, 4 Feb 2025 20:00:20 +0300 Subject: [PATCH] feat: remove headless new (#518) --- CHANGELOG.md | 1 + README.md | 3 +-- lib/ferrum/browser.rb | 4 ---- lib/ferrum/browser/command.rb | 4 ---- lib/ferrum/browser/options/chrome.rb | 8 +------- spec/network_spec.rb | 2 +- spec/page_spec.rb | 2 +- spec/spec_helper.rb | 1 - spec/support/application.rb | 2 +- 9 files changed, 6 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4b97351..97ea75ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - `Ferrum::Network::Exchange#finished?` takes into account that exchange might be in an unknown state after loader changed(next `go_to` call) and considers such as finished [#426] +- `headless: "new"` mode is removed as it's now default in modern Chrome, just use `headless: true` instead [#518] ### Fixed diff --git a/README.md b/README.md index 0231f684..499aead8 100644 --- a/README.md +++ b/README.md @@ -150,8 +150,7 @@ Ferrum::Browser.new(options) ``` * options `Hash` - * `:headless` (String | Boolean) - Set browser as headless or not, `true` by default. You can set `"new"` to support - [new headless mode](https://developer.chrome.com/articles/new-headless/). + * `:headless` (String | Boolean) - Set browser as headless or not, `true` by default. * `:xvfb` (Boolean) - Run browser in a virtual framebuffer, `false` by default. * `:flatten` (Boolean) - Use one websocket connection to the browser and all the pages in flatten mode. * `:window_size` (Array) - The dimensions of the browser window in which to diff --git a/lib/ferrum/browser.rb b/lib/ferrum/browser.rb index 9626ad1d..0d3950d7 100644 --- a/lib/ferrum/browser.rb +++ b/lib/ferrum/browser.rb @@ -245,10 +245,6 @@ def version VersionInfo.new(command("Browser.getVersion")) end - def headless_new? - process&.command&.headless_new? - end - private def start diff --git a/lib/ferrum/browser/command.rb b/lib/ferrum/browser/command.rb index b6907cec..32675e9d 100644 --- a/lib/ferrum/browser/command.rb +++ b/lib/ferrum/browser/command.rb @@ -39,10 +39,6 @@ def xvfb? !!options.xvfb end - def headless_new? - @flags["headless"] == "new" - end - def to_a [path] + @flags.map { |k, v| v.nil? ? "--#{k}" : "--#{k}=#{v}" } end diff --git a/lib/ferrum/browser/options/chrome.rb b/lib/ferrum/browser/options/chrome.rb index 06c2e82a..f0dcd941 100644 --- a/lib/ferrum/browser/options/chrome.rb +++ b/lib/ferrum/browser/options/chrome.rb @@ -76,13 +76,7 @@ def merge_required(flags, options, user_data_dir) end def merge_default(flags, options) - defaults = case options.headless - when false - except("headless", "disable-gpu") - when "new" - except("headless").merge("headless" => "new") - end - + defaults = except("headless", "disable-gpu") if options.headless == false defaults ||= DEFAULT_OPTIONS # On Windows, the --disable-gpu flag is a temporary work around for a few bugs. # See https://bugs.chromium.org/p/chromium/issues/detail?id=737678 for more information. diff --git a/spec/network_spec.rb b/spec/network_spec.rb index 50d49f05..7ad22a24 100644 --- a/spec/network_spec.rb +++ b/spec/network_spec.rb @@ -517,6 +517,6 @@ %r{Request to http://.*/with_js failed \(net::ERR_INTERNET_DISCONNECTED\)} ) - expect(page.at_css("body").text).to match("No internet") if browser.headless_new? + expect(page.at_css("body").text).to match("No internet") end end diff --git a/spec/page_spec.rb b/spec/page_spec.rb index 93e99a8b..65fb1174 100644 --- a/spec/page_spec.rb +++ b/spec/page_spec.rb @@ -55,7 +55,7 @@ describe "#position=" do it "allows the window to be positioned" do - skip if Ferrum::Utils::Platform.mac? && !browser.headless_new? + skip if Ferrum::Utils::Platform.mac? expect do page.position = { left: 10, top: 20 } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 4c944a29..47946236 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -33,7 +33,6 @@ config.before(:all) do base_url = Ferrum::Server.server.base_url options = { base_url: base_url } - options.merge!(headless: "new") if ENV["HEADLESS"] == "new" options.merge!(headless: false) if ENV["HEADLESS"] == "false" options.merge!(slowmo: ENV["SLOWMO"].to_f) if ENV["SLOWMO"].to_f > 0 diff --git a/spec/support/application.rb b/spec/support/application.rb index 22624303..86e479d7 100644 --- a/spec/support/application.rb +++ b/spec/support/application.rb @@ -49,7 +49,7 @@ def authorized?(login, password) get "/" do response.set_cookie("cookie", value: "root cookie", domain: request.host, path: request.path) - %(Hello world! Relative) + %(Hello world! Relative) end get "/set_cookie" do