Skip to content

Commit feb2d08

Browse files
committed
feat(rules): add 'no-browser-driver' rule
1 parent 42c0e87 commit feb2d08

File tree

3 files changed

+78
-2
lines changed

3 files changed

+78
-2
lines changed

index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ var noArrayFinderMethods = require('./lib/rules/no-array-finder-methods')
3030
var validLocatorType = require('./lib/rules/valid-locator-type')
3131
var noCompoundClasses = require('./lib/rules/no-compound-classes')
3232
var useCountMethod = require('./lib/rules/use-count-method')
33+
var noBrowserDriver = require('./lib/rules/no-browser-driver')
3334

3435
module.exports = {
3536
rules: {
@@ -62,7 +63,8 @@ module.exports = {
6263
'no-array-finder-methods': noArrayFinderMethods,
6364
'valid-locator-type': validLocatorType,
6465
'no-compound-classes': noCompoundClasses,
65-
'use-count-method': useCountMethod
66+
'use-count-method': useCountMethod,
67+
'no-browser-driver': noBrowserDriver
6668
},
6769
configs: {
6870
recommended: {
@@ -96,7 +98,8 @@ module.exports = {
9698
'protractor/no-angular-attributes': 1,
9799
'protractor/use-count-method': 1,
98100
'protractor/use-promise-all': 0,
99-
'protractor/by-css-shortcut': 0
101+
'protractor/by-css-shortcut': 0,
102+
'protractor/no-browser-driver': 0
100103
},
101104
globals: {
102105
'browser': false,

lib/rules/no-browser-driver.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict'
2+
3+
module.exports = {
4+
meta: {
5+
schema: []
6+
},
7+
8+
create: function (context) {
9+
// console.log(context)
10+
return {
11+
'MemberExpression': function (node) {
12+
var object = node.object
13+
if (object.name === 'browser') {
14+
// when trying `var d = browser.driver;`
15+
object = node
16+
}
17+
if (object.object && object.object.name === 'browser' &&
18+
object.property && object.property.name === 'driver') {
19+
context.report({
20+
node: node,
21+
message: 'Unexpected use of browser.driver instead of browser'
22+
})
23+
}
24+
}
25+
}
26+
}
27+
}

test/rules/no-browser-driver.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
'use strict'
2+
3+
var rule = require('../../lib/rules/no-browser-driver')
4+
var RuleTester = require('eslint').RuleTester
5+
var eslintTester = new RuleTester()
6+
7+
eslintTester.run('no-browser-driver', rule, {
8+
valid: [
9+
'browser.get();',
10+
'browser.get("mypage");',
11+
'browser.sleep(1000);',
12+
'browser.getTitle();',
13+
'browser.method(function() {});',
14+
'var test = browser.get("MYPAGE");',
15+
'var test = browser.attribute;'
16+
],
17+
18+
invalid: [
19+
{
20+
code: 'browser.driver.sleep(2000);',
21+
errors: [{
22+
message: 'Unexpected use of browser.driver instead of browser'
23+
}]
24+
},
25+
{
26+
code: 'var test = browser.driver.getTitle();',
27+
errors: [
28+
{
29+
message: 'Unexpected use of browser.driver instead of browser'
30+
}
31+
]
32+
},
33+
{
34+
code: 'var test = browser.driver.attribute;',
35+
errors: [{
36+
message: 'Unexpected use of browser.driver instead of browser'
37+
}]
38+
},
39+
{
40+
code: 'var driver = browser.driver;',
41+
errors: [{
42+
message: 'Unexpected use of browser.driver instead of browser'
43+
}]
44+
}
45+
]
46+
})

0 commit comments

Comments
 (0)