@@ -3,8 +3,18 @@ import { $ } from '@wdio/globals'
33
44import { getExpectMessage , getReceived } from '../../__fixtures__/utils.js'
55import { toBeDisplayed } from '../../../src/matchers/element/toBeDisplayed.js'
6+ import { executeCommandBe } from '../../../src/utils.js'
7+ import { DEFAULT_OPTIONS } from '../../../src/constants.js'
68
79vi . mock ( '@wdio/globals' )
10+ vi . mock ( '../../../src/utils.js' , async ( importOriginal ) => {
11+ // eslint-disable-next-line @typescript-eslint/consistent-type-imports
12+ const actual = await importOriginal < typeof import ( '../../../src/utils.js' ) > ( )
13+ return {
14+ ...actual ,
15+ executeCommandBe : vi . fn ( actual . executeCommandBe )
16+ }
17+ } )
818
919describe ( 'toBeDisplayed' , ( ) => {
1020 /**
@@ -24,7 +34,21 @@ describe('toBeDisplayed', () => {
2434
2535 const beforeAssertion = vi . fn ( )
2636 const afterAssertion = vi . fn ( )
27- const result = await toBeDisplayed . call ( { } , el , { } , { beforeAssertion, afterAssertion } )
37+
38+ const result = await toBeDisplayed . call ( { } , el , { beforeAssertion, afterAssertion } )
39+
40+ expect ( el . isDisplayed ) . toHaveBeenCalledWith (
41+ {
42+ withinViewport : false ,
43+ contentVisibilityAuto : true ,
44+ opacityProperty : true ,
45+ visibilityProperty : true
46+ }
47+ )
48+ expect ( executeCommandBe ) . toHaveBeenCalledWith ( el , expect . anything ( ) , expect . objectContaining ( {
49+ wait : DEFAULT_OPTIONS . wait ,
50+ interval : DEFAULT_OPTIONS . interval
51+ } ) )
2852 expect ( result . pass ) . toBe ( true )
2953 expect ( el . _attempts ) . toBe ( 0 )
3054 expect ( beforeAssertion ) . toBeCalledWith ( {
@@ -38,6 +62,28 @@ describe('toBeDisplayed', () => {
3862 } )
3963 } )
4064
65+ test ( 'success with ToBeDisplayed and command options' , async ( ) => {
66+ const el : any = await $ ( 'sel' )
67+ el . _value = function ( ) : boolean {
68+ return true
69+ }
70+ const result = await toBeDisplayed . call ( { } , el , { wait : 1 , withinViewport : true } )
71+
72+ expect ( el . isDisplayed ) . toHaveBeenCalledWith (
73+ {
74+ withinViewport : true ,
75+ contentVisibilityAuto : true ,
76+ opacityProperty : true ,
77+ visibilityProperty : true
78+ }
79+ )
80+ expect ( executeCommandBe ) . toHaveBeenCalledWith ( el , expect . anything ( ) , expect . objectContaining ( {
81+ wait : 1 ,
82+ interval : DEFAULT_OPTIONS . interval
83+ } ) )
84+ expect ( result . pass ) . toBe ( true )
85+ } )
86+
4187 test ( 'wait but failure' , async ( ) => {
4288 const el : any = await $ ( 'sel' )
4389 el . _value = function ( ) : boolean {
@@ -69,7 +115,8 @@ describe('toBeDisplayed', () => {
69115 return false
70116 }
71117
72- const result = await toBeDisplayed . call ( { } , el , { } , { wait : 0 } )
118+ const result = await toBeDisplayed . call ( { } , el , { wait : 0 } )
119+
73120 expect ( result . pass ) . toBe ( false )
74121 expect ( el . _attempts ) . toBe ( 1 )
75122 } )
@@ -82,7 +129,21 @@ describe('toBeDisplayed', () => {
82129 return true
83130 }
84131
85- const result = await toBeDisplayed . call ( { } , el , { } , { wait : 0 } )
132+ const result = await toBeDisplayed . call ( { } , el , { wait : 0 } )
133+
134+ expect ( el . isDisplayed ) . toHaveBeenCalledWith (
135+ {
136+ withinViewport : false ,
137+ contentVisibilityAuto : true ,
138+ opacityProperty : true ,
139+ visibilityProperty : true
140+ }
141+ )
142+ expect ( executeCommandBe ) . toHaveBeenCalledWith ( el , expect . anything ( ) , expect . objectContaining ( {
143+ wait : 0 ,
144+ interval : DEFAULT_OPTIONS . interval
145+ } ) )
146+
86147 expect ( result . pass ) . toBe ( true )
87148 expect ( el . _attempts ) . toBe ( 1 )
88149 } )
@@ -92,7 +153,7 @@ describe('toBeDisplayed', () => {
92153 el . _value = function ( ) : boolean {
93154 return true
94155 }
95- const result = await toBeDisplayed . call ( { isNot : true } , el , { } , { wait : 0 } )
156+ const result = await toBeDisplayed . call ( { isNot : true } , el , { wait : 0 } )
96157 const received = getReceived ( result . message ( ) )
97158
98159 expect ( received ) . not . toContain ( 'not' )
@@ -104,7 +165,7 @@ describe('toBeDisplayed', () => {
104165 el . _value = function ( ) : boolean {
105166 return false
106167 }
107- const result = await toBeDisplayed . call ( { isNot : true } , el , { } , { wait : 0 } )
168+ const result = await toBeDisplayed . call ( { isNot : true } , el , { wait : 0 } )
108169 const received = getReceived ( result . message ( ) )
109170
110171 expect ( received ) . toContain ( 'not' )
@@ -116,7 +177,7 @@ describe('toBeDisplayed', () => {
116177 el . _value = function ( ) : boolean {
117178 return true
118179 }
119- const result = await toBeDisplayed . call ( { isNot : true } , el , { } , { wait : 1 } )
180+ const result = await toBeDisplayed . call ( { isNot : true } , el , { wait : 1 } )
120181 const received = getReceived ( result . message ( ) )
121182
122183 expect ( received ) . not . toContain ( 'not' )
@@ -128,9 +189,21 @@ describe('toBeDisplayed', () => {
128189 el . _value = function ( ) : boolean {
129190 return false
130191 }
131- const result = await toBeDisplayed . call ( { isNot : true } , el , { } , { wait : 1 } )
192+ const result = await toBeDisplayed . call ( { isNot : true } , el , { wait : 1 } )
132193 const received = getReceived ( result . message ( ) )
133194
195+ expect ( el . isDisplayed ) . toHaveBeenCalledWith (
196+ {
197+ withinViewport : false ,
198+ contentVisibilityAuto : true ,
199+ opacityProperty : true ,
200+ visibilityProperty : true
201+ }
202+ )
203+ expect ( executeCommandBe ) . toHaveBeenCalledWith ( el , expect . anything ( ) , expect . objectContaining ( {
204+ wait : 1 ,
205+ interval : DEFAULT_OPTIONS . interval
206+ } ) )
134207 expect ( received ) . toContain ( 'not' )
135208 expect ( result . pass ) . toBe ( false )
136209 } )
0 commit comments