@@ -4,6 +4,7 @@ import { test } from "@/test/browser/fixtures";
44import { testLayout } from "@/test/browser/shared" ;
55import { getTabKey } from "@/test/browser/utils" ;
66import { mockedTrendingResponse } from "@/test/api/klipy/mocks/trendingResponse" ;
7+ import { klipyTrendingHandler } from "@/test/api/klipy" ;
78
89test ( "initial render" , async ( { page, baseUrl } ) => {
910 await page . goto ( baseUrl ) ;
@@ -19,6 +20,61 @@ test("initial render", async ({ page, baseUrl }) => {
1920 await expect ( gifs ) . toHaveCount ( gifLimit ) ;
2021} ) ;
2122
23+ test ( "scrolling to load more gifs" , async ( {
24+ page,
25+ baseUrl,
26+ requestInterceptor,
27+ } ) => {
28+ requestInterceptor . use (
29+ klipyTrendingHandler ( 200 , mockedTrendingResponse , { delay : 200 } ) ,
30+ ) ;
31+
32+ await page . goto ( baseUrl ) ;
33+
34+ const gifs = page . getByRole ( "button" , {
35+ name : / L o a d h i g h q u a l i t y p r e v i e w o f g i f w i t h d e s c r i p t i o n / ,
36+ } ) ;
37+ await expect ( gifs ) . toHaveCount ( gifLimit ) ;
38+
39+ await page . evaluate ( ( ) => {
40+ window . scrollTo ( 0 , document . body . scrollHeight ) ;
41+ } ) ;
42+
43+ await expect ( page . getByRole ( "progressbar" ) ) . toBeVisible ( ) ;
44+
45+ await expect ( gifs ) . toHaveCount ( gifLimit * 2 ) ;
46+ await expect ( page . getByRole ( "progressbar" ) ) . not . toBeVisible ( ) ;
47+ } ) ;
48+
49+ test ( "handle error on scroll" , async ( {
50+ page,
51+ baseUrl,
52+ requestInterceptor,
53+ } ) => {
54+ requestInterceptor . use ( klipyTrendingHandler ( 200 , mockedTrendingResponse ) ) ;
55+
56+ await page . goto ( baseUrl ) ;
57+
58+ const gifs = page . getByRole ( "button" , {
59+ name : / L o a d h i g h q u a l i t y p r e v i e w o f g i f w i t h d e s c r i p t i o n / ,
60+ } ) ;
61+ await expect ( gifs ) . toHaveCount ( gifLimit ) ;
62+
63+ requestInterceptor . use ( klipyTrendingHandler ( 500 , undefined , { delay : 200 } ) ) ;
64+
65+ await page . evaluate ( ( ) => {
66+ window . scrollTo ( 0 , document . body . scrollHeight ) ;
67+ } ) ;
68+
69+ await expect ( page . getByRole ( "progressbar" ) ) . toBeVisible ( ) ;
70+ await expect ( page . getByRole ( "progressbar" ) ) . not . toBeVisible ( ) ;
71+
72+ await expect ( page . getByText ( "Failed to load more!" ) ) . toBeVisible ( ) ;
73+ await expect (
74+ page . getByRole ( "button" , { name : "Try again" , exact : true } ) ,
75+ ) . toBeVisible ( ) ;
76+ } ) ;
77+
2278test ( "selecting a gif and copying the url" , async ( {
2379 page,
2480 baseUrl,
0 commit comments