|
- import fs from 'node:fs';
- import {chromium,expect} from '@playwright/test';
- import {login,call} from './role-permissions-live.mjs';
- const dir='reports/bridge-005-authoring-20260916';fs.mkdirSync(dir,{recursive:true});
- const session=await login('root');
- const before={};
- for(const id of [86,87,88,89]) before[id]=(await call('tran/v1/teaching/assignments/'+id,session.accessToken)).data;
- if(!fs.existsSync(dir+'/original-assignments.json'))fs.writeFileSync(dir+'/original-assignments.json',JSON.stringify(before,null,2));
- const browser=await chromium.launch({channel:'msedge',headless:true,args:['--enable-unsafe-swiftshader']});
- try {
- const page=await browser.newPage({viewport:{width:1440,height:900}});
- await page.addInitScript(s=>{sessionStorage.setItem('unreal-tran:web:access-token:v1',s.accessToken);sessionStorage.setItem('unreal-tran:web:refresh-token:v1',s.refreshToken);},session);
- await page.route(/\/src\/features\/virtual-training-legacy\/upstream\/views\/training\.js(?:\?|$)/,async route=>{
- const response=await route.fetch();await route.fulfill({response,body:(await response.text())+`
- globalThis.capture005=()=>{const e=activeTraining;if(!e?.sceneReady)return null;return {
- objects:e.publishedContentRoot.children.map(wrapper=>{const object=wrapper.children[0];object.updateWorldMatrix(true,true);const p=new THREE.Vector3(),q=new THREE.Quaternion(),s=new THREE.Vector3();object.matrixWorld.decompose(p,q,s);return {name:wrapper.name,position:p.toArray(),rotation:new THREE.Euler().setFromQuaternion(q).toArray().slice(0,3),scale:s.toArray()};}),
- camera:{position:e.cameraHome.position.toArray(),target:e.cameraHome.target.toArray()},
- parts:[...e.parts].filter(([id])=>id.startsWith('front-pump-')).map(([id,o])=>({id,hinge:o.userData.trainingHingeLocal?.toArray(),front:o.userData.trainingInspectionFront?.toArray(),axis:o.userData.trainingMechanismAxis?.toArray()}))};};`});
- });
- await page.goto('http://127.0.0.1:6180/teaching/virtual-training/preview/86');
- await expect(page.locator('[data-role="loading"]')).toHaveClass(/is-hidden/,{timeout:120000});
- await expect.poll(()=>page.evaluate(()=>globalThis.capture005?.()),{timeout:30000}).not.toBeNull();
- const snapshot=await page.evaluate(()=>globalThis.capture005());
- fs.writeFileSync(dir+'/model-placement.json',JSON.stringify(snapshot,null,2));
- console.log(JSON.stringify(snapshot));
- }finally{await browser.close();}
|