| # Copyright 2017 The Bazel Authors. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| """Web Test rules for Typescript.""" |
| |
| load(":ts_web_test.bzl", "ts_web_test") |
| load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") |
| load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") |
| |
| def ts_web_test_suite( |
| name, |
| browsers=["@io_bazel_rules_webtesting//browsers:chromium-local"], |
| args=None, |
| browser_overrides=None, |
| config=None, |
| flaky=None, |
| local=None, |
| shard_count=None, |
| size=None, |
| tags = [], |
| test_suite_tags=None, |
| timeout=None, |
| visibility=None, |
| web_test_data=[], |
| wrapped_test_tags=None, |
| **remaining_keyword_args): |
| """Defines a test_suite of web_test targets that wrap a ts_web_test target. |
| |
| Args: |
| name: The base name of the test. |
| browsers: A sequence of labels specifying the browsers to use. |
| args: Args for web_test targets generated by this extension. |
| browser_overrides: Dictionary; optional; default is an empty dictionary. A |
| dictionary mapping from browser names to browser-specific web_test |
| attributes, such as shard_count, flakiness, timeout, etc. For example: |
| {'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} |
| '//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}. |
| config: Label; optional; Configuration of web test features. |
| flaky: A boolean specifying that the test is flaky. If set, the test will |
| be retried up to 3 times (default: 0) |
| local: boolean; optional. |
| shard_count: The number of test shards to use per browser. (default: 1) |
| size: A string specifying the test size. (default: 'large') |
| tags: A list of test tag strings to apply to each generated web_test target. |
| This macro adds a couple for ibazel. |
| test_suite_tags: A list of tag strings for the generated test_suite. |
| timeout: A string specifying the test timeout (default: computed from size) |
| visibility: List of labels; optional. |
| web_test_data: Data dependencies for the web_test. |
| wrapped_test_tags: A list of test tag strings to use for the wrapped test |
| **remaining_keyword_args: Arguments for the wrapped test target. |
| """ |
| # Check explicitly for None so that users can set this to the empty list |
| if wrapped_test_tags == None: |
| wrapped_test_tags = DEFAULT_WRAPPED_TEST_TAGS |
| |
| size = size or "large" |
| |
| wrapped_test_name = name + "_wrapped_test" |
| |
| # Users don't need to know that this tag is required to run under ibazel |
| tags = tags + ["ibazel_notify_changes"] |
| |
| # Our binary dependency must be in data[] for collect_data to pick it up |
| # FIXME: maybe we can just ask the attr._karma for its runfiles attr |
| web_test_data = web_test_data + ["@build_bazel_rules_typescript//internal/karma:karma_bin"] |
| |
| ts_web_test( |
| name=wrapped_test_name, |
| args=args, |
| flaky=flaky, |
| local=local, |
| shard_count=shard_count, |
| size=size, |
| tags=wrapped_test_tags, |
| timeout=timeout, |
| visibility=["//visibility:private"], |
| **remaining_keyword_args) |
| |
| web_test_suite( |
| name=name, |
| launcher=":"+wrapped_test_name, |
| args=args, |
| browsers=browsers, |
| browser_overrides=browser_overrides, |
| config=config, |
| data=web_test_data, |
| flaky=flaky, |
| local=local, |
| shard_count=shard_count, |
| size=size, |
| tags=tags, |
| test=wrapped_test_name, |
| test_suite_tags=test_suite_tags, |
| timeout=timeout, |
| visibility=visibility) |