File tree Expand file tree Collapse file tree 12 files changed +236
-1
lines changed
Expand file tree Collapse file tree 12 files changed +236
-1
lines changed Original file line number Diff line number Diff line change 5252 * [ text] ( api/wrapper/text.md )
5353 * [ trigger] ( api/wrapper/trigger.md )
5454 * [ update] ( api/wrapper/update.md )
55+ * [ visible] ( api/wrapper/visible.md )
5556 * [ WrapperArray] ( api/wrapper-array/README.md )
5657 * [ at] ( api/wrapper-array/at.md )
5758 * [ contains] ( api/wrapper-array/contains.md )
6768 * [ setProps] ( api/wrapper-array/setProps.md )
6869 * [ trigger] ( api/wrapper-array/trigger.md )
6970 * [ update] ( api/wrapper-array/update.md )
71+ * [ visible] ( api/wrapper-array/visible.md )
7072 * [ components] ( api/components/README.md )
7173 * [ TransitionStub] ( api/components/TransitionStub.md )
7274 * [ TransitionGroupStub] ( api/components/TransitionGroupStub.md )
Original file line number Diff line number Diff line change 4848 * [ text] ( api/wrapper/text.md )
4949 * [ trigger] ( api/wrapper/trigger.md )
5050 * [ update] ( api/wrapper/update.md )
51+ * [ visible] ( api/wrapper/visible.md )
5152 * [ WrapperArray] ( api/wrapper-array/README.md )
5253 * [ at] ( api/wrapper-array/at.md )
5354 * [ contains] ( api/wrapper-array/contains.md )
6364 * [ setProps] ( api/wrapper-array/setProps.md )
6465 * [ trigger] ( api/wrapper-array/trigger.md )
6566 * [ update] ( api/wrapper-array/update.md )
67+ * [ visible] ( api/wrapper-array/visible.md )
6668 * [ components] ( api/components/README.md )
6769 * [ TransitionStub] ( api/components/TransitionStub.md )
6870 * [ 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+ ```
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ declare interface BaseWrapper { // eslint-disable-line no-undef
1313 emitted ( event ? : string ) : { [ name : string ] : Array < Array < any >> } | Array < Array < any >> | void ,
1414 emittedByOrder ( ) : Array < { name : string ; args: Array < any > } > | void ,
1515 exists ( ) : boolean ,
16+ visible ( ) : boolean | void ,
1617 hasAttribute ( attribute : string , value : string ) : boolean | void ,
1718 hasClass ( className : string ) : boolean | void ,
1819 hasProp ( prop : string , value : string ) : boolean | void ,
Original file line number Diff line number Diff line change 1010 ],
1111 "scripts" : {
1212 "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" ,
1414 "coverage" : " cross-env NODE_ENV=coverage nyc --reporter=lcov --reporter=text npm run test:unit" ,
1515 "docs" : " cd docs && gitbook install && gitbook serve" ,
1616 "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 {
3636 return false
3737 }
3838
39+ visible ( ) : void {
40+ throwError ( `find did not return ${ this . selector } , cannot call visible() on empty Wrapper` )
41+ }
42+
3943 hasAttribute ( ) : void {
4044 throwError ( `find did not return ${ this . selector } , cannot call hasAttribute() on empty Wrapper` )
4145 }
Original file line number Diff line number Diff line change @@ -42,6 +42,12 @@ export default class WrapperArray implements BaseWrapper {
4242 return this . length > 0 && this . wrappers . every ( wrapper => wrapper . exists ( ) )
4343 }
4444
45+ visible ( ) : boolean {
46+ this . throwErrorIfWrappersIsEmpty ( 'visible' )
47+
48+ return this . length > 0 && this . wrappers . every ( wrapper => wrapper . visible ( ) )
49+ }
50+
4551 emitted ( ) : void {
4652 this . throwErrorIfWrappersIsEmpty ( 'emitted' )
4753
Original file line number Diff line number Diff line change @@ -120,6 +120,26 @@ export default class Wrapper implements BaseWrapper {
120120 return true
121121 }
122122
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+
123143 /**
124144 * Checks if wrapper has an attribute with matching value
125145 */
Original file line number Diff line number Diff line change 1+ <template >
2+ <div v-show =" rootReady" >
3+ <div v-show =" !ready" class =" not-ready" >not-ready</div >
4+
5+ <div v-show =" ready" class =" parent ready" >
6+ <div class =" child ready" >ready</div >
7+ </div >
8+ </div >
9+ </template >
10+
11+ <script >
12+ export default {
13+ name: ' component-with-show' ,
14+ data : () => ({
15+ ready: false ,
16+ rootReady: true
17+ })
18+ }
19+ </script >
You can’t perform that action at this time.
0 commit comments