Files
Microsoft-Rewards-Script/src/util/ErrorDiagnostic.ts
TheNetsky 2c4d85f732 v3 init
Based of v3.0.0b10.
2025-12-11 16:16:32 +01:00

47 lines
1.4 KiB
TypeScript

import fs from 'fs/promises'
import path from 'path'
import type { Page } from 'patchright'
export async function errorDiagnostic(page: Page, error: Error): Promise<void> {
try {
const timestamp = new Date().toISOString().replace(/[:.]/g, '-')
const folderName = `error-${timestamp}`
const outputDir = path.join(process.cwd(), 'diagnostics', folderName)
if (!page) {
return
}
if (page.isClosed()) {
return
}
// Error log content
const errorLog = `
Name: ${error.name}
Message: ${error.message}
Timestamp: ${new Date().toISOString()}
---------------------------------------------------
Stack Trace:
${error.stack || 'No stack trace available'}
`.trim()
const [htmlContent, screenshotBuffer] = await Promise.all([
page.content(),
page.screenshot({ fullPage: true, type: 'png' })
])
await fs.mkdir(outputDir, { recursive: true })
await Promise.all([
fs.writeFile(path.join(outputDir, 'dump.html'), htmlContent),
fs.writeFile(path.join(outputDir, 'screenshot.png'), screenshotBuffer),
fs.writeFile(path.join(outputDir, 'error.txt'), errorLog)
])
console.log(`Diagnostics saved to: ${outputDir}`)
} catch (error) {
console.error('Unable to create error diagnostics:', error)
}
}