mirror of
https://github.com/TheNetsky/Microsoft-Rewards-Script.git
synced 2026-01-19 14:33:58 +00:00
47 lines
1.4 KiB
TypeScript
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)
|
|
}
|
|
}
|