• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2023 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import argparse
6
7from tests import test_helper
8from tests.crossbench import mock_browser
9from tests.crossbench.base import BaseCrossbenchTestCase
10
11from crossbench import path as pth
12from crossbench.browsers.chrome.webdriver import (ChromeWebDriver,
13                                                  LocalChromeWebDriverAndroid)
14from crossbench.browsers.settings import Settings
15
16
17class ChromeWebDriverForTesting(ChromeWebDriver):
18
19  def _extract_version(self) -> str:
20    return mock_browser.MockChromeStable.VERSION
21
22
23class ChromeWebdriverTestCase(BaseCrossbenchTestCase):
24
25  def test_conflicting_finch_flags(self) -> None:
26    with self.assertRaises(argparse.ArgumentTypeError) as cm:
27      ChromeWebDriverForTesting(
28          label="browser-label",
29          path=mock_browser.MockChromeStable.mock_app_path(),
30          settings=Settings(
31              js_flags=[],
32              flags=[
33                  "--disable-field-trial-config", "--enable-field-trial-config"
34              ],
35              platform=self.platform))
36    msg = str(cm.exception)
37    self.assertIn("--enable-field-trial-config", msg)
38    self.assertIn("--disable-field-trial-config", msg)
39
40  def test_auto_disabling_field_trials(self):
41    browser = ChromeWebDriverForTesting(
42        label="browser-label",
43        path=mock_browser.MockChromeStable.mock_app_path(),
44        settings=Settings(platform=self.platform))
45    self.assertIn("--disable-field-trial-config", browser.flags)
46
47    browser_field_trial = ChromeWebDriverForTesting(
48        label="browser-label",
49        path=mock_browser.MockChromeStable.mock_app_path(),
50        settings=Settings(
51            flags=["--force-fieldtrials"], platform=self.platform))
52    self.assertIn("--force-fieldtrials", browser_field_trial.flags)
53    self.assertNotIn("--disable-field-trial-config", browser_field_trial.flags)
54
55  def test_auto_disabling_field_trials_all(self):
56    for field_trial_flag in ChromeWebDriver.FIELD_TRIAL_FLAGS:
57      browser = ChromeWebDriverForTesting(
58          label="browser-label",
59          path=mock_browser.MockChromeStable.mock_app_path(),
60          settings=Settings(flags=[field_trial_flag], platform=self.platform))
61      flags = browser.flags
62      for no_experiment_flag in ChromeWebDriver.NO_EXPERIMENTS_FLAGS:
63        self.assertNotIn(no_experiment_flag, flags)
64
65
66class LocalChromeWebDriverAndroidTestCase(BaseCrossbenchTestCase):
67
68  def test_is_apk_helper(self):
69    self.assertTrue(
70        LocalChromeWebDriverAndroid.is_apk_helper(
71            pth.AnyPath("/home/user/Documents/chrome/src/"
72                        "out/arm64.apk/bin/chrome_public_apk")))
73    self.assertFalse(LocalChromeWebDriverAndroid.is_apk_helper(None))
74    self.assertFalse(
75        LocalChromeWebDriverAndroid.is_apk_helper(
76            pth.AnyPath("org.chromium.chrome")))
77
78
79if __name__ == "__main__":
80  test_helper.run_pytest(__file__)
81