import json
import os
import sys
from argparse import Namespace
import pytest
# need this so the raptor unit tests can find raptor/raptor classes
here = os.path.abspath(os.path.dirname(__file__))
raptor_dir = os.path.join(os.path.dirname(here), "raptor" )
sys.path.insert(0, raptor_dir)
from browsertime import Browsertime
from perftest import Perftest
@pytest.fixture
def options(request):
opts = {
"app" : "firefox" ,
"binary" : "path/to/dummy/browser" ,
"browsertime_visualmetrics" : False ,
"extra_prefs" : {},
}
if hasattr(request.module, "OPTIONS" ):
opts.update(request.module.OPTIONS)
return opts
@pytest.fixture
def browsertime_options(options):
options["browsertime_node" ] = "browsertime_node"
options["browsertime_browsertimejs" ] = "browsertime_browsertimejs"
options["browsertime_ffmpeg" ] = "browsertime_ffmpeg"
options["browsertime_geckodriver" ] = "browsertime_geckodriver"
options["browsertime_chromedriver" ] = "browsertime_chromedriver"
options["browsertime_video" ] = "browsertime_video"
options["browsertime_visualmetrics" ] = "browsertime_visualmetrics"
options["browsertime_no_ffwindowrecorder" ] = "browsertime_no_ffwindowrecorder"
return options
@pytest.fixture
def mock_test():
return {
"name" : "raptor-firefox-tp6" ,
"test_url" : "/dummy/url" ,
"secondary_url" : "/dummy/url-2" ,
}
@pytest.fixture(scope="session" )
def get_prefs():
def _inner(browser):
import raptor
prefs_dir = os.path.join(raptor.__file__, "preferences" )
with open(os.path.join(prefs_dir, "{}.json" .format(browser)), "r" ) as fh:
return json.load(fh)
@pytest.fixture(scope="session" )
def filedir():
return os.path.join(here, "files" )
@pytest.fixture
def get_binary():
from moztest.selftest import fixtures
def inner(app):
if app != "firefox" :
pytest.xfail(reason="{} support not implemented" .format(app))
binary = fixtures.binary()
if not binary:
pytest.skip("could not find a {} binary" .format(app))
return binary
return inner
@pytest.fixture
def create_args():
args = Namespace(
app="firefox" ,
test="browsertime-tp6-unittest" ,
binary="path/to/binary" ,
gecko_profile=False ,
extra_profiler_run=False ,
debug_mode=False ,
page_cycles=None ,
page_timeout=None ,
test_url_params=None ,
host=None ,
run_local=True ,
browsertime=True ,
cold=False ,
live_sites=False ,
enable_marionette_trace=False ,
collect_perfstats=False ,
chimera=False ,
browsertime_visualmetrics=False ,
extra_summary_methods=[],
power_test=False ,
)
def inner(**kwargs):
for next_arg in kwargs:
print(next_arg)
print(kwargs[next_arg])
setattr(args, next_arg, kwargs[next_arg])
return args
return inner
@pytest.fixture(scope="module" )
def ConcretePerftest():
class PerftestImplementation(Perftest):
def check_for_crashes(self):
super(PerftestImplementation, self).check_for_crashes()
def clean_up(self):
super(PerftestImplementation, self).clean_up()
def run_test(self, test, timeout):
super(PerftestImplementation, self).run_test(test, timeout)
def run_test_setup(self, test):
super(PerftestImplementation, self).run_test_setup(test)
def run_test_teardown(self, test):
super(PerftestImplementation, self).run_test_teardown(test)
def set_browser_test_prefs(self):
super(PerftestImplementation, self).set_browser_test_prefs()
def get_browser_meta(self):
return (), ()
def setup_chrome_args(self, test):
super(PerftestImplementation, self).setup_chrome_args(test)
return PerftestImplementation
@pytest.fixture(scope="module" )
def ConcreteBrowsertime():
class BrowsertimeImplementation(Browsertime):
@property
def browsertime_args(self):
return []
def get_browser_meta(self):
return (), ()
def setup_chrome_args(self, test):
super(BrowsertimeImplementation, self).setup_chrome_args(test)
return BrowsertimeImplementation
Messung V0.5 C=97 H=97 G=96
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland