WebDriver: add support for test expectations
[WebKit-https.git] / Tools / Scripts / run-webdriver-tests
1 #!/usr/bin/env python
2
3 # Copyright (C) 2017 Igalia S.L.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 # 1.  Redistributions of source code must retain the above copyright
9 #     notice, this list of conditions and the following disclaimer.
10 # 2.  Redistributions in binary form must reproduce the above copyright
11 #     notice, this list of conditions and the following disclaimer in the
12 #     documentation and/or other materials provided with the distribution.
13 #
14 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
15 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
21 # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
25 import logging
26 import optparse
27 import sys
28
29 from webkitpy.common.host import Host
30 from webkitpy.webdriver_tests.webdriver_test_runner import WebDriverTestRunner
31 from webkitpy.common.system.logutils import configure_logging
32
33 _log = logging.getLogger(__name__)
34
35 option_parser = optparse.OptionParser(usage='usage: %prog [options] [test...]')
36 option_parser.add_option('--verbose', action='store_true', dest='verbose',
37                          help='Show debug message')
38 option_parser.add_option('--platform', action='store',
39                          help='Platform to use (e.g., "gtk")')
40 option_parser.add_option('--gtk', action='store_const', dest='platform', const='gtk',
41                          help='Alias for --platform=gtk')
42 option_parser.add_option('--wpe', action='store_const', dest='platform', const='wpe',
43                          help='Alias for --platform=wpe')
44 option_parser.add_option('--release', action='store_const', const='Release', dest="configuration",
45                          help='Set the configuration to Release')
46 option_parser.add_option('--debug', action='store_const', const='Debug', dest="configuration",
47                          help='Set the configuration to Debug')
48 option_parser.add_option('--timeout', action='store', type='int', dest='timeout', default=10,
49                          help='Time in seconds until a test times out (use 0 to disable)')
50 option_parser.add_option('--json-output', action='store', metavar="FILE",
51                          help='Write results to JSON file at the given path')
52 option_parser.add_option('--display-server', choices=['xvfb', 'xorg', 'weston', 'wayland'], default='xvfb',
53                          help='"xvfb": Use a virtualized X11 server. "xorg": Use the current X11 session. '
54                               '"weston": Use a virtualized Weston server. "wayland": Use the current wayland session.')
55
56 options, args = option_parser.parse_args()
57
58 configure_logging(logging.DEBUG if options.verbose else logging.INFO)
59
60 try:
61     port = Host().port_factory.get(options.platform, options)
62 except NotImplementedError, e:
63     _log.error(str(e))
64     sys.exit(-1)
65
66 port._display_server = options.display_server
67 runner = WebDriverTestRunner(port)
68 runner.run(args)
69 retval = runner.process_results()
70
71 if options.json_output is not None:
72     runner.dump_results_to_json_file(options.json_output)
73
74 sys.exit(retval)
75