run_layout_tests.py revision bdebd0621b2a4422a30bea21ea549afd20a9e918
15fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski#!/usr/bin/python
25fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
35fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski"""Run layout tests on the device.
45fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
55fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  It runs the specified tests on the device, downloads the summaries to the temporary directory
65fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  and opens html details in the default browser.
75fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
85fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  Usage:
95fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski    run_layout_tests.py PATH
105fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski"""
115fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
125fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport sys
135fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport os
145fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport subprocess
155fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport logging
165fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport webbrowser
175fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport tempfile
185fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
195fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski#TODO: These should not be hardcoded
20bdebd0621b2a4422a30bea21ea549afd20a9e918Steve BlockRESULTS_ABSOLUTE_PATH = "/sdcard/layout-test-results/"
215fb9ff420d378c5c83e116efadefb669791098d5Maksymilian OsowskiDETAILS_HTML = "details.html"
225fb9ff420d378c5c83e116efadefb669791098d5Maksymilian OsowskiSUMMARY_TXT = "summary.txt"
235fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
245fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskidef main():
255fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  if len(sys.argv) > 1:
265fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski    path = sys.argv[1]
275fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  else:
285fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski    path = ""
295fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
305fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  logging.basicConfig(level=logging.INFO, format='%(message)s')
315fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
325fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  tmpdir = tempfile.gettempdir()
335fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
345fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  # Run the tests in path
355fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  cmd = "adb shell am instrument "
365fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  cmd += "-e class com.android.dumprendertree2.scriptsupport.Starter#startLayoutTests "
375fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  cmd += "-e path \"" + path + "\" "
385fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  cmd +="-w com.android.dumprendertree2/com.android.dumprendertree2.scriptsupport.ScriptTestRunner"
395fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
405fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  logging.info("Running the tests...")
415fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
425fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
435fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  logging.info("Downloading the summaries...")
445fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
455fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  # Download the txt summary to tmp folder
465fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  summary_txt_tmp_path = os.path.join(tmpdir, SUMMARY_TXT)
475fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  cmd = "adb pull " + RESULTS_ABSOLUTE_PATH + SUMMARY_TXT + " " + summary_txt_tmp_path
485fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
495fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
505fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  # Download the html summary to tmp folder
515fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  details_html_tmp_path = os.path.join(tmpdir, DETAILS_HTML)
525fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  cmd = "adb pull " + RESULTS_ABSOLUTE_PATH + DETAILS_HTML + " " + details_html_tmp_path
535fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
545fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
555fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  # Print summary to console
565fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  logging.info("All done.\n")
575fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  cmd = "cat " + summary_txt_tmp_path
585fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  os.system(cmd)
595fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  logging.info("")
605fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
615fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  # Open the browser with summary
625fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  webbrowser.open(details_html_tmp_path)
635fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski
645fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiif __name__ == "__main__":
655fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski  main();
66