File tree Expand file tree Collapse file tree 2 files changed +56
-0
lines changed
special-pages/pages/new-tab/integration-tests Expand file tree Collapse file tree 2 files changed +56
-0
lines changed Original file line number Diff line number Diff line change @@ -189,6 +189,39 @@ export class NewtabPage {
189
189
await this . mocks . simulateSubscriptionMessage ( sub ( 'tabs_onDataUpdate' ) , tabs ( { tabId, tabIds } ) ) ;
190
190
} ) ;
191
191
}
192
+
193
+ /**
194
+ * @return {Promise<{y: number}> }
195
+ */
196
+ async didScrollToEnd ( ) {
197
+ const { page } = this ;
198
+ return await test . step ( `manually setting scroll position to end of element` , async ( ) => {
199
+ const y = await page . evaluate ( ( ) => {
200
+ const scroller = document . querySelector ( '[data-main-scroller]' ) ;
201
+ if ( ! scroller ) throw new Error ( 'missing element' ) ;
202
+ scroller . scrollTop = scroller . scrollHeight - scroller . clientHeight ;
203
+ return scroller . scrollTop ;
204
+ } ) ;
205
+ expect ( y ) . toBeGreaterThan ( 0 ) ;
206
+ return { y } ;
207
+ } ) ;
208
+ }
209
+
210
+ /**
211
+ * @param {object } props
212
+ * @param {number } props.y
213
+ * @returns {Promise<void> }
214
+ */
215
+ async scrollIs ( { y } ) {
216
+ const { page } = this ;
217
+ await test . step ( `fetching the scroll position and comparing to ${ y } ` , async ( ) => {
218
+ await page . waitForFunction (
219
+ ( { y } ) => ( document . querySelector ( '[data-main-scroller]' ) ?. scrollTop ?? 0 ) === y ,
220
+ { y } ,
221
+ { timeout : 1000 } ,
222
+ ) ;
223
+ } ) ;
224
+ }
192
225
}
193
226
194
227
/**
Original file line number Diff line number Diff line change @@ -149,4 +149,27 @@ test.describe('newtab widgets', () => {
149
149
await ntp . hasBackgroundColor ( { hex : '#000000' } ) ;
150
150
} ) ;
151
151
} ) ;
152
+
153
+ test . describe ( 'scroll restoration' , ( ) => {
154
+ test . use ( { viewport : { height : 400 , width : 800 } } ) ;
155
+ test ( 'restores to previous position' , async ( { page } , workerInfo ) => {
156
+ const ntp = NewtabPage . create ( page , workerInfo ) ;
157
+ await ntp . reducedMotion ( ) ;
158
+ await ntp . openPage ( { additional : { tabs : true , 'tabs.debug' : true } } ) ;
159
+
160
+ // initial
161
+ await ntp . scrollIs ( { y : 0 } ) ;
162
+
163
+ // scroll to end
164
+ const tab1 = await ntp . didScrollToEnd ( ) ;
165
+
166
+ // new tab = should be back to 0 for scroll
167
+ await ntp . didSwitchToTab ( '02' , [ '01' , '02' ] ) ;
168
+ await ntp . scrollIs ( { y : 0 } ) ;
169
+
170
+ // now back to original
171
+ await ntp . didSwitchToTab ( '01' , [ '01' , '02' ] ) ;
172
+ await ntp . scrollIs ( { y : tab1 . y } ) ;
173
+ } ) ;
174
+ } ) ;
152
175
} ) ;
You can’t perform that action at this time.
0 commit comments