pixalynx/pixal-gps

These files define two separate printed circuit boards: a small, two-layer battery cartridge with protection circuitry and contact pads for a pouch cell, and a larger, two-layer wireless charging dock featuring USB-C input, a resonant coil, and wireless power transmission components.

Version
0.1.2
License
unset
Stars
0

simulator/scripts/browser-final-qa.js

async (page) => {
 const errors=[];page.on('pageerror',e=>errors.push(e.message));await page.goto('http://localhost:4186/');await page.waitForFunction(()=>window.pixalStudio?.ready);await page.setViewportSize({width:1440,height:1100});
 await page.getByRole('checkbox',{name:'Measurements',exact:true}).check();await page.getByRole('combobox',{name:'Measured piece'}).selectOption('pack');await page.waitForTimeout(1800);await page.screenshot({path:'output/playwright/protection-measurements.png'});
 if(!(await page.locator('#measure-note').textContent()).includes('30 × 7 × 0.8 mm'))throw Error('Protection dimensions incorrect');
 const event=page.waitForEvent('download');await page.getByRole('button',{name:'↓ Save render',exact:true}).click();await(await event).saveAs('renders/pixal-gps-protection-measurements.png');
 await page.getByRole('combobox',{name:'Measured piece'}).selectOption('cell');await page.waitForTimeout(1700);await page.screenshot({path:'output/playwright/cell-measurements.png'});
 if(!(await page.locator('#measure-note').textContent()).includes('30.5 × 40.5 × 5.4 mm'))throw Error('Cell dimensions incorrect');
 for(const value of ['pcb','tray','receiver','trackerShell','dockPcb','tx','dockShell']){await page.getByRole('combobox',{name:'Measured piece'}).selectOption(value);await page.waitForTimeout(150);if(await page.locator('.dimension-label:visible').count()!==3)throw Error('Missing dimensions for '+value);}
 await page.getByRole('checkbox',{name:'Measurements',exact:true}).uncheck();await page.waitForFunction(()=>[...document.querySelectorAll('.dimension-label')].every(e=>e.style.display==='none'));if(await page.locator('.dimension-label:visible').count())throw Error('Measurement toggle failed');
 await page.getByRole('button',{name:'Complete kit',exact:true}).click();await page.getByRole('checkbox',{name:'Cutaway',exact:true}).uncheck();await page.waitForTimeout(1000);
 const geometry=await page.evaluate(()=>{const {parts,scene}=window.pixalStudio;scene.updateMatrixWorld(true);return [1,2,3,4].map(i=>{const p=parts.pcb.getObjectByName('P'+i),q=parts.pack.getObjectByName('P'+i);return {pogo:p.matrixWorld.elements.slice(12,15),pad:q.matrixWorld.elements.slice(12,15)};});});
 for(const g of geometry)if(Math.abs(g.pogo[0]-g.pad[0])>.001||Math.abs(g.pogo[2]-g.pad[2])>.001||Math.abs(g.pogo[1]-g.pad[1]-2.5)>.001)throw Error('Contact mismatch');
 await page.getByRole('button',{name:'Design notes ↗',exact:true}).click();await page.keyboard.press('Escape');
 await page.setViewportSize({width:390,height:844});await page.getByRole('button',{name:'Tracker',exact:true}).click();await page.waitForTimeout(2000);if(await page.evaluate(()=>document.documentElement.scrollWidth>innerWidth))throw Error('Mobile overflow');await page.screenshot({path:'output/playwright/mobile.png',fullPage:true});
 await page.getByRole('checkbox',{name:'Measurements',exact:true}).check();await page.getByRole('combobox',{name:'Measured piece'}).selectOption('cell');await page.waitForTimeout(1800);await page.screenshot({path:'output/playwright/mobile-measurements.png',fullPage:true});
 await page.setViewportSize({width:1440,height:1100});await page.getByRole('checkbox',{name:'Measurements',exact:true}).uncheck();await page.getByRole('button',{name:'Complete kit',exact:true}).click();await page.getByRole('checkbox',{name:'Cutaway',exact:true}).uncheck();await page.waitForTimeout(1800);await page.screenshot({path:'output/playwright/final-desktop.png'});
 if(errors.length)throw Error(errors.join('\n'));console.log(JSON.stringify({errors,geometry,result:'All nine measurement options, contact alignment, dialog, mobile and toggles passed.'}));
}