@@ -8,11 +8,17 @@ import createWrapper from '../../../lib/components/test-utils/selectors';
8
8
const wrapper = createWrapper ( ) ;
9
9
const annotationWrapper = wrapper . findAnnotation ( ) ;
10
10
11
+ function setupTest ( testFn : ( page : BasePageObject ) => Promise < void > ) {
12
+ return useBrowser ( async browser => {
13
+ const page = new BasePageObject ( browser ) ;
14
+ await browser . url ( '#/light/annotation-context/annotation-scroll' ) ;
15
+ await testFn ( page ) ;
16
+ } ) ;
17
+ }
18
+
11
19
test (
12
20
'scrolls annotation in view with fixed elements' ,
13
- useBrowser ( async browser => {
14
- await browser . url ( '#/light/annotation-context/annotation-scroll' ) ;
15
- const page = new BasePageObject ( browser ) ;
21
+ setupTest ( async page => {
16
22
const nextButtonSelector = annotationWrapper . findNextButton ( ) . toSelector ( ) ;
17
23
await page . waitForVisible ( nextButtonSelector ) ;
18
24
await page . click ( nextButtonSelector ) ;
37
43
} )
38
44
) ;
39
45
46
+ test (
47
+ 'does not update popover position when annotation is rendered offscreen' ,
48
+ setupTest ( async page => {
49
+ await expect ( page . isDisplayedInViewport ( annotationWrapper . toSelector ( ) ) ) . resolves . toEqual ( true ) ;
50
+ // scroll to the page bottom to make annotation offscreen
51
+ await page . windowScrollTo ( { top : 1200 } ) ;
52
+ await expect ( page . isDisplayedInViewport ( annotationWrapper . toSelector ( ) ) ) . resolves . toEqual ( false ) ;
53
+ const positionBefore = await page . getBoundingBox ( annotationWrapper . toSelector ( ) ) ;
54
+ // click somewhere to trigger the regression
55
+ await page . click ( 'main' ) ;
56
+ const positionAfter = await page . getBoundingBox ( annotationWrapper . toSelector ( ) ) ;
57
+ expect ( positionBefore ) . toEqual ( positionAfter ) ;
58
+ } )
59
+ ) ;
60
+
40
61
function overlap ( one : ElementRect , two : ElementRect ) {
41
62
if ( one . right < two . left || one . left > two . right ) {
42
63
return false ;
0 commit comments