haikuwebkit/Tools/Scripts/run-webdriver-plt.py

53 lines
1.9 KiB
Python
Raw Permalink Normal View History

Add Live PLT implemented with WebDriver https://bugs.webkit.org/show_bug.cgi?id=176436 Patch by Matthew Stewart <matthew_r_stewart@apple.com> on 2017-09-07 Reviewed by Stephanie Lewis. Adds a new PLT that runs on live websites. * Scripts/run-webdriver-plt.py: Added. (parse_args): (start): (make_suites): (main): * Scripts/webkitpy/webdriver_plt/__init__.py: Added. * Scripts/webkitpy/webdriver_plt/liveplt.py: Added. (PageLoadTest): (PageLoadTest.__init__): (PageLoadTest.start): (PageLoadTest.run_suite): (PageLoadTest._get_driver_for_browser): (PageLoadTest._setup_browser_window): (PageLoadTest.run_one_test): (PageLoadTest.get_results): * Scripts/webkitpy/webdriver_plt/pltresults.py: Added. (PLTResults): (PLTResults.__init__): (PLTResults.__add__): (PLTResults.add_timing_result): (PLTResults.mean): (PLTResults.geometric_mean): (PLTResults.mean_coef_variance): (PLTResults.print_results): (PLTResults.print_url_results): (PLTResults._format_time): * Scripts/webkitpy/webdriver_plt/suites/__init__.py: Added. * Scripts/webkitpy/webdriver_plt/suites/arabic.suite: Added. * Scripts/webkitpy/webdriver_plt/suites/cjk.suite: Added. * Scripts/webkitpy/webdriver_plt/suites/news.suite: Added. * Scripts/webkitpy/webdriver_plt/suites/search.suite: Added. * Scripts/webkitpy/webdriver_plt/suites/shopping.suite: Added. * Scripts/webkitpy/webdriver_plt/suites/social.suite: Added. * Scripts/webkitpy/webdriver_plt/suites/suite.py: Added. (Suite): (Suite.__init__): (Suite.get_available_suites): * Scripts/webkitpy/webdriver_plt/urlresults.py: Added. (URLResults): (URLResults.__init__): (URLResults.__add__): (URLResults.mean): (URLResults.coef_variance): (URLResults.print_results): (URLResults._format_time): Canonical link: https://commits.webkit.org/193130@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@221777 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-09-08 02:58:08 +00:00
import argparse
from webkitpy.webdriver_plt.suites.suite import Suite
from webkitpy.webdriver_plt.liveplt import PageLoadTest
available_browsers = [
"safari", "chrome", "firefox", "stp",
]
def parse_args():
parser = argparse.ArgumentParser(description='Automate running PLT with live websites')
parser.add_argument('-i', '--iterations', dest='iterations', type=int, default=3, help='Test the suite i times in the same browser session')
parser.add_argument('-n', '--instances', dest='instances', type=int, default=3, help='Restart the browser n times for each suite')
parser.add_argument('-w', '--wait', dest='wait', type=float, default=3.0, help='Wait time between pages')
parser.add_argument('-b', '--browser', dest='browser', default='safari', choices=available_browsers)
parser.add_argument('-s', '--suites', dest='suites', nargs='+', help='List one or more suites to run. If unspecified, defaults to running all suites')
parser.add_argument('--width', dest='width', help='Set the inner window width')
parser.add_argument('--height', dest='height', help='Set the inner window height')
args = parser.parse_args()
return args
def start(args):
suites = make_suites(args.suites)
size = (args.width, args.height)
plt = PageLoadTest(args.iterations, args.instances, args.wait, args.browser, suites, size)
plt.start()
def make_suites(suiteslist):
available_suites = Suite.get_available_suites()
suites = list()
if suiteslist:
for suitename in suiteslist:
if suitename.lower() not in available_suites:
print("Suite \"{}\" not found.".format(suitename))
quit()
suites.append(Suite(suitename.lower()))
else:
for suitename in available_suites:
suites.append(Suite(suitename))
return suites
def main():
return start(parse_args())
if __name__ == '__main__':
main()