blob: d27010400cbcb9d8dd1d8ee8bb3493fedc0b2a14 [file] [log] [blame] [view]
---
title: Protractor
layout: default
stylesheet: docs
---
# Protractor rules for Bazel
**WARNING: this is beta-quality software. Breaking changes are likely. Not recommended for production use without expert support.**
The Protractor rules run tests under the Protractor framework with Bazel.
## Installation
Add the `@bazel/protractor` npm package to your `devDependencies` in `package.json`.
Your `WORKSPACE` should declare a `yarn_install` or `npm_install` rule named `npm`.
It should then install the rules found in the npm packages using the `install_bazel_dependencies' function.
See https://github.com/bazelbuild/rules_nodejs/#quickstart
This causes the `@bazel/protractor` package to be installed as a Bazel workspace named `npm_bazel_protractor`.
[name]: https://bazel.build/docs/build-ref.html#name
[label]: https://bazel.build/docs/build-ref.html#labels
[labels]: https://bazel.build/docs/build-ref.html#labels
## protractor_web_test
Runs a protractor test in a browser.
### Usage
```
protractor_web_test(name, configuration, on_prepare, srcs, deps, data, server, tags, protractor, protractor_entry_point, kwargs)
```
#### `name`
The name of the test
#### `configuration`
Protractor configuration file.
Defaults to `None`
#### `on_prepare`
A file with a node.js script to run once before all tests run.
If the script exports a function which returns a promise, protractor
will wait for the promise to resolve before beginning tests.
Defaults to `None`
#### `srcs`
JavaScript source files
Defaults to `[]`
#### `deps`
Other targets which produce JavaScript such as `ts_library`
Defaults to `[]`
#### `data`
Runtime dependencies
Defaults to `[]`
#### `server`
Optional server executable target
Defaults to `None`
#### `tags`
Standard Bazel tags, this macro adds one for ibazel
Defaults to `[]`
#### `protractor`
A label providing the @bazel/protractor npm dependency.
Defaults to `"@npm//@bazel/protractor"`
#### `protractor_entry_point`
A label providing the @bazel/protractor entry point.
Defaults to `"@npm//:node_modules/@bazel/protractor/protractor.js"`
#### `kwargs`
passed through to `_protractor_web_test`
## protractor_web_test_suite
Defines a test_suite of web_test targets that wrap a protractor_web_test target.
### Usage
```
protractor_web_test_suite(name, configuration, on_prepare, srcs, deps, data, server, browsers, args, browser_overrides, config, flaky, local, shard_count, size, tags, test_suite_tags, timeout, visibility, web_test_data, wrapped_test_tags, protractor, protractor_entry_point, remaining_keyword_args)
```
#### `name`
The base name of the test.
#### `configuration`
Protractor configuration file.
Defaults to `None`
#### `on_prepare`
A file with a node.js script to run once before all tests run.
If the script exports a function which returns a promise, protractor
will wait for the promise to resolve before beginning tests.
Defaults to `None`
#### `srcs`
JavaScript source files
Defaults to `[]`
#### `deps`
Other targets which produce JavaScript such as `ts_library`
Defaults to `[]`
#### `data`
Runtime dependencies
Defaults to `[]`
#### `server`
Optional server executable target
Defaults to `None`
#### `browsers`
A sequence of labels specifying the browsers to use.
Defaults to `None`
#### `args`
Args for web_test targets generated by this extension.
Defaults to `None`
#### `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}}.
Defaults to `None`
#### `config`
Label; optional; Configuration of web test features.
Defaults to `None`
#### `flaky`
A boolean specifying that the test is flaky. If set, the test will
be retried up to 3 times (default: 0)
Defaults to `None`
#### `local`
boolean; optional.
Defaults to `None`
#### `shard_count`
The number of test shards to use per browser. (default: 1)
Defaults to `None`
#### `size`
A string specifying the test size. (default: 'large')
Defaults to `None`
#### `tags`
A list of test tag strings to apply to each generated web_test target.
This macro adds a couple for ibazel.
Defaults to `[]`
#### `test_suite_tags`
A list of tag strings for the generated test_suite.
Defaults to `None`
#### `timeout`
A string specifying the test timeout (default: computed from size)
Defaults to `None`
#### `visibility`
List of labels; optional.
Defaults to `None`
#### `web_test_data`
Data dependencies for the web_test.
Defaults to `[]`
#### `wrapped_test_tags`
A list of test tag strings to use for the wrapped test
Defaults to `None`
#### `protractor`
Protractor entry_point. Defaults to @npm//:node_modules/protractor/bin/protractor
but should be changed to @your_npm_workspace//:node_modules/protractor/bin/protractor if
you are not using @npm for your npm dependencies.
Defaults to `"@npm//@bazel/protractor"`
#### `protractor_entry_point`
Defaults to `"@npm//:node_modules/@bazel/protractor/protractor.js"`
#### `remaining_keyword_args`
Arguments for the wrapped test target.