docs/rules/use-angular-locators.md
# Recommend using built-in Angular-specific locators
Warn about using attributes like `ng-model`, `ng-bind`, `ng-repeat` and `ng-options` inside CSS selectors. Recommend built-in specific locators instead.
## Rule details
Here is a mapping between the relevant attribute and a recommended locator:
* `ng-model`/`data-ng-model` -> `by.model()`
* `ng-bind`/`data-ng-bind` -> `by.binding()` or `by.exactBinding()`
* `ng-repeat`/`data-ng-repeat` -> `by.repeater()` or `by.exactRepeater()`
* `ng-options`/`data-ng-options` -> `by.options()`
:thumbsdown: Any use of the following patterns are considered warnings:
```js
element(by.css("[ng-model=test]"));
element.all(by.css("[data-ng-model=test]"));
$("[ng-bind=test]");
$$("[data-ng-bind=test]");
element(by.id("test")).$('[ng-repeat="item in items"]');
element(by.id("test")).$$('[data-ng-repeat="item in items"]');
$('[ng-options="item in items"]');
$$('[data-ng-options="item in items"]');
```
:thumbsup: The following patterns are not warnings:
```js
element(by.model("test"));
element(by.binding("test"));
element(by.exactBinding("test"));
element.all(by.repeater("item in items"));
element.all(by.exactRepeater("item in items"));
element.all(by.options("item in items"));
```