scripts/capture-security-updates-ui-screenshots.mjs
Rama main · réplica de lectura del repositorio original.
import { chromium } from '@playwright/test'
import { mkdir } from 'node:fs/promises'
const baseUrl = process.env.CAPGO_URL || 'http://localhost:5173'
const outputDir = process.env.OUTPUT_DIR || 'docs/screenshots/security-updates-ui'
const phase = process.env.PHASE || 'after'
await mkdir(outputDir, { recursive: true })
const browser = await chromium.launch({ headless: true })
const context = await browser.newContext()
await context.addInitScript(() => {
window.turnstile = {
render(_element, options) {
queueMicrotask(() => options.callback?.('screenshot-turnstile-token'))
return 'screenshot-turnstile-widget'
},
reset() {},
remove() {},
}
})
const viewports = {
desktop: { width: 1280, height: 900 },
mobile: { width: 390, height: 844 },
}
async function login(page) {
await page.goto(`${baseUrl}/login/`, { waitUntil: 'domcontentloaded' })
await page.fill('[data-test="email"]', 'test@capgo.app')
await page.fill('[data-test="password"]', 'testtest')
const submit = page.locator('[data-test="submit"]')
await submit.waitFor({ state: 'visible', timeout: 10_000 })
if (await submit.isEnabled())
await submit.click()
else
await page.locator('form').first().evaluate(form => form.requestSubmit())
await page.waitForURL(/\/(apps|dashboard|onboarding)/, { timeout: 120_000 })
}
async function capture(name, path, viewport) {
const page = await context.newPage()
await page.setViewportSize(viewport)
await login(page)
await page.goto(`${baseUrl}${path}`, { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(800)
await page.screenshot({ path: `${outputDir}/${phase}-${name}.png`, type: 'png', fullPage: true })
await page.close()
}
for (const [size, viewport] of Object.entries(viewports)) {
await capture(`${size}-account-notifications`, '/settings/account/notifications', viewport)
if (phase === 'before') {
await capture(`${size}-app-observe-before`, '/app/com.demo.app/observe/errors', viewport)
}
else {
await capture(`${size}-app-security-updates`, '/app/com.demo.app/observe/security', viewport)
}
}
await browser.close()