export async function verifyVipRoomsPreview(){ const e=await System.import('cc');e.game.resume(); const modules=Array.from(System.entries()).map(([,m])=>m),get=n=>{const m=modules.find(m=>m[n]);if(!m)throw Error(n);return m[n];}; const service=e.director.getScene().getChildByName('PlatformServices'); const owner=service.getComponent('PlatformStartup');owner.unsubscribe?.();owner.runtime?.stop();owner.panel?.dispose();owner.panel=null; await new Promise((ok,fail)=>e.director.loadScene('PlatformLobby',err=>err?fail(err):ok()));e.game.resume(); const canvas=e.director.getScene().getChildByName('Canvas'); const prefab=await new Promise((ok,fail)=>e.assetManager.loadAny('ddf22b83-c329-4cb2-ac80-7b4999472522',(err,a)=>err?fail(err):ok(a))); const root=e.instantiate(prefab);root.parent=canvas;root.setPosition(0,0,0);root.getChildByName('group-3').active=false; const view=root.getComponent('VipRoomListView'),checks=[],joins=[]; const assert=(ok,msg)=>{if(!ok)throw Error(msg);checks.push(msg);};root.on('vip-join',c=>joins.push(c)); view.configure(()=> '测试玩法\n四人桌'); const raw=Array.from({length:4},(_,i)=>({shortCode:'10000'+i,owner:'房主'+i,destwo:'测试 VIP '+i,playerList:Array.from({length:9},()=>[0,123,null,456]),roomcodes:{roomtype:[1],roomlist:Array.from({length:9},(_,j)=>900000+i*10+j)},seatCount:Array(9).fill(4),deskState:Array.from({length:9},(_,j)=>j%2),forbidSelect:i===0})); const rooms=get('parseVipRooms')({roomInfo:raw}),codes=raw.map(r=>r.shortCode).reverse();view.render(rooms,codes); const content=view.roomsScroll.content; assert(content.children.length===4,'four room prefab instances'); assert(content.children[0].getChildByName('Spirit3178').getComponent(e.Label).string==='100003','saved order wins over server order'); assert(content.getComponent(e.UITransform).height===796,'room scroll extent uses 199 spacing'); content.children[0].getChildByName('Spirit3192').emit(e.Button.EventType.CLICK); assert(joins[0]==='100003','enter emits VIP short code'); content.children[0].emit(e.Button.EventType.CLICK); assert(view.selectedCode==='100003'&&view.desksScroll.node.active&&!view.roomsScroll.node.active,'row opens selected desk page'); const desks=view.desksScroll.content; assert(desks.children.length===9&&desks.getComponent(e.UITransform).height===725,'nine desk prefabs in scroll content'); assert(desks.children[1].position.x-desks.children[0].position.x===285,'two column spacing matches source'); assert(desks.children[0].getChildByName('Spirit3188').getComponent(e.Label).string==='人数:2/4','desk occupancy'); assert(desks.children[1].getChildByName('Spirit3186').getComponent(e.Sprite).spriteFrame===view.deskFrames[1],'in battle desk frame'); desks.children[1].emit(e.Button.EventType.CLICK);assert(joins[1]===900031,'desk click emits actual room code'); view.render(rooms,codes);assert(view.selectedCode==='100003','refresh retains selection'); view.render(rooms.slice(0,3),codes);assert(view.selectedCode===null&&!view.desksScroll.node.active,'removed selected room returns to page one'); view.render([],codes);assert(content.children.length===0,'empty response clears all rooms'); view.render(rooms,codes);globalThis.__vipQA={root,view,checks};return {checks}; }