64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
import puppeteer from 'puppeteer'
|
|
|
|
const url =
|
|
'http://127.0.0.1:8081/projects/33287ec86e/models/00d42a6615@6382330e3b'
|
|
|
|
const browser = await puppeteer.launch({
|
|
headless: 'new',
|
|
args: ['--no-sandbox', '--disable-setuid-sandbox']
|
|
})
|
|
const page = await browser.newPage()
|
|
await page.setViewport({ width: 1440, height: 900, deviceScaleFactor: 1 })
|
|
|
|
const events = []
|
|
page.on('console', (msg) => {
|
|
if (['error', 'warning'].includes(msg.type())) {
|
|
events.push({ type: `console:${msg.type()}`, text: msg.text() })
|
|
}
|
|
})
|
|
page.on('pageerror', (error) => {
|
|
events.push({ type: 'pageerror', text: error.stack || error.message })
|
|
})
|
|
page.on('requestfailed', (request) => {
|
|
events.push({
|
|
type: 'requestfailed',
|
|
url: request.url(),
|
|
failure: request.failure()?.errorText
|
|
})
|
|
})
|
|
page.on('response', (response) => {
|
|
if (response.status() >= 400) {
|
|
events.push({
|
|
type: 'http',
|
|
status: response.status(),
|
|
url: response.url()
|
|
})
|
|
}
|
|
})
|
|
|
|
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 })
|
|
await new Promise((resolve) => setTimeout(resolve, 45000))
|
|
|
|
const result = await page.evaluate(() => {
|
|
const resources = performance
|
|
.getEntriesByType('resource')
|
|
.map((entry) => entry.name)
|
|
.filter((name) => name.includes('/api/viewer-derivatives/'))
|
|
const canvases = [...document.querySelectorAll('canvas')].map((canvas) => ({
|
|
width: canvas.width,
|
|
height: canvas.height,
|
|
clientWidth: canvas.clientWidth,
|
|
clientHeight: canvas.clientHeight
|
|
}))
|
|
return {
|
|
title: document.title,
|
|
resources,
|
|
canvases,
|
|
bodyText: document.body.innerText.slice(0, 1000)
|
|
}
|
|
})
|
|
|
|
await page.screenshot({ path: 'scratch/current-viewer-fixed.png', fullPage: false })
|
|
console.log(JSON.stringify({ url, events, result }, null, 2))
|
|
await browser.close()
|