61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
# Copyright 2023 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
"""Implements commands for running webpage tests."""
|
|
|
|
import argparse
|
|
import logging
|
|
import time
|
|
|
|
from typing import List, Optional
|
|
|
|
from common import catch_sigterm, run_continuous_ffx_command
|
|
from test_runner import TestRunner
|
|
|
|
|
|
class WebpageTestRunner(TestRunner):
|
|
"""Test runner for running GPU tests."""
|
|
|
|
def __init__(self, out_dir: str, test_args: List[str],
|
|
target_id: Optional[str]) -> None:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
'--browser',
|
|
choices=['web-engine-shell', 'chrome'],
|
|
help='The browser to use for Telemetry based tests.')
|
|
args, _ = parser.parse_known_args(test_args)
|
|
|
|
if args.browser == 'web-engine-shell':
|
|
packages = ['web_engine_shell']
|
|
else:
|
|
packages = ['chrome']
|
|
|
|
super().__init__(out_dir, test_args, packages, target_id)
|
|
|
|
def run_test(self):
|
|
catch_sigterm()
|
|
browser_cmd = [
|
|
'test',
|
|
'run',
|
|
'-t',
|
|
'3600', # Keep the webpage running for an hour.
|
|
f'fuchsia-pkg://fuchsia.com/{self._packages[0]}#meta/'
|
|
f'{self._packages[0]}.cm'
|
|
]
|
|
browser_cmd.extend(
|
|
['--', '--web-engine-package-name=web_engine_with_webui'])
|
|
if self._test_args:
|
|
browser_cmd.extend(self._test_args)
|
|
logging.info('Starting %s', self._packages[0])
|
|
try:
|
|
browser_proc = run_continuous_ffx_command(browser_cmd)
|
|
while True:
|
|
time.sleep(10000)
|
|
except KeyboardInterrupt:
|
|
logging.info('Ctrl-C received; shutting down the webpage.')
|
|
browser_proc.kill()
|
|
except SystemExit:
|
|
logging.info('SIGTERM received; shutting down the webpage.')
|
|
browser_proc.kill()
|
|
return browser_proc
|