@@ -33,20 +33,23 @@ export async function GET(req: Request) {
33
33
) ;
34
34
}
35
35
36
- logger . info ( `Starting screenshot for URL: ${ url } ` ) ;
36
+ logger . info ( `[SCREENSHOT] Starting screenshot for URL: ${ url } ` ) ;
37
37
38
38
try {
39
39
// Get browser instance
40
+ logger . info ( `[SCREENSHOT] Attempting to get browser instance` ) ;
40
41
const browser = await getBrowser ( ) ;
41
- logger . info ( ' Browser instance acquired' ) ;
42
+ logger . info ( `[SCREENSHOT] Browser instance acquired successfully` ) ;
42
43
43
44
// Create a new page
45
+ logger . info ( `[SCREENSHOT] Creating new page` ) ;
44
46
page = await browser . newPage ( ) ;
45
- logger . info ( ' New page created' ) ;
47
+ logger . info ( `[SCREENSHOT] New page created successfully` ) ;
46
48
47
49
// Set viewport
50
+ logger . info ( `[SCREENSHOT] Setting viewport` ) ;
48
51
await page . setViewport ( { width : 1600 , height : 900 } ) ;
49
- logger . info ( ' Viewport set to 1600x900' ) ;
52
+ logger . info ( `[SCREENSHOT] Viewport set successfully` ) ;
50
53
51
54
// Navigate to URL with increased timeout and more reliable wait condition
52
55
await page . goto ( url , {
@@ -73,31 +76,40 @@ export async function GET(req: Request) {
73
76
}
74
77
75
78
// Take screenshot
79
+ logger . info ( `[SCREENSHOT] Taking screenshot` ) ;
76
80
const screenshot = await page . screenshot ( {
77
81
type : 'png' ,
78
82
fullPage : true ,
79
83
} ) ;
80
- logger . info ( ' Screenshot captured' ) ;
84
+ logger . info ( `[SCREENSHOT] Screenshot captured successfully, size: ${ screenshot . length } bytes` ) ;
81
85
82
86
// Clean up
83
- if ( page ) await page . close ( ) ;
84
- logger . info ( 'Page closed' ) ;
87
+ if ( page ) {
88
+ logger . info ( `[SCREENSHOT] Closing page` ) ;
89
+ await page . close ( ) ;
90
+ logger . info ( `[SCREENSHOT] Page closed successfully` ) ;
91
+ }
85
92
93
+ logger . info ( `[SCREENSHOT] Returning screenshot response` ) ;
86
94
return new Response ( screenshot , {
87
95
headers : {
88
96
'Content-Type' : 'image/png' ,
89
- 'Cache-Control' : 's-maxage=3600' ,
97
+ 'Cache-Control' : 'no-cache, no-store, must-revalidate' ,
98
+ 'Pragma' : 'no-cache' ,
99
+ 'Expires' : '0'
90
100
} ,
91
101
} ) ;
92
102
} catch ( error : any ) {
93
- logger . error ( 'Screenshot error:' , error ) ;
103
+ logger . error ( `[SCREENSHOT] Error capturing screenshot: ${ error . message } ` , error ) ;
104
+ logger . error ( `[SCREENSHOT] Error stack: ${ error . stack } ` ) ;
94
105
95
106
if ( page ) {
96
107
try {
108
+ logger . info ( `[SCREENSHOT] Attempting to close page after error` ) ;
97
109
await page . close ( ) ;
98
- logger . info ( 'Closed page after error' ) ;
110
+ logger . info ( `[SCREENSHOT] Successfully closed page after error` ) ;
99
111
} catch ( closeError ) {
100
- logger . error ( ' Error closing page:' , closeError ) ;
112
+ logger . error ( `[SCREENSHOT] Error closing page: ${ closeError . message } ` ) ;
101
113
}
102
114
}
103
115
@@ -108,12 +120,13 @@ export async function GET(req: Request) {
108
120
) {
109
121
try {
110
122
if ( browserInstance ) {
123
+ logger . warn ( `[SCREENSHOT] Resetting browser instance due to protocol error` ) ;
111
124
await browserInstance . close ( ) ;
112
- logger . warn ( 'Browser instance was closed due to protocol error' ) ;
113
125
browserInstance = null ;
126
+ logger . warn ( `[SCREENSHOT] Browser instance reset successfully` ) ;
114
127
}
115
128
} catch ( closeBrowserError ) {
116
- logger . error ( ' Error closing browser:' , closeBrowserError ) ;
129
+ logger . error ( `[SCREENSHOT] Error closing browser: ${ closeBrowserError . message } ` ) ;
117
130
}
118
131
}
119
132
0 commit comments