@@ -33,6 +33,48 @@ test.describe('Doc Routing', () => {
3333 await expect ( page ) . toHaveURL ( / \/ d o c s \/ $ / ) ;
3434 } ) ;
3535
36+ test ( 'checks 500 refresh retries original document request' , async ( {
37+ page,
38+ browserName,
39+ } ) => {
40+ const [ docTitle ] = await createDoc ( page , 'doc-routing-500' , browserName , 1 ) ;
41+ await verifyDocName ( page , docTitle ) ;
42+
43+ const docId = page . url ( ) . split ( '/docs/' ) [ 1 ] ?. split ( '/' ) [ 0 ] ;
44+ // While true, every doc GET fails (including React Query retries) so we
45+ // reliably land on /500. Set to false before refresh so the doc loads again.
46+ let failDocumentGet = true ;
47+
48+ await page . route ( / \* * \/ d o c u m e n t s \/ \* * / , async ( route ) => {
49+ const request = route . request ( ) ;
50+ if (
51+ failDocumentGet &&
52+ request . method ( ) . includes ( 'GET' ) &&
53+ docId &&
54+ request . url ( ) . includes ( `/documents/${ docId } /` )
55+ ) {
56+ await route . fulfill ( {
57+ status : 500 ,
58+ json : { detail : 'Internal Server Error' } ,
59+ } ) ;
60+ } else {
61+ await route . continue ( ) ;
62+ }
63+ } ) ;
64+
65+ await page . reload ( ) ;
66+
67+ await expect ( page ) . toHaveURL ( / \/ 5 0 0 \/ ? \? f r o m = / , { timeout : 15000 } ) ;
68+
69+ const refreshButton = page . getByRole ( 'button' , { name : 'Refresh page' } ) ;
70+ await expect ( refreshButton ) . toBeVisible ( ) ;
71+
72+ failDocumentGet = false ;
73+ await refreshButton . click ( ) ;
74+
75+ await verifyDocName ( page , docTitle ) ;
76+ } ) ;
77+
3678 test ( 'checks 404 on docs/[id] page' , async ( { page } ) => {
3779 await page . waitForTimeout ( 300 ) ;
3880
0 commit comments