tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

conftest.py (4135B)


      1 import json
      2 import os
      3 import sys
      4 from argparse import Namespace
      5 
      6 import pytest
      7 
      8 # need this so the raptor unit tests can find raptor/raptor classes
      9 here = os.path.abspath(os.path.dirname(__file__))
     10 raptor_dir = os.path.join(os.path.dirname(here), "raptor")
     11 sys.path.insert(0, raptor_dir)
     12 
     13 from browsertime import Browsertime
     14 from perftest import Perftest
     15 
     16 
     17 @pytest.fixture
     18 def options(request):
     19    opts = {
     20        "app": "firefox",
     21        "binary": "path/to/dummy/browser",
     22        "browsertime_visualmetrics": False,
     23        "extra_prefs": {},
     24    }
     25 
     26    if hasattr(request.module, "OPTIONS"):
     27        opts.update(request.module.OPTIONS)
     28    return opts
     29 
     30 
     31 @pytest.fixture
     32 def browsertime_options(options):
     33    options["browsertime_node"] = "browsertime_node"
     34    options["browsertime_browsertimejs"] = "browsertime_browsertimejs"
     35    options["browsertime_ffmpeg"] = "browsertime_ffmpeg"
     36    options["browsertime_geckodriver"] = "browsertime_geckodriver"
     37    options["browsertime_chromedriver"] = "browsertime_chromedriver"
     38    options["browsertime_video"] = "browsertime_video"
     39    options["browsertime_visualmetrics"] = "browsertime_visualmetrics"
     40    options["browsertime_no_ffwindowrecorder"] = "browsertime_no_ffwindowrecorder"
     41    return options
     42 
     43 
     44 @pytest.fixture
     45 def mock_test():
     46    return {
     47        "name": "raptor-firefox-tp6",
     48        "test_url": "/dummy/url",
     49        "secondary_url": "/dummy/url-2",
     50    }
     51 
     52 
     53 @pytest.fixture(scope="session")
     54 def get_prefs():
     55    def _inner(browser):
     56        import raptor
     57 
     58        prefs_dir = os.path.join(raptor.__file__, "preferences")
     59        with open(os.path.join(prefs_dir, f"{browser}.json")) as fh:
     60            return json.load(fh)
     61 
     62 
     63 @pytest.fixture(scope="session")
     64 def filedir():
     65    return os.path.join(here, "files")
     66 
     67 
     68 @pytest.fixture
     69 def get_binary():
     70    from moztest.selftest import fixtures
     71 
     72    def inner(app):
     73        if app != "firefox":
     74            pytest.xfail(reason=f"{app} support not implemented")
     75 
     76        binary = fixtures.binary()
     77        if not binary:
     78            pytest.skip(f"could not find a {app} binary")
     79        return binary
     80 
     81    return inner
     82 
     83 
     84 @pytest.fixture
     85 def create_args():
     86    args = Namespace(
     87        app="firefox",
     88        test="browsertime-tp6-unittest",
     89        binary="path/to/binary",
     90        gecko_profile=False,
     91        extra_profiler_run=False,
     92        debug_mode=False,
     93        page_cycles=None,
     94        page_timeout=None,
     95        test_url_params=None,
     96        host=None,
     97        run_local=True,
     98        browsertime=True,
     99        cold=False,
    100        live_sites=False,
    101        enable_marionette_trace=False,
    102        collect_perfstats=False,
    103        chimera=False,
    104        browsertime_visualmetrics=False,
    105        extra_summary_methods=[],
    106        power_test=False,
    107    )
    108 
    109    def inner(**kwargs):
    110        for next_arg in kwargs:
    111            print(next_arg)
    112            print(kwargs[next_arg])
    113            setattr(args, next_arg, kwargs[next_arg])
    114        return args
    115 
    116    return inner
    117 
    118 
    119 @pytest.fixture(scope="module")
    120 def ConcretePerftest():
    121    class PerftestImplementation(Perftest):
    122        def check_for_crashes(self):
    123            super().check_for_crashes()
    124 
    125        def clean_up(self):
    126            super().clean_up()
    127 
    128        def run_test(self, test, timeout):
    129            super().run_test(test, timeout)
    130 
    131        def run_test_setup(self, test):
    132            super().run_test_setup(test)
    133 
    134        def run_test_teardown(self, test):
    135            super().run_test_teardown(test)
    136 
    137        def set_browser_test_prefs(self):
    138            super().set_browser_test_prefs()
    139 
    140        def get_browser_meta(self):
    141            return (), ()
    142 
    143        def setup_chrome_args(self, test):
    144            super().setup_chrome_args(test)
    145 
    146    return PerftestImplementation
    147 
    148 
    149 @pytest.fixture(scope="module")
    150 def ConcreteBrowsertime():
    151    class BrowsertimeImplementation(Browsertime):
    152        @property
    153        def browsertime_args(self):
    154            return []
    155 
    156        def get_browser_meta(self):
    157            return (), ()
    158 
    159        def setup_chrome_args(self, test):
    160            super().setup_chrome_args(test)
    161 
    162    return BrowsertimeImplementation