docs/rules/no-shadowing.md
# Don't allow to shadow the built-in Protractor globals
The rule is to prevent shadowing the built-in Protractor globals, like `element` or `by`.
## Rule details
Here is the list of global variables checked for not to be shadowed:
* `browser`
* `protractor`
* `element`
* `by`
* `$`
* `$$`
:thumbsdown: The following patterns are considered warnings:
```js
var element = "something";
function test (browser) {};
var protractor;
function by () {};
var $ = 1;
var a = 2, $$ = 3;
for (var by = 0; by < 10; ++by) {}
try { json = JSON.parse(input) } catch (browser) {}
```
:thumbsup: The following patterns are not warnings:
```js
var element2 = "something";
element(by.id("test"));
var EC = protractor.ExpectedConditions;
var elm = $(".myclass");
var elements = $$(".myclass");
for (var i = 0; i < 10; ++i) {}
try { json = JSON.parse(input) } catch (e) {}
```