Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

27 lignes
2.3 KiB

  1. import fs from 'node:fs';
  2. import {chromium,expect} from '@playwright/test';
  3. import {login,call} from './role-permissions-live.mjs';
  4. const dir='reports/bridge-005-authoring-20260916';fs.mkdirSync(dir,{recursive:true});
  5. const session=await login('root');
  6. const before={};
  7. for(const id of [86,87,88,89]) before[id]=(await call('tran/v1/teaching/assignments/'+id,session.accessToken)).data;
  8. if(!fs.existsSync(dir+'/original-assignments.json'))fs.writeFileSync(dir+'/original-assignments.json',JSON.stringify(before,null,2));
  9. const browser=await chromium.launch({channel:'msedge',headless:true,args:['--enable-unsafe-swiftshader']});
  10. try {
  11. const page=await browser.newPage({viewport:{width:1440,height:900}});
  12. 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);
  13. await page.route(/\/src\/features\/virtual-training-legacy\/upstream\/views\/training\.js(?:\?|$)/,async route=>{
  14. const response=await route.fetch();await route.fulfill({response,body:(await response.text())+`
  15. globalThis.capture005=()=>{const e=activeTraining;if(!e?.sceneReady)return null;return {
  16. 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()};}),
  17. camera:{position:e.cameraHome.position.toArray(),target:e.cameraHome.target.toArray()},
  18. 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()}))};};`});
  19. });
  20. await page.goto('http://127.0.0.1:6180/teaching/virtual-training/preview/86');
  21. await expect(page.locator('[data-role="loading"]')).toHaveClass(/is-hidden/,{timeout:120000});
  22. await expect.poll(()=>page.evaluate(()=>globalThis.capture005?.()),{timeout:30000}).not.toBeNull();
  23. const snapshot=await page.evaluate(()=>globalThis.capture005());
  24. fs.writeFileSync(dir+'/model-placement.json',JSON.stringify(snapshot,null,2));
  25. console.log(JSON.stringify(snapshot));
  26. }finally{await browser.close();}