chromium/build/fuchsia/test/run_webpage_test.py

# 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

from typing import List, Optional

from common import catch_sigterm, run_continuous_ffx_command, wait_for_sigterm
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])
        browser_proc = run_continuous_ffx_command(browser_cmd)
        try:
            wait_for_sigterm('shutting down the webpage.')
        finally:
            browser_proc.kill()