Ctrl K
ComunidadGuías…

scripts/capture-security-updates-ui-screenshots.mjs

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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()