xref: /aosp_15_r20/external/cronet/testing/scripts/run_chromedriver_tests.py (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker#!/usr/bin/env python
2*6777b538SAndroid Build Coastguard Worker# Copyright 2018 The Chromium Authors
3*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
5*6777b538SAndroid Build Coastguard Worker
6*6777b538SAndroid Build Coastguard Worker"""Runs chrome driver tests.
7*6777b538SAndroid Build Coastguard Worker
8*6777b538SAndroid Build Coastguard WorkerThis script attempts to emulate the contract of gtest-style tests
9*6777b538SAndroid Build Coastguard Workerinvoked via recipes.
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard WorkerIf optional argument --isolated-script-test-output=[FILENAME] is passed
12*6777b538SAndroid Build Coastguard Workerto the script, json is written to that file in the format detailed in
13*6777b538SAndroid Build Coastguard Worker//docs/testing/json-test-results-format.md.
14*6777b538SAndroid Build Coastguard Worker
15*6777b538SAndroid Build Coastguard WorkerIf optional argument --isolated-script-test-filter=[TEST_NAMES] is passed to
16*6777b538SAndroid Build Coastguard Workerthe script, it should be a  double-colon-separated ("::") list of test names,
17*6777b538SAndroid Build Coastguard Workerto run just that subset of tests. This list is forwarded to the chrome driver
18*6777b538SAndroid Build Coastguard Workertest runner.  """
19*6777b538SAndroid Build Coastguard Worker
20*6777b538SAndroid Build Coastguard Workerimport argparse
21*6777b538SAndroid Build Coastguard Workerimport json
22*6777b538SAndroid Build Coastguard Workerimport os
23*6777b538SAndroid Build Coastguard Workerimport shutil
24*6777b538SAndroid Build Coastguard Workerimport sys
25*6777b538SAndroid Build Coastguard Workerimport tempfile
26*6777b538SAndroid Build Coastguard Workerimport traceback
27*6777b538SAndroid Build Coastguard Worker
28*6777b538SAndroid Build Coastguard Worker# Add src/testing/ into sys.path for importing common without pylint errors.
29*6777b538SAndroid Build Coastguard Workersys.path.append(
30*6777b538SAndroid Build Coastguard Worker    os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
31*6777b538SAndroid Build Coastguard Workerfrom scripts import common
32*6777b538SAndroid Build Coastguard Worker
33*6777b538SAndroid Build Coastguard Worker
34*6777b538SAndroid Build Coastguard Workerclass ChromeDriverAdapter(common.BaseIsolatedScriptArgsAdapter):
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard Worker  def generate_test_output_args(self, output):
37*6777b538SAndroid Build Coastguard Worker    return ['--isolated-script-test-output', output]
38*6777b538SAndroid Build Coastguard Worker
39*6777b538SAndroid Build Coastguard Worker  def generate_test_filter_args(self, test_filter_str):
40*6777b538SAndroid Build Coastguard Worker    if any('--filter' in arg for arg in self.rest_args):
41*6777b538SAndroid Build Coastguard Worker      self.parser.error(
42*6777b538SAndroid Build Coastguard Worker          'can\'t have the test call filter with the'
43*6777b538SAndroid Build Coastguard Worker          '--isolated-script-test-filter argument to the wrapper script')
44*6777b538SAndroid Build Coastguard Worker
45*6777b538SAndroid Build Coastguard Worker    return ['--filter', test_filter_str.replace('::', ':')]
46*6777b538SAndroid Build Coastguard Worker
47*6777b538SAndroid Build Coastguard Worker
48*6777b538SAndroid Build Coastguard Workerdef main():
49*6777b538SAndroid Build Coastguard Worker  adapter = ChromeDriverAdapter()
50*6777b538SAndroid Build Coastguard Worker  return adapter.run_test()
51*6777b538SAndroid Build Coastguard Worker
52*6777b538SAndroid Build Coastguard Worker
53*6777b538SAndroid Build Coastguard Worker# This is not really a "script test" so does not need to manually add
54*6777b538SAndroid Build Coastguard Worker# any additional compile targets.
55*6777b538SAndroid Build Coastguard Workerdef main_compile_targets(args):
56*6777b538SAndroid Build Coastguard Worker  json.dump([], args.output)
57*6777b538SAndroid Build Coastguard Worker
58*6777b538SAndroid Build Coastguard Worker
59*6777b538SAndroid Build Coastguard Workerif __name__ == '__main__':
60*6777b538SAndroid Build Coastguard Worker  # Conform minimally to the protocol defined by ScriptTest.
61*6777b538SAndroid Build Coastguard Worker  if 'compile_targets' in sys.argv:
62*6777b538SAndroid Build Coastguard Worker    funcs = {
63*6777b538SAndroid Build Coastguard Worker      'run': None,
64*6777b538SAndroid Build Coastguard Worker      'compile_targets': main_compile_targets,
65*6777b538SAndroid Build Coastguard Worker    }
66*6777b538SAndroid Build Coastguard Worker    sys.exit(common.run_script(sys.argv[1:], funcs))
67*6777b538SAndroid Build Coastguard Worker  sys.exit(main())
68