@@ -47,7 +47,25 @@ var getFakeDriver = function() {
47
47
return flow . execute ( function ( ) {
48
48
return webdriver . promise . fulfilled ( 3.14159 ) ;
49
49
} ) ;
50
- }
50
+ } ,
51
+ getDisplayedElement : function ( ) {
52
+ return flow . execute ( function ( ) {
53
+ return webdriver . promise . fulfilled ( {
54
+ isDisplayed : function ( ) {
55
+ return webdriver . promise . fulfilled ( true ) ;
56
+ }
57
+ } ) ;
58
+ } ) ;
59
+ } ,
60
+ getHiddenElement : function ( ) {
61
+ return flow . execute ( function ( ) {
62
+ return webdriver . promise . fulfilled ( {
63
+ isDisplayed : function ( ) {
64
+ return webdriver . promise . fulfilled ( false ) ;
65
+ }
66
+ } ) ;
67
+ } ) ;
68
+ }
51
69
} ;
52
70
} ;
53
71
@@ -69,6 +87,10 @@ describe('webdriverJS Jasmine adapter', function() {
69
87
this . addMatchers ( {
70
88
toBeLotsMoreThan : function ( expected ) {
71
89
return this . actual > expected + 100 ;
90
+ } ,
91
+ // Example custom matcher returning a promise that resolves to true/false.
92
+ toBeDisplayed : function ( ) {
93
+ return this . actual . isDisplayed ( ) ;
72
94
}
73
95
} ) ;
74
96
} ) ;
@@ -116,6 +138,11 @@ describe('webdriverJS Jasmine adapter', function() {
116
138
expect ( fakeDriver . getBigNumber ( ) ) . toBeLotsMoreThan ( 33 ) ;
117
139
} ) ;
118
140
141
+ it ( 'should allow custom matchers to return a promise' , function ( ) {
142
+ expect ( fakeDriver . getDisplayedElement ( ) ) . toBeDisplayed ( ) ;
143
+ expect ( fakeDriver . getHiddenElement ( ) ) . not . toBeDisplayed ( ) ;
144
+ } ) ;
145
+
119
146
it ( 'should pass multiple arguments to matcher' , function ( ) {
120
147
// Passing specific precision
121
148
expect ( fakeDriver . getDecimalNumber ( ) ) . toBeCloseTo ( 3.1 , 1 ) ;
0 commit comments