// Disposable V4V fixture only: never point this test at a paid production catalog. // See docs/container-store-ownership-followup.md for fixture isolation requirements. const fs = require('node:fs'); const { chromium, expect } = require('../../neode-ui/node_modules/@playwright/test'); const cdp = process.env.ARCHY_TEST_CDP; const passwordFile = process.env.V4V_TEST_PASSWORD_FILE; const fixtureOrigin = new URL(process.env.V4V_TEST_ORIGIN || 'http://127.0.0.1:32908').origin; const parentOrigin = new URL(process.env.ARCHY_TEST_PARENT_ORIGIN || 'http://127.0.0.1').origin; if (!cdp || !passwordFile) throw Error('ARCHY_TEST_CDP and V4V_TEST_PASSWORD_FILE are required'); if (new URL(parentOrigin).hostname !== new URL(fixtureOrigin).hostname) throw Error('Fixture and parent must use the same hostname'); const fixturePassword = fs.readFileSync(passwordFile, 'utf8').trim(); (async()=>{const browser=await chromium.connectOverCDP(cdp);const contexts=[]; try{for(const width of [390,1440]){ const context=await browser.newContext({viewport:{width,height:900},serviceWorkers:'block'});contexts.push(context); context.setDefaultTimeout(15000); context.setDefaultNavigationTimeout(30000); console.log("stage",width,"context"); await context.addInitScript(()=>{window.__qualificationMedia=[];const play=HTMLMediaElement.prototype.play;HTMLMediaElement.prototype.play=function(...args){this.muted=true;if(!window.__qualificationMedia.includes(this))window.__qualificationMedia.push(this);return play.apply(this,args)}}); const response=await context.request.post(fixtureOrigin + '/api/alpha/login',{data:{password:fixturePassword},timeout:30000});if(!response.ok())throw Error('Fixture login failed HTTP '+response.status()); const harness=`