Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

27 Zeilen
1.6 KiB

  1. import { chromium } from '@playwright/test';
  2. import { login } from './role-permissions-live.mjs';
  3. const {accessToken}=await login('root');
  4. const browser=await chromium.launch({channel:'msedge',headless:true});
  5. try {
  6. const page=await browser.newPage();
  7. await page.addInitScript(t=>sessionStorage.setItem('unreal-tran:web:access-token:v1',t),accessToken);
  8. await page.goto('http://127.0.0.1:6180/teaching/virtual-training');
  9. await page.locator('[data-testid="global-digital-human-widget"]').waitFor();
  10. const src=await page.locator('[data-testid="global-digital-human-widget"]').getAttribute('src');
  11. console.log('widget',src);
  12. const frame=await page.locator('[data-testid="global-digital-human-widget"]').contentFrame();
  13. await frame.locator('.embed-launcher').waitFor();
  14. const url=new URL(src);
  15. const slug=url.pathname.split('/').filter(Boolean).at(-1);
  16. for(const origin of [url.origin,'http://127.0.0.1:8003']) {
  17. const r=await fetch(`${origin}/open/v1/realtime/${slug}`);
  18. const data=await r.json();
  19. const agent=data.data||data;
  20. for (const avatar of agent.avatars || []) {
  21. const cover=await fetch(new URL(avatar.coverUrl,origin),{headers:{Range:'bytes=0-0'}});
  22. console.log(JSON.stringify({origin,status:r.status,avatar:avatar.name,coverPath:avatar.coverUrl.split('?')[0],coverStatus:cover.status,type:cover.headers.get('content-type'),error:cover.ok?null:await cover.text()}));
  23. }
  24. }
  25. console.log(await frame.locator('.embed-launcher-avatar').evaluate(e=>({tag:e.firstElementChild?.tagName,greenDot:!!e.querySelector('i')})));
  26. } finally {await browser.close();}