25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

30 lines
2.6 KiB

  1. import {test,expect} from '@playwright/test'
  2. import {signIn,freshScene,openEditor,action,shot,evidence,closeSession,call,registerProject} from './scene-editor-closure-helpers'
  3. test.afterEach(async({page})=>closeSession(page))
  4. for(const [key,trainingId] of [['fox','161'],['truck','162']])test(`${key}:场景发布后在真实训练编排选择、保存并重开静态模型`,async({page},info)=>{
  5. const token=await signIn(page),scene=await freshScene(token,key,'下游训练'),id=scene.project.id
  6. await openEditor(page,id);await action(page,'publish').click()
  7. await expect(page.locator('#se-save-state')).toHaveText('已发布',{timeout:60000})
  8. const published=(await call(`tran/v1/content/projects/${id}`,token)).data
  9. const trainingSource=(await call(`tran/v1/content/projects/${trainingId}`,token)).data
  10. const copied=await call(`tran/v1/content/projects/${trainingId}/copy`,token,{name:`场景闭环-${key}-训练引用-${Date.now()}`,version:trainingSource.project.version})
  11. expect(copied.status).toBe(200);registerProject(copied.data.project)
  12. const targetId=copied.data.project.id
  13. await page.goto(`/content/training-projects/${targetId}/legacy`)
  14. await expect(page.locator('.te-shell')).toBeVisible({timeout:90000})
  15. await expect(page.locator('[data-role="scene-viewport"]')).toHaveAttribute('data-state','ready',{timeout:90000})
  16. await page.locator('.te-shell [data-action="open-published-scenes"]').click()
  17. const option=page.locator('[data-action="choose-published-scene"]').filter({hasText:scene.project.name})
  18. await expect(option).toHaveCount(1);await option.click()
  19. await expect(page.locator('[data-role="scene-viewport"]')).toHaveAttribute('data-state','ready',{timeout:90000})
  20. const response=page.waitForResponse(r=>r.url().endsWith(`/content/projects/${targetId}`)&&r.request().method()==='PUT')
  21. await page.locator('.te-shell [data-action="save"]').first().click();expect((await response).status()).toBe(200)
  22. const saved=(await call(`tran/v1/content/projects/${targetId}`,token)).data
  23. const dependency=saved.currentVersion.dependencies.find((d:any)=>d.relationType==='TRAINING_SCENE')
  24. expect(dependency.targetProjectId).toBe(id);expect(dependency.targetVersionId).toBe(published.currentVersion.id)
  25. await page.reload();await expect(page.locator('[data-role="scene-viewport"]')).toHaveAttribute('data-state','ready',{timeout:90000})
  26. await expect(page.locator('.te-scene-canvas')).toBeVisible()
  27. await shot(page,info,`70-${key}-training-scene-reopened`)
  28. evidence(`downstream-${key}`,{featureIds:['publish.downstream'],projectId:id,sceneVersionId:published.currentVersion.id,trainingProjectId:targetId,dependency,staticOnly:true})
  29. })