← back to Games Agentabrams
tests/midplay.mjs
19 lines
import { createRequire } from 'module'; import { fileURLToPath } from 'url';
import path from 'path'; import http from 'http'; import fs from 'fs';
const require=createRequire(import.meta.url); let chromium; try{({chromium}=require('/Users/macstudio3/.npm-global/lib/node_modules/playwright'));}catch{({chromium}=require('playwright'));}
const root=path.dirname(path.dirname(fileURLToPath(import.meta.url)));
const MIME={'.html':'text/html','.json':'application/json','.png':'image/png'};
const server=http.createServer((req,res)=>{let p=decodeURIComponent(req.url.split('?')[0]);if(p.endsWith('/'))p+='index.html';const f=path.join(root,p);if(!f.startsWith(root)||!fs.existsSync(f)){res.writeHead(404);res.end('nf');return;}res.writeHead(200,{'Content-Type':MIME[path.extname(f)]||'text/plain'});fs.createReadStream(f).pipe(res);});
await new Promise(r=>server.listen(0,'127.0.0.1',r));
const base=`http://127.0.0.1:${server.address().port}`;
const browser=await chromium.launch();
const page=await browser.newPage({viewport:{width:480,height:720}});
await page.goto(base+'/games/flappy-sky/',{waitUntil:'networkidle'});
await page.waitForTimeout(400);
// start, then hover-flap gently to stay airborne, screenshot mid-play
for(let i=0;i<7;i++){ await page.mouse.click(240,300); await page.waitForTimeout(300); }
await page.screenshot({path:'tests/rec/flappy-sky-MIDPLAY.png'});
const s=await page.evaluate(()=>({score:document.getElementById('scoreVal').textContent,overlayHidden:document.getElementById('overlay').classList.contains('hidden'),resultShown:document.getElementById('result').classList.contains('show')}));
console.log('MIDPLAY', JSON.stringify(s));
await browser.close(); server.close();