OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
4 # for details. All rights reserved. Use of this source code is governed by a | 4 # for details. All rights reserved. Use of this source code is governed by a |
5 # BSD-style license that can be found in the LICENSE file. | 5 # BSD-style license that can be found in the LICENSE file. |
6 # | 6 # |
7 | 7 |
8 """Script to actually open a browser and perform the test, and reports back with | 8 """Script to actually open a browser and perform the test, and reports back with |
9 the result. It uses Selenium WebDriver when possible for running the tests. It | 9 the result. It uses Selenium WebDriver when possible for running the tests. It |
10 uses Selenium RC for Safari. | 10 uses Selenium RC for Safari. |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 def print_server_error(): | 143 def print_server_error(): |
144 """Provide the user an informative error message if we attempt to connect to | 144 """Provide the user an informative error message if we attempt to connect to |
145 the Selenium remote control server, but cannot access it. Then exit the | 145 the Selenium remote control server, but cannot access it. Then exit the |
146 program.""" | 146 program.""" |
147 print ('ERROR: Could not connect to Selenium RC server. Are you running' | 147 print ('ERROR: Could not connect to Selenium RC server. Are you running' |
148 ' java -jar tools/testing/selenium-server-standalone-*.jar? If not, ' | 148 ' java -jar tools/testing/selenium-server-standalone-*.jar? If not, ' |
149 'start it before running this test.') | 149 'start it before running this test.') |
150 sys.exit(1) | 150 sys.exit(1) |
151 | 151 |
152 def start_browser(browser, executable_path, html_out): | 152 def start_browser(browser, executable_path, html_out): |
153 if browser == 'chrome': | 153 if browser == 'chrome' or browser == 'dartium': |
154 # Note: you need ChromeDriver *in your path* to run Chrome, in addition to | 154 # Note: you need ChromeDriver *in your path* to run Chrome, in addition to |
155 # installing Chrome. Also note that the build bot runs have a different path | 155 # installing Chrome. Also note that the build bot runs have a different path |
156 # from a normal user -- check the build logs. | 156 # from a normal user -- check the build logs. |
157 return selenium.webdriver.Chrome() | |
158 elif browser == 'dartium': | |
159 script_dir = os.path.dirname(os.path.abspath(__file__)) | |
160 dartium_dir = os.path.join(script_dir, '..', '..', 'client', 'tests', | |
161 'dartium') | |
162 options = selenium.webdriver.chrome.options.Options() | 157 options = selenium.webdriver.chrome.options.Options() |
163 # enable ShadowDOM and style scoped for Dartium | 158 if browser == 'dartium': |
164 options.add_argument('--enable-shadow-dom') | 159 script_dir = os.path.dirname(os.path.abspath(__file__)) |
165 options.add_argument('--enable-style-scoped') | 160 dartium_dir = os.path.join(script_dir, '..', '..', 'client', 'tests', |
166 if executable_path is not None: | 161 'dartium') |
167 options.binary_location = executable_path | 162 # enable ShadowDOM and style scoped for Dartium |
168 elif platform.system() == 'Windows': | 163 options.add_argument('--enable-shadow-dom') |
169 options.binary_location = os.path.join(dartium_dir, 'chrome.exe') | 164 options.add_argument('--enable-style-scoped') |
170 elif platform.system() == 'Darwin': | 165 if executable_path is not None: |
171 options.binary_location = os.path.join(dartium_dir, 'Chromium.app', | 166 options.binary_location = executable_path |
172 'Contents', 'MacOS', 'Chromium') | 167 elif platform.system() == 'Windows': |
173 else: | 168 options.binary_location = os.path.join(dartium_dir, 'chrome.exe') |
174 options.binary_location = os.path.join(dartium_dir, 'chrome') | 169 elif platform.system() == 'Darwin': |
| 170 options.binary_location = os.path.join(dartium_dir, 'Chromium.app', |
| 171 'Contents', 'MacOS', 'Chromium') |
| 172 else: |
| 173 options.binary_location = os.path.join(dartium_dir, 'chrome') |
175 return selenium.webdriver.Chrome(chrome_options=options) | 174 return selenium.webdriver.Chrome(chrome_options=options) |
176 elif browser == 'ff': | 175 elif browser == 'ff': |
177 script_dir = os.path.dirname(os.path.abspath(__file__)) | 176 script_dir = os.path.dirname(os.path.abspath(__file__)) |
178 profile = selenium.webdriver.firefox.firefox_profile.FirefoxProfile() | 177 profile = selenium.webdriver.firefox.firefox_profile.FirefoxProfile() |
179 profile.set_preference('dom.max_script_run_time', 0) | 178 profile.set_preference('dom.max_script_run_time', 0) |
180 profile.set_preference('dom.max_chrome_script_run_time', 0) | 179 profile.set_preference('dom.max_chrome_script_run_time', 0) |
181 profile.set_preference('app.update.auto', True) | 180 profile.set_preference('app.update.auto', True) |
182 profile.set_preference('app.update.enabled', True) | 181 profile.set_preference('app.update.enabled', True) |
183 return selenium.webdriver.Firefox(firefox_profile=profile) | 182 return selenium.webdriver.Firefox(firefox_profile=profile) |
184 elif ((browser == 'ie9' or browser == 'ie10') and | 183 elif ((browser == 'ie9' or browser == 'ie10') and |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 browser = start_browser(browser_name, executable_path, html_out) | 357 browser = start_browser(browser_name, executable_path, html_out) |
359 | 358 |
360 try: | 359 try: |
361 output = run_test_in_browser(browser, html_out, timeout, mode, refresh) | 360 output = run_test_in_browser(browser, html_out, timeout, mode, refresh) |
362 return report_results(mode, output, browser) | 361 return report_results(mode, output, browser) |
363 finally: | 362 finally: |
364 close_browser(browser) | 363 close_browser(browser) |
365 | 364 |
366 if __name__ == "__main__": | 365 if __name__ == "__main__": |
367 sys.exit(main(sys.argv)) | 366 sys.exit(main(sys.argv)) |
OLD | NEW |