@@ -188,6 +188,93 @@ test("it prefetches links with a delay", async ({ page }) => {
188
188
assertRequestMade ( requestMade )
189
189
} )
190
190
191
+ test ( "it allows to customize the delay with a data-turbo-prefetch-delay attribute" , async ( { page } ) => {
192
+ await goTo ( { page, path : "/hover_to_prefetch.html" } )
193
+
194
+ let requestMade = false
195
+ page . on ( "request" , async ( request ) => ( requestMade = true ) )
196
+
197
+ await page . hover ( "#anchor_with_custom_delay" )
198
+ await sleep ( 200 )
199
+
200
+ assertRequestNotMade ( requestMade )
201
+
202
+ await sleep ( 150 )
203
+
204
+ assertRequestMade ( requestMade )
205
+ } )
206
+
207
+ test ( "it allows to customize the delay with a turbo-prefetch-delay a meta tag" , async ( { page } ) => {
208
+ await goTo ( { page, path : "/hover_to_prefetch_with_delay_on_meta_tag.html" } )
209
+
210
+ let requestMade = false
211
+ page . on ( "request" , async ( request ) => ( requestMade = true ) )
212
+
213
+ await page . hover ( "#anchor_for_prefetch" )
214
+
215
+ await sleep ( 200 )
216
+
217
+ assertRequestNotMade ( requestMade )
218
+
219
+ await sleep ( 150 )
220
+
221
+ assertRequestMade ( requestMade )
222
+ } )
223
+
224
+ test ( "it prefetches immediately with a data-turbo-prefetch-delay attribute set to 0" , async ( { page } ) => {
225
+ await goTo ( { page, path : "/hover_to_prefetch.html" } )
226
+
227
+ let requestMade = false
228
+ page . on ( "request" , async ( request ) => ( requestMade = true ) )
229
+
230
+ await page . hover ( "#anchor_with_zero_delay" )
231
+
232
+ assertRequestMade ( requestMade )
233
+ } )
234
+
235
+ test ( "it prefetches immediately with a turbo-prefetch-delay meta tag set to 0" , async ( { page } ) => {
236
+ await goTo ( { page, path : "/hover_to_prefetch_with_zero_delay_on_meta_tag.html" } )
237
+
238
+ let requestMade = false
239
+ page . on ( "request" , async ( request ) => ( requestMade = true ) )
240
+
241
+ await page . hover ( "#anchor_for_prefetch" )
242
+
243
+ assertRequestMade ( requestMade )
244
+ } )
245
+
246
+ test ( "it uses the default delay with a data-turbo-prefetch-delay attribute set to an invalid value" , async ( { page } ) => {
247
+ await goTo ( { page, path : "/hover_to_prefetch.html" } )
248
+
249
+ let requestMade = false
250
+ page . on ( "request" , async ( request ) => ( requestMade = true ) )
251
+
252
+ await page . hover ( "#anchor_with_invalid_delay" )
253
+ await sleep ( 75 )
254
+
255
+ assertRequestNotMade ( requestMade )
256
+
257
+ await sleep ( 100 )
258
+
259
+ assertRequestMade ( requestMade )
260
+ } )
261
+
262
+ test ( "it uses the default delay with a turbo-prefetch-delay meta tag set to an invalid value" , async ( { page } ) => {
263
+ await goTo ( { page, path : "/hover_to_prefetch_with_invalid_delay_on_meta_tag.html" } )
264
+
265
+ let requestMade = false
266
+ page . on ( "request" , async ( request ) => ( requestMade = true ) )
267
+
268
+ await page . hover ( "#anchor_for_prefetch" )
269
+ await sleep ( 75 )
270
+
271
+ assertRequestNotMade ( requestMade )
272
+
273
+ await sleep ( 100 )
274
+
275
+ assertRequestMade ( requestMade )
276
+ } )
277
+
191
278
test ( "it cancels the prefetch request if the link is no longer hovered" , async ( { page } ) => {
192
279
await goTo ( { page, path : "/hover_to_prefetch.html" } )
193
280
0 commit comments