CoolFace
Apppublic

mihir2007/Cyber-Risk

sourceHugging Faceupdated 16d agoView on Hugging Face
0likes
test_scenes.mjs111 linesDownload Raw Back to root
1// Script to test all 5 continuous storytelling scenes via Chrome DevTools Protocol2import { spawn } from 'child_process'3import fs from 'fs'4 5const chromePath = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'6const port = 92227 8// 1. Launch Chrome with remote debugging9const chromeProc = spawn(chromePath, [10  `--remote-debugging-port=${port}`,11  '--headless=new',12  '--enable-webgl',13  '--ignore-gpu-blocklist',14  '--use-gl=angle',15  '--window-size=1920,1080',16  '--no-first-run',17  '--no-default-browser-check',18  'about:blank'19])20 21// Wait for Chrome to listen22await new Promise(r => setTimeout(r, 1500))23 24try {25  // Query targets26  const versionRes = await fetch(`http://127.0.0.1:${port}/json/version`)27  const versionData = await versionRes.json()28  const webSocketDebuggerUrl = versionData.webSocketDebuggerUrl29 30  const listRes = await fetch(`http://127.0.0.1:${port}/json/list`)31  const pages = await listRes.json()32  const targetPage = pages[0]33  const wsUrl = targetPage.webSocketDebuggerUrl34 35  console.log('Connected to Chrome DevTools WebSocket:', wsUrl)36 37  const ws = new WebSocket(wsUrl)38 39  let id = 140  const pending = new Map()41 42  ws.onmessage = (event) => {43    const msg = JSON.parse(event.data)44    if (msg.id && pending.has(msg.id)) {45      pending.get(msg.id)(msg)46      pending.delete(msg.id)47    }48  }49 50  await new Promise(r => ws.onopen = r)51 52  const send = (method, params = {}) => {53    const msgId = id++54    return new Promise((resolve) => {55      pending.set(msgId, resolve)56      ws.send(JSON.stringify({ id: msgId, method, params }))57    })58  }59 60  // Enable Page & Runtime61  await send('Page.enable')62  await send('Runtime.enable')63 64  // Navigate to http://localhost:5173/65  console.log('Navigating to http://localhost:5173/ ...')66  await send('Page.navigate', { url: 'http://localhost:5173/' })67 68  // Wait 4 seconds for full React Query + Three.js load69  await new Promise(r => setTimeout(r, 4000))70 71  // Helper to capture screenshot72  const capture = async (filename) => {73    const res = await send('Page.captureScreenshot', { format: 'png' })74    fs.writeFileSync(filename, Buffer.from(res.result.data, 'base64'))75    console.log(`Saved screenshot: ${filename}`)76  }77 78  // Capture Scene 0 (Exposure)79  console.log('Capturing Scene 0: Exposure...')80  await capture('c:\\cyber_risk\\scene_0_exposure.png')81 82  // Jump to Scene 1 (Impact)83  console.log('Scrolling to Scene 1: Impact...')84  await send('Runtime.evaluate', { expression: `window.scrollTo({ top: (1 / 4.15) * (document.querySelector('.command-scrolly-track').scrollHeight - window.innerHeight), behavior: 'instant' })` })85  await new Promise(r => setTimeout(r, 1200))86  await capture('c:\\cyber_risk\\scene_1_impact.png')87 88  // Jump to Scene 2 (Concentration)89  console.log('Scrolling to Scene 2: Concentration...')90  await send('Runtime.evaluate', { expression: `window.scrollTo({ top: (2 / 4.15) * (document.querySelector('.command-scrolly-track').scrollHeight - window.innerHeight), behavior: 'instant' })` })91  await new Promise(r => setTimeout(r, 1200))92  await capture('c:\\cyber_risk\\scene_2_concentration.png')93 94  // Jump to Scene 3 (Investment)95  console.log('Scrolling to Scene 3: Investment...')96  await send('Runtime.evaluate', { expression: `window.scrollTo({ top: (3 / 4.15) * (document.querySelector('.command-scrolly-track').scrollHeight - window.innerHeight), behavior: 'instant' })` })97  await new Promise(r => setTimeout(r, 1200))98  await capture('c:\\cyber_risk\\scene_3_investment.png')99 100  // Jump to Scene 4 (Decision)101  console.log('Scrolling to Scene 4: Decision...')102  await send('Runtime.evaluate', { expression: `window.scrollTo({ top: (4 / 4.15) * (document.querySelector('.command-scrolly-track').scrollHeight - window.innerHeight), behavior: 'instant' })` })103  await new Promise(r => setTimeout(r, 1200))104  await capture('c:\\cyber_risk\\scene_4_decision.png')105 106  ws.close()107} finally {108  chromeProc.kill()109  console.log('Done testing scenes!')110}111