|
- import {chromium,expect} from '@playwright/test';
- import assert from 'node:assert/strict';
- import fs from 'node:fs';
- import {login,call} from './role-permissions-live.mjs';
- const dir='reports/bridge-model-match-20260914', s=await login('root'),checks=[];
- const api=async p=>{const r=await call('tran/v1/'+p,s.accessToken);assert.equal(r.status,200);return r.data;};
- const browser=await chromium.launch({channel:'msedge',headless:true,args:['--enable-unsafe-swiftshader']});
- try {
- const page=await browser.newPage({viewport:{width:1600,height:1000}});
- await page.addInitScript(s=>{sessionStorage.setItem('unreal-tran:web:access-token:v1',s.accessToken);localStorage.setItem('unreal-tran:web:preferences:v1',JSON.stringify({themeMode:'military'}));},s);
- for(const id of [86,89]) {
- const task=await api('teaching/assignments/'+id), before=await api('teaching/runs?assignmentId='+id+'&size=100');
- await page.goto('http://127.0.0.1:6180/teaching/virtual-training/preview/'+id);
- await expect(page.locator('[data-role="loading"]')).toHaveClass(/is-hidden/,{timeout:120000});await page.waitForTimeout(1500);
- const steps=id===86?task.definitionSnapshot.steps:task.definitionSnapshot.steps.slice(0,1);
- for(let i=0;i<steps.length;i++) {
- for(let j=0;j<steps[i].action.mechanism.steps.length;j++) {
- if(j===steps[i].action.mechanism.steps.length-1){const response=page.waitForResponse(r=>r.url().includes('/preview/validate'));await page.locator('[data-role="part-label"]').click();assert.equal((await response).status(),200);}
- else{await page.locator('[data-role="part-label"]').click();await page.waitForTimeout(1000);}
- }
- await expect(page.locator('[data-action="next"]')).toBeEnabled();
- if(i<steps.length-1)await page.locator('[data-action="next"]').click();
- }
- await page.screenshot({path:`${dir}/${task.code}-original.png`});
- const stable=value=>JSON.parse(JSON.stringify(value,(key,item)=>key==='serverNow'?undefined:item));
- assert.deepEqual(stable((await api('teaching/runs?assignmentId='+id+'&size=100')).records),stable(before.records));
- checks.push(`${task.code} 原任务入口通过,原运行与成绩未变化`);
- }
- fs.writeFileSync(`${dir}/originals.json`,JSON.stringify({pass:true,checks},null,2));
- }finally{await browser.close();}
|