From d074fcb848b8a0deff439cd0e7b66d252ce664f4 Mon Sep 17 00:00:00 2001 From: AndriusA Date: Tue, 21 Apr 2020 14:40:32 +0100 Subject: [PATCH] updates speedreader browsertest to work with global whitelist --- .../speedreader/speedreader_browsertest.cc | 31 +++++++++------ script/download_rust_deps.py | 2 + test/data/speedreader_whitelist.json | 38 +++++++++++++++++++ 3 files changed, 60 insertions(+), 11 deletions(-) create mode 100644 test/data/speedreader_whitelist.json diff --git a/browser/speedreader/speedreader_browsertest.cc b/browser/speedreader/speedreader_browsertest.cc index 00b87da8d76..4ecbe49b196 100644 --- a/browser/speedreader/speedreader_browsertest.cc +++ b/browser/speedreader/speedreader_browsertest.cc @@ -3,21 +3,23 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "brave/components/speedreader/speedreader_switches.h" - #include "base/bind.h" #include "base/path_service.h" #include "brave/app/brave_command_ids.h" #include "brave/common/brave_paths.h" +#include "brave/components/speedreader/speedreader_switches.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" +#include "components/network_session_configurator/common/network_switches.h" #include "content/public/test/browser_test_utils.h" #include "net/dns/mock_host_resolver.h" #include "net/test/embedded_test_server/embedded_test_server.h" +const char kTestHost[] = "theguardian.com"; const char kTestPage[] = "/guardian.html"; +const char kTestWhitelist[] = "speedreader_whitelist.json"; class SpeedReaderBrowserTest : public InProcessBrowserTest { public: @@ -26,7 +28,7 @@ class SpeedReaderBrowserTest : public InProcessBrowserTest { brave::RegisterPathProvider(); base::FilePath test_data_dir; base::PathService::Get(brave::DIR_TEST_DATA, &test_data_dir); - + https_server_.SetSSLConfig(net::EmbeddedTestServer::CERT_OK); https_server_.ServeFilesFromDirectory(test_data_dir); EXPECT_TRUE(https_server_.Start()); } @@ -38,6 +40,14 @@ class SpeedReaderBrowserTest : public InProcessBrowserTest { void SetUpCommandLine(base::CommandLine* command_line) override { command_line->AppendSwitch(speedreader::kEnableSpeedreader); + base::FilePath test_data_dir; + base::PathService::Get(brave::DIR_TEST_DATA, &test_data_dir); + base::FilePath whitelist_path = test_data_dir.Append(kTestWhitelist); + command_line->AppendSwitchPath(speedreader::kSpeedreaderWhitelistPath, + whitelist_path); + // HTTPS server only serves a valid cert for localhost, so this is needed + // to load pages from other hosts without an error + command_line->AppendSwitch(switches::kIgnoreCertificateErrors); } void SetUpOnMainThread() override { @@ -50,25 +60,24 @@ class SpeedReaderBrowserTest : public InProcessBrowserTest { IN_PROC_BROWSER_TEST_F(SpeedReaderBrowserTest, SmokeTest) { chrome::ExecuteCommand(browser(), IDC_TOGGLE_SPEEDREADER); - const GURL url = https_server_.GetURL(kTestPage); + const GURL url = https_server_.GetURL(kTestHost, kTestPage); ui_test_utils::NavigateToURL(browser(), url); content::WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); content::RenderFrameHost* rfh = contents->GetMainFrame(); - const char kGetStyle[] = - "document.getElementById(\"brave_speedreader_style\").innerHTML"; + const char kGetStyleLength[] = + "document.getElementById(\"brave_speedreader_style\").innerHTML.length"; - const char kGetContent[] = "document.body.innerHTML"; + const char kGetContentLength[] = "document.body.innerHTML.length"; // Check that the document became much smaller and that non-empty speedreader // style is injected. - EXPECT_LT(0ull, content::EvalJs(rfh, kGetStyle).ExtractString().size()); - EXPECT_GT(4096ull, content::EvalJs(rfh, kGetContent).ExtractString().size()); + EXPECT_LT(0, content::EvalJs(rfh, kGetStyleLength)); + EXPECT_GT(17750 + 1, content::EvalJs(rfh, kGetContentLength)); // Check that disabled speedreader doesn't affect the page. chrome::ExecuteCommand(browser(), IDC_TOGGLE_SPEEDREADER); ui_test_utils::NavigateToURL(browser(), url); - EXPECT_LT(106000ull, - content::EvalJs(rfh, kGetContent).ExtractString().size()); + EXPECT_LT(106000, content::EvalJs(rfh, kGetContentLength)); } diff --git a/script/download_rust_deps.py b/script/download_rust_deps.py index 66f06b75f96..b12a5ecc345 100755 --- a/script/download_rust_deps.py +++ b/script/download_rust_deps.py @@ -130,6 +130,7 @@ def parse_args(): args = parser.parse_args() return args + def cargo_install(tool): # Set environment variables for rustup env = os.environ.copy() @@ -152,6 +153,7 @@ def cargo_install(tool): print(e.output) raise e + def main(): download_and_unpack_rust_deps(sys.platform) diff --git a/test/data/speedreader_whitelist.json b/test/data/speedreader_whitelist.json new file mode 100644 index 00000000000..43ac8f88a5e --- /dev/null +++ b/test/data/speedreader_whitelist.json @@ -0,0 +1,38 @@ +[ + { + "domain": "theguardian.com", + "url_rules": [ + "||theguardian.com" + ], + "declarative_rewrite": { + "main_content": [ + "article header", + ".content__article-body" + ], + "main_content_cleanup": [ + ".hide-on-mobile", + ".inline-icon", + ".atom__button", + "input", + ".meta__extras", + ".content__headline-showcase-wrapper", + ".fc-container__header", + "figure.element-embed", + ".vjs-control-text" + ], + "delazify": true, + "fix_embeds": true, + "content_script": "", + "preprocess": [ + { + "selector": ".vjs-big-play-button[style]", + "attribute": [ + "style", + "data-src-background" + ], + "element_name": "img" + } + ] + } + } +]