@@ -401,47 +401,105 @@ Expected: "displayed"
401401Received: "not displayed"` )
402402 } )
403403
404- test ( 'success with ElementArray' , async ( ) => {
405- const elementsArray : WebdriverIO . ElementArray = await $$ ( 'sel' ) . getElements ( )
406- const result = await toBeDisplayed . call ( { } , elementsArray )
404+ describe ( 'fails with ElementArray' , ( ) => {
405+ let elementsArray : WebdriverIO . ElementArray
406+
407+ beforeEach ( async ( ) => {
408+ elementsArray = await $$ ( 'sel' ) . getElements ( )
409+ for ( const el of elementsArray ) {
410+ el . isDisplayed = vi . fn ( ) . mockResolvedValue ( true )
411+ }
412+ expect ( elementsArray ) . toHaveLength ( 2 )
413+ } )
407414
408- for ( const el of elementsArray ) {
409- expect ( el . isDisplayed ) . toHaveBeenCalledWith (
410- {
411- withinViewport : false ,
412- contentVisibilityAuto : true ,
413- opacityProperty : true ,
414- visibilityProperty : true
415+ test ( 'success with ElementArray' , async ( ) => {
416+ const result = await toBeDisplayed . call ( { } , elementsArray )
417+
418+ for ( const el of elementsArray ) {
419+ expect ( el . isDisplayed ) . toHaveBeenCalledWith (
420+ {
421+ withinViewport : false ,
422+ contentVisibilityAuto : true ,
423+ opacityProperty : true ,
424+ visibilityProperty : true
425+ }
426+ )
427+ }
428+
429+ expect ( result . pass ) . toBe ( true )
430+ } )
431+
432+ test ( 'fails with ElementArray' , async ( ) => {
433+ elementsArray [ 1 ] . isDisplayed = vi . fn ( ) . mockResolvedValue ( false )
434+
435+ const result = await toBeDisplayed . call ( { } , elementsArray )
436+
437+ for ( const el of elementsArray ) {
438+ expect ( el . isDisplayed ) . toHaveBeenCalledWith (
439+ {
440+ withinViewport : false ,
441+ contentVisibilityAuto : true ,
442+ opacityProperty : true ,
443+ visibilityProperty : true
444+ }
445+ )
446+ }
447+
448+ expect ( result . pass ) . toBe ( false )
449+ expect ( result . message ( ) ) . toEqual ( `\
450+ Expect $$(\`sel, <props>\`) to be displayed
451+
452+ Expected: "displayed"
453+ Received: "not displayed"` )
454+ } )
455+
456+ describe ( 'fails with Element[] (filtered elements)' , ( ) => {
457+ let filteredElements : WebdriverIO . Element [ ]
458+ test ( 'success with Element[]' , async ( ) => {
459+ filteredElements = await elementsArray . filter ( ( element ) => element . isExisting ( ) )
460+
461+ const result = await toBeDisplayed . call ( { } , filteredElements )
462+
463+ for ( const el of filteredElements ) {
464+ expect ( el . isDisplayed ) . toHaveBeenCalledWith (
465+ {
466+ withinViewport : false ,
467+ contentVisibilityAuto : true ,
468+ opacityProperty : true ,
469+ visibilityProperty : true
470+ }
471+ )
415472 }
416- )
417- }
418473
419- expect ( result . pass ) . toBe ( true )
420- } )
474+ expect ( result . pass ) . toBe ( true )
475+ } )
421476
422- test ( 'fails with ElementArray' , async ( ) => {
423- const elementsArray : WebdriverIO . ElementArray = await $$ ( 'sel' ) . getElements ( )
424- elementsArray [ 1 ] . isDisplayed = vi . fn ( ) . mockResolvedValue ( false )
477+ test ( 'fails with Element[]' , async ( ) => {
478+ filteredElements = await elementsArray . filter ( ( element ) => element . isExisting ( ) )
425479
426- const result = await toBeDisplayed . call ( { } , elementsArray )
480+ filteredElements [ 1 ] . isDisplayed = vi . fn ( ) . mockResolvedValue ( false )
427481
428- for ( const el of elementsArray ) {
429- expect ( el . isDisplayed ) . toHaveBeenCalledWith (
430- {
431- withinViewport : false ,
432- contentVisibilityAuto : true ,
433- opacityProperty : true ,
434- visibilityProperty : true
482+ const result = await toBeDisplayed . call ( { } , filteredElements )
483+
484+ for ( const el of filteredElements ) {
485+ expect ( el . isDisplayed ) . toHaveBeenCalledWith (
486+ {
487+ withinViewport : false ,
488+ contentVisibilityAuto : true ,
489+ opacityProperty : true ,
490+ visibilityProperty : true
491+ }
492+ )
435493 }
436- )
437- }
438494
439- expect ( result . pass ) . toBe ( false )
440- expect ( result . message ( ) ) . toEqual ( `\
441- Expect $$ (\`sel, <props>\`) to be displayed
495+ expect ( result . pass ) . toBe ( false )
496+ expect ( result . message ( ) ) . toEqual ( `\
497+ Expect $(\`sel\`), $$(\`sel\`)[1] to be displayed
442498
443499Expected: "displayed"
444500Received: "not displayed"` )
501+ } )
502+ } )
445503 } )
446504 } )
447505} )
0 commit comments