File tree Expand file tree Collapse file tree 13 files changed +268
-1
lines changed Expand file tree Collapse file tree 13 files changed +268
-1
lines changed Original file line number Diff line number Diff line change @@ -419,6 +419,12 @@ WrapperArray.prototype.exists = function exists () {
419
419
return this . length > 0 && this . wrappers . every ( function ( wrapper ) { return wrapper . exists ( ) ; } )
420
420
} ;
421
421
422
+ WrapperArray . prototype . visible = function visible ( ) {
423
+ this . throwErrorIfWrappersIsEmpty ( 'visible' ) ;
424
+
425
+ return this . length > 0 && this . wrappers . every ( function ( wrapper ) { return wrapper . visible ( ) ; } )
426
+ } ;
427
+
422
428
WrapperArray . prototype . emitted = function emitted ( ) {
423
429
this . throwErrorIfWrappersIsEmpty ( 'emitted' ) ;
424
430
@@ -590,6 +596,10 @@ ErrorWrapper.prototype.exists = function exists () {
590
596
return false
591
597
} ;
592
598
599
+ ErrorWrapper . prototype . visible = function visible ( ) {
600
+ throwError ( ( "find did not return " + ( this . selector ) + ", cannot call visible() on empty Wrapper" ) ) ;
601
+ } ;
602
+
593
603
ErrorWrapper . prototype . hasAttribute = function hasAttribute ( ) {
594
604
throwError ( ( "find did not return " + ( this . selector ) + ", cannot call hasAttribute() on empty Wrapper" ) ) ;
595
605
} ;
@@ -874,6 +884,26 @@ Wrapper.prototype.exists = function exists () {
874
884
return true
875
885
} ;
876
886
887
+ /**
888
+ * Utility to check wrapper is visible. Returns false if a parent element has display: none or visibility: hidden style.
889
+ */
890
+ Wrapper . prototype . visible = function visible ( ) {
891
+ var element = this . element ;
892
+
893
+ if ( ! element ) {
894
+ return false
895
+ }
896
+
897
+ while ( element ) {
898
+ if ( element . style && ( element . style . visibility === 'hidden' || element . style . display === 'none' ) ) {
899
+ return false
900
+ }
901
+ element = element . parentElement ;
902
+ }
903
+
904
+ return true
905
+ } ;
906
+
877
907
/**
878
908
* Checks if wrapper has an attribute with matching value
879
909
*/
Original file line number Diff line number Diff line change 52
52
* [ text] ( api/wrapper/text.md )
53
53
* [ trigger] ( api/wrapper/trigger.md )
54
54
* [ update] ( api/wrapper/update.md )
55
+ * [ visible] ( api/wrapper/visible.md )
55
56
* [ WrapperArray] ( api/wrapper-array/README.md )
56
57
* [ at] ( api/wrapper-array/at.md )
57
58
* [ contains] ( api/wrapper-array/contains.md )
67
68
* [ setProps] ( api/wrapper-array/setProps.md )
68
69
* [ trigger] ( api/wrapper-array/trigger.md )
69
70
* [ update] ( api/wrapper-array/update.md )
71
+ * [ visible] ( api/wrapper-array/visible.md )
70
72
* [ components] ( api/components/README.md )
71
73
* [ TransitionStub] ( api/components/TransitionStub.md )
72
74
* [ TransitionGroupStub] ( api/components/TransitionGroupStub.md )
Original file line number Diff line number Diff line change 48
48
* [ text] ( api/wrapper/text.md )
49
49
* [ trigger] ( api/wrapper/trigger.md )
50
50
* [ update] ( api/wrapper/update.md )
51
+ * [ visible] ( api/wrapper/visible.md )
51
52
* [ WrapperArray] ( api/wrapper-array/README.md )
52
53
* [ at] ( api/wrapper-array/at.md )
53
54
* [ contains] ( api/wrapper-array/contains.md )
63
64
* [ setProps] ( api/wrapper-array/setProps.md )
64
65
* [ trigger] ( api/wrapper-array/trigger.md )
65
66
* [ update] ( api/wrapper-array/update.md )
67
+ * [ visible] ( api/wrapper-array/visible.md )
66
68
* [ components] ( api/components/README.md )
67
69
* [ TransitionStub] ( api/components/TransitionStub.md )
68
70
* [ TransitionGroupStub] ( api/components/TransitionGroupStub.md )
Original file line number Diff line number Diff line change
1
+ # visible()
2
+
3
+ Assert every ` Wrapper ` in ` WrapperArray ` is visible.
4
+
5
+ Returns false if at least one ancestor element has ` display: none ` or ` visibility: hidden ` style.
6
+
7
+ This can be used to assert that a component is hidden by ` v-show ` .
8
+
9
+ - ** Returns:** ` {boolean} `
10
+
11
+ - ** Example:**
12
+
13
+ ``` js
14
+ import { mount } from ' vue-test-utils'
15
+ import { expect } from ' chai'
16
+ import Foo from ' ./Foo.vue'
17
+
18
+ const wrapper = mount (Foo)
19
+ expect (wrapper .visible ()).toBe (true )
20
+ expect (wrapper .findAll (' .is-not-visible' ).visible ()).toBe (false )
21
+ expect (wrapper .findAll (' .is-visible' ).visible ()).toBe (true )
22
+ ```
Original file line number Diff line number Diff line change
1
+ # visible()
2
+
3
+ Assert ` Wrapper ` or ` WrapperArray ` is visible.
4
+
5
+ Returns false if an ancestor element has ` display: none ` or ` visibility: hidden ` style.
6
+
7
+ This can be used to assert that a component is hidden by ` v-show ` .
8
+
9
+ - ** Returns:** ` {boolean} `
10
+
11
+ - ** Example:**
12
+
13
+ ``` js
14
+ import { mount } from ' vue-test-utils'
15
+ import { expect } from ' chai'
16
+ import Foo from ' ./Foo.vue'
17
+
18
+ const wrapper = mount (Foo)
19
+ expect (wrapper .visible ()).toBe (true )
20
+ expect (wrapper .find (' .is-not-visible' ).visible ()).toBe (false )
21
+ expect (wrapper .findAll (' div' ).visible ()).toBe (true )
22
+ expect (wrapper .findAll (' .is-not-visible' ).visible ()).toBe (false )
23
+ ```
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ declare interface BaseWrapper { // eslint-disable-line no-undef
13
13
emitted ( event ? : string ) : { [ name : string ] : Array < Array < any >> } | Array < Array < any >> | void ,
14
14
emittedByOrder ( ) : Array < { name : string ; args: Array < any > } > | void ,
15
15
exists ( ) : boolean ,
16
+ visible ( ) : boolean | void ,
16
17
hasAttribute ( attribute : string , value : string ) : boolean | void ,
17
18
hasClass ( className : string ) : boolean | void ,
18
19
hasProp ( prop : string , value : string ) : boolean | void ,
Original file line number Diff line number Diff line change 10
10
],
11
11
"scripts" : {
12
12
"build" : " node build/build.js" ,
13
- "build:test" : " NODE_ENV=test node build/build.js" ,
13
+ "build:test" : " cross-env NODE_ENV=test node build/build.js" ,
14
14
"coverage" : " cross-env NODE_ENV=coverage nyc --reporter=lcov --reporter=text npm run test:unit" ,
15
15
"docs" : " cd docs && gitbook install && gitbook serve" ,
16
16
"docs:deploy" : " build/update-docs.sh" ,
Original file line number Diff line number Diff line change @@ -36,6 +36,10 @@ export default class ErrorWrapper implements BaseWrapper {
36
36
return false
37
37
}
38
38
39
+ visible ( ) : void {
40
+ throwError ( `find did not return ${ this . selector } , cannot call visible() on empty Wrapper` )
41
+ }
42
+
39
43
hasAttribute ( ) : void {
40
44
throwError ( `find did not return ${ this . selector } , cannot call hasAttribute() on empty Wrapper` )
41
45
}
Original file line number Diff line number Diff line change @@ -42,6 +42,12 @@ export default class WrapperArray implements BaseWrapper {
42
42
return this . length > 0 && this . wrappers . every ( wrapper => wrapper . exists ( ) )
43
43
}
44
44
45
+ visible ( ) : boolean {
46
+ this . throwErrorIfWrappersIsEmpty ( 'visible' )
47
+
48
+ return this . length > 0 && this . wrappers . every ( wrapper => wrapper . visible ( ) )
49
+ }
50
+
45
51
emitted ( ) : void {
46
52
this . throwErrorIfWrappersIsEmpty ( 'emitted' )
47
53
Original file line number Diff line number Diff line change @@ -120,6 +120,26 @@ export default class Wrapper implements BaseWrapper {
120
120
return true
121
121
}
122
122
123
+ /**
124
+ * Utility to check wrapper is visible. Returns false if a parent element has display: none or visibility: hidden style.
125
+ */
126
+ visible ( ) : boolean {
127
+ let element = this . element
128
+
129
+ if ( ! element ) {
130
+ return false
131
+ }
132
+
133
+ while ( element ) {
134
+ if ( element . style && ( element . style . visibility === 'hidden' || element . style . display === 'none' ) ) {
135
+ return false
136
+ }
137
+ element = element . parentElement
138
+ }
139
+
140
+ return true
141
+ }
142
+
123
143
/**
124
144
* Checks if wrapper has an attribute with matching value
125
145
*/
You can’t perform that action at this time.
0 commit comments