← back to Newmor Onboard
scripts/preview.cjs
23 lines
const fs=require('node:fs');
const {chromium,webkit}=require('/Users/macstudio3/.npm-global/lib/node_modules/playwright');
const root='/Users/macstudio3/Projects/newmor-onboard';
const stage=process.argv.includes('--after')?'after':'before';
const products=JSON.parse(fs.readFileSync(root+'/data/live-2026-09-09/shopify-before.json')).products;
(async()=>{
const browser=await chromium.launch();
const context=await browser.newContext({viewport:{width:1440,height:1100},recordVideo:{dir:root+'/verification/preview-video'}});
const page=await context.newPage();
const p=await (await import('./shopify.mjs')).product('gid://shopify/Product/4351291785267');
const errors=[];page.on('pageerror',e=>errors.push(e.stack));
const res=await page.goto(p.onlineStorePreviewUrl,{waitUntil:'domcontentloaded',timeout:60000});
await page.waitForTimeout(7000);
await page.frameLocator('#PBarNextFrame').getByRole('button',{name:'Hide bar',exact:true}).click({timeout:3000}).catch(()=>{});
if(await page.getByRole('button',{name:'Decline',exact:true}).isVisible().catch(()=>false))await page.getByRole('button',{name:'Decline',exact:true}).click({timeout:3000}).catch(()=>{});
await page.screenshot({path:root+`/verification/preview-${stage}.png`,fullPage:true});
fs.writeFileSync(root+`/verification/preview-${stage}.html`,await page.content());
const body=await page.locator('body').innerText();
fs.writeFileSync(root+`/verification/preview-${stage}.txt`,body);
console.log(JSON.stringify({status:res.status(),title:await page.title(),body:body.slice(0,14000),errors},null,2));
await context.close();await browser.close();
})().catch(e=>{console.error(e.message);process.exit(1)});