File tree Expand file tree Collapse file tree 3 files changed +126
-0
lines changed Expand file tree Collapse file tree 3 files changed +126
-0
lines changed Original file line number Diff line number Diff line change 1+ # Warn about using deprecated ` getInnerHtml() ` and ` getOuterHtml() ` methods
2+
3+ Selenium [ has deprecated ` getInnerHtml() ` and ` getOuterHtml() ` methods in version 2.53] ( https://github.com/SeleniumHQ/selenium/blob/96ed95a97405fa267eea09c4008cda9e7703e84d/javascript/node/selenium-webdriver/CHANGES.md#change-summary ) .
4+ And, hence, Protractor itself _ does not have these methods documented_ as a part of [ public API] ( http://www.protractortest.org/#/api ) anymore.
5+
6+ ## Rule details
7+
8+ Any use of the following patterns are considered warnings:
9+
10+ ``` js
11+ expect (element (by .id (" myid" )).getInnerHtml ()).toEqual (" test" );
12+ expect (element (by .id (" myid" )).getOuterHtml ()).toEqual (" test" );
13+ element .all (by .css (" .class" )).first ().getOuterHtml ();
14+ element (by .id (" id" )).all (by .css (" .class" )).last ().getInnerHtml ();
15+ $$ (" .class" ).first ().getOuterHtml ();
16+ $ (" .class" ).getInnerHtml ().then (function (html ) { console .log (html) });
17+ ```
18+
19+ The following patterns are not warnings:
20+
21+ ``` js
22+ expect (element (by .id (" myid" )).getText ()).toEqual (" test" );
23+ getInnerHtml ();
24+ var html = getOuterHtml ();
25+ elm .getInnerHTML ();
26+ elm .getOuterHTML ();
27+ ```
Original file line number Diff line number Diff line change 1+ 'use strict'
2+
3+ /**
4+ * @fileoverview Warn about using `getInnerHtml()` and `getOuterHtml()` methods
5+ * @author Alexander Afanasyev
6+ */
7+
8+ module . exports = {
9+ meta : {
10+ schema : [ ]
11+ } ,
12+
13+ create : function ( context ) {
14+ return {
15+ 'CallExpression' : function ( node ) {
16+ var object = node . callee . object
17+ var property = node . callee . property
18+
19+ if ( object && property ) {
20+ var isInnerHtml = property . name === 'getInnerHtml'
21+ var isOuterHtml = property . name === 'getOuterHtml'
22+ if ( isInnerHtml || isOuterHtml ) {
23+ context . report ( {
24+ node : node ,
25+ message : 'Unexpected "' + property . name + '()"'
26+ } )
27+ }
28+ }
29+ }
30+ }
31+ }
32+ }
Original file line number Diff line number Diff line change 1+ 'use strict'
2+
3+ var rule = require ( '../../lib/rules/no-get-inner-outer-html' )
4+ var RuleTester = require ( 'eslint' ) . RuleTester
5+
6+ var eslintTester = new RuleTester ( )
7+
8+ eslintTester . run ( 'no-get-inner-outer-html' , rule , {
9+ valid : [
10+ 'expect(element(by.id("myid")).getText()).toEqual("test");' ,
11+ 'getInnerHtml();' ,
12+ 'var html = getOuterHtml();' ,
13+ 'elm.getInnerHTML();' ,
14+ 'elm.getOuterHTML();'
15+ ] ,
16+
17+ invalid : [
18+ {
19+ code : 'expect(element(by.id("myid")).getInnerHtml()).toEqual("test");' ,
20+ errors : [
21+ {
22+ message : 'Unexpected "getInnerHtml()"'
23+ }
24+ ]
25+ } ,
26+ {
27+ code : 'expect(element(by.id("myid")).getOuterHtml()).toEqual("test");' ,
28+ errors : [
29+ {
30+ message : 'Unexpected "getOuterHtml()"'
31+ }
32+ ]
33+ } ,
34+ {
35+ code : 'element.all(by.css(".class")).first().getOuterHtml();' ,
36+ errors : [
37+ {
38+ message : 'Unexpected "getOuterHtml()"'
39+ }
40+ ]
41+ } ,
42+ {
43+ code : 'element(by.id("id")).all(by.css(".class")).last().getInnerHtml();' ,
44+ errors : [
45+ {
46+ message : 'Unexpected "getInnerHtml()"'
47+ }
48+ ]
49+ } ,
50+ {
51+ code : '$$(".class").first().getOuterHtml();' ,
52+ errors : [
53+ {
54+ message : 'Unexpected "getOuterHtml()"'
55+ }
56+ ]
57+ } ,
58+ {
59+ code : '$(".class").getInnerHtml().then(function (html) { console.log(html) });' ,
60+ errors : [
61+ {
62+ message : 'Unexpected "getInnerHtml()"'
63+ }
64+ ]
65+ }
66+ ]
67+ } )
You can’t perform that action at this time.
0 commit comments