GENERATED VIEW · PRIVATE ARCHIVE · DO NOT SERVE
RobCo Industries · Archive Museum

audit-u9-zoom.mjs



RELEASE

planning/2.8.5/mockups/FO3/audit-u9-zoom.mjs

sha256 2bdc70797320a9ad · 2213 bytes · original held in the private archive

import { chromium } from 'playwright'; import { fileURLToPath } from 'url'; import path from 'path'; const ROOT = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..', '..'); const INDEX = 'file://' + path.join(ROOT, 'index.html').split(path.sep).join('/'); const OUT = path.join(ROOT, 'planning', 'mockups', 'fo3'); const save = { activeContext: 'FO3', campaigns: { FO3: { lvl:12, hpCur:18, hpMax:100, rads:850, caps:350, la:'CRIPPLED', ra:'OK', ll:'OK', rl:'OK', hd:'OK', s_s:6,s_p:7,s_e:5,s_c:4,s_i:8,s_a:6,s_l:5, inventory: Array.from({length:24},(_,i)=>({name:'Test Item '+i,qty:15,wgt:1,val:10,type:i%2?'weapon':'aid'})), collectibles:[], perks:[], status:[{name:'Well Rested',ticks:4,type:'BUFF'}] } } }; const b = await chromium.launch(); const ctx = await b.newContext({ viewport:{width:780,height:360}, hasTouch:true, isMobile:true }); await ctx.addInitScript(s=>localStorage.setItem('robco_v8',JSON.stringify(s)), save); const page = await ctx.newPage(); await page.goto(INDEX); await page.waitForTimeout(2200); await page.evaluate(()=>window.selectSubsystem&&window.selectSubsystem('operator')); await page.waitForTimeout(200); await page.evaluate(()=>{const x=[...document.querySelectorAll('#fo3SubtabRail button')].find(z=>z.textContent.trim()==='STATUS'); if(x)x.click();}); await page.waitForTimeout(300); // 3x zoom crops await page.screenshot({ path: path.join(OUT,'audit-u9-zoom-topstrip.png'), clip:{x:80,y:30,width:620,height:30} }); await page.screenshot({ path: path.join(OUT,'audit-u9-zoom-radexp.png'), clip:{x:90,y:230,width:260,height:30} }); await page.screenshot({ path: path.join(OUT,'audit-u9-zoom-larm.png'), clip:{x:390,y:75,width:200,height:60} }); // what is the 'Inserved' fragment? dump text nodes near L.ARM const near = await page.evaluate(()=>{ const out=[]; document.querySelectorAll('#opHarnessPanel *').forEach(el=>{ const t=[...el.childNodes].filter(n=>n.nodeType===3).map(n=>n.textContent.trim()).filter(Boolean).join('|'); if(t) out.push({tag:el.tagName,cls:el.className.toString().slice(0,30),id:el.id,text:t.slice(0,40),color:getComputedStyle(el).color}); }); return out; }); console.log(JSON.stringify(near,null,1)); await b.close();
STAMP · generated for RELEASE v2.8.5 commit 06e5180 (06e51801b38a) · archive input-tree hash c07fbfbdd2e1ddeb · 754 files · no wall-clock timestamp (regenerates identically when nothing changed).