diff --git a/src/bot/orchestrator.ts b/src/bot/orchestrator.ts index 1dd5c02..a45ee1b 100644 --- a/src/bot/orchestrator.ts +++ b/src/bot/orchestrator.ts @@ -439,6 +439,7 @@ export class BotOrchestrator { /** * Take a screenshot for debugging. + * Logs screenshot as base64 for easy viewing from Azure logs. */ private async _takeScreenshot(name: string): Promise { if (!config.screenshotOnError || !this._page) { @@ -446,6 +447,7 @@ export class BotOrchestrator { } try { + // Save to file const screenshotDir = config.screenshotDir; if (!fs.existsSync(screenshotDir)) { fs.mkdirSync(screenshotDir, { recursive: true }); @@ -453,8 +455,19 @@ export class BotOrchestrator { const filename = `${this._sessionId}-${name}-${Date.now()}.png`; const filepath = path.join(screenshotDir, filename); - await this._page.screenshot({ path: filepath, fullPage: true }); + const buffer = await this._page.screenshot({ fullPage: true }); + fs.writeFileSync(filepath, buffer); this._logger.info(`Screenshot saved: ${filepath}`); + + // Also log as base64 for Azure logs (truncated for readability) + const base64 = buffer.toString('base64'); + this._logger.info(`SCREENSHOT_BASE64_START:${name}`); + // Log in chunks to avoid log line limits + const chunkSize = 50000; + for (let i = 0; i < base64.length; i += chunkSize) { + this._logger.info(`SCREENSHOT_CHUNK:${base64.substring(i, i + chunkSize)}`); + } + this._logger.info(`SCREENSHOT_BASE64_END:${name}`); } catch (error) { this._logger.error('Error taking screenshot:', error); }