feat(web-platform): release V0.2
build / setup (compute matrix) (pull_request) Has been cancelled
build / macos-15-arm64-studio (pull_request) Has been cancelled
build / ubuntu-24.04-clang-18-studio (pull_request) Has been cancelled
build / ubuntu-24.04-gcc-14-studio (pull_request) Has been cancelled
build / windows-2025-ninja-studio (pull_request) Has been cancelled
build / ubuntu-24.04-clang-18-wasm (pull_request) Has been cancelled
build / ubuntu-24.04-clang-18-mjx (pull_request) Has been cancelled
lint / pre-commit (pull_request) Has been cancelled
build / ${{ matrix.label }} (pull_request) Has been cancelled
build / setup (compute matrix) (pull_request) Has been cancelled
build / macos-15-arm64-studio (pull_request) Has been cancelled
build / ubuntu-24.04-clang-18-studio (pull_request) Has been cancelled
build / ubuntu-24.04-gcc-14-studio (pull_request) Has been cancelled
build / windows-2025-ninja-studio (pull_request) Has been cancelled
build / ubuntu-24.04-clang-18-wasm (pull_request) Has been cancelled
build / ubuntu-24.04-clang-18-mjx (pull_request) Has been cancelled
lint / pre-commit (pull_request) Has been cancelled
build / ${{ matrix.label }} (pull_request) Has been cancelled
This commit is contained in:
@@ -38,13 +38,31 @@ test('显示中文平台骨架并加载单文件模型', async ({page}) => {
|
||||
page.on('requestfailed', (request) => console.log(`[browser:requestfailed] ${request.url()} ${request.failure()?.errorText}`));
|
||||
page.on('response', (response) => { if (response.status() >= 400 || response.url().endsWith('.wasm')) console.log(`[browser:response] ${response.status()} ${response.url()} ${response.headers()['content-type'] ?? ''}`); });
|
||||
await page.goto('/');
|
||||
await page.setViewportSize({width:1024,height:768});
|
||||
const toolBox=await page.getByRole('toolbar',{name:'视口交互模式'}).boundingBox(),playBox=await page.getByRole('button',{name:'▶ 播放'}).boundingBox();
|
||||
expect(toolBox&&playBox&&toolBox.x+toolBox.width<=playBox.x).toBeTruthy();
|
||||
await page.getByRole('button',{name:'更多工作台操作'}).click();await expect(page.getByRole('menuitem',{name:'工作台设置'})).toBeVisible();await page.keyboard.press('Escape');
|
||||
await page.setViewportSize({width:1440,height:900});
|
||||
await expect(page.getByRole('heading', {name: 'MuJoCo Web 仿真平台'})).toBeVisible();
|
||||
await expect(page.getByRole('main').getByText('拖放模型工程到此处')).toBeVisible();
|
||||
await expect(page.getByRole('img',{name:'XYZ 方向指示器'})).toBeVisible();
|
||||
await expect(page.getByRole('button',{name:'切换到白天主题'})).toHaveText('☀');
|
||||
await expect(page.getByRole('button',{name:'切换到白天主题'})).toBeVisible();
|
||||
await page.getByRole('button',{name:'布局设置'}).click();await expect(page.getByRole('dialog',{name:'布局设置'})).toBeVisible();await page.keyboard.press('Escape');
|
||||
await page.getByRole('button',{name:'工作台设置'}).click();await expect(page.getByRole('dialog',{name:'工作台设置'})).toBeVisible();await page.keyboard.press('Escape');
|
||||
await page.keyboard.press('Control+k');
|
||||
await expect(page.getByRole('dialog',{name:'命令面板'})).toBeVisible();
|
||||
await page.getByLabel('搜索命令').fill('复位相机');
|
||||
await expect(page.getByRole('option',{name:/复位相机/})).toBeVisible();
|
||||
await page.keyboard.press('Escape');
|
||||
await page.getByRole('button',{name:'进入全屏'}).click();
|
||||
await expect(page.getByRole('button',{name:'退出全屏'})).toBeVisible();
|
||||
await page.keyboard.press('Control+k');
|
||||
await expect(page.getByRole('dialog',{name:'命令面板'})).toBeVisible();
|
||||
await page.keyboard.press('Escape');
|
||||
await page.getByRole('button',{name:'退出全屏'}).click();
|
||||
await page.getByRole('button',{name:'切换到白天主题'}).click();
|
||||
await expect(page.locator('#root > div')).toHaveClass(/theme-light/);
|
||||
await expect(page.getByRole('button',{name:'切换到黑夜主题'})).toHaveText('☾');
|
||||
await expect(page.getByRole('button',{name:'切换到黑夜主题'})).toBeVisible();
|
||||
await page.getByRole('button',{name:'切换到黑夜主题'}).click();
|
||||
await expect(page.locator('#root > div')).toHaveClass(/theme-dark/);
|
||||
|
||||
@@ -55,8 +73,15 @@ test('显示中文平台骨架并加载单文件模型', async ({page}) => {
|
||||
});
|
||||
|
||||
await expect(page.getByText('WASM 已加载')).toBeVisible({timeout: 30_000});
|
||||
await page.getByRole('button',{name:'通知中心'}).click();await expect(page.getByRole('dialog',{name:'通知中心'})).toContainText('模型加载完成');await page.getByText('事件日志').click();await expect(page.getByRole('dialog',{name:'诊断与事件日志'})).toBeVisible();await page.keyboard.press('Escape');
|
||||
await page.getByRole('button',{name:/FPS .*物理/}).click();
|
||||
await expect(page.getByRole('dialog',{name:'性能详情'})).toBeVisible();
|
||||
await page.keyboard.press('Escape');
|
||||
await page.getByRole('tab',{name:'控制'}).click();
|
||||
await page.getByRole('button',{name:'Actuator'}).click();
|
||||
await expect(page.getByText('motor')).toBeVisible();
|
||||
await expect(page.getByText('slide').first()).toBeVisible();
|
||||
await expect(page.getByRole('tabpanel',{name:'控制'}).getByText('slide',{exact:true})).toBeVisible();
|
||||
await page.getByRole('tab',{name:'模型结构'}).click();
|
||||
const structure=page.getByRole('navigation',{name:'模型结构树'});await expect(structure).toBeVisible();await structure.getByRole('treeitem',{name:/hinge/}).hover();
|
||||
await expect(page.getByRole('alert')).toHaveCount(0);
|
||||
await expect(page.getByRole('button',{name:'重置关节'})).toBeVisible();
|
||||
@@ -94,9 +119,14 @@ test('加载引用 OBJ 的 URDF 工程', async ({page}) => {
|
||||
]);
|
||||
await expect(page.getByText('WASM 已加载')).toBeVisible({timeout: 30_000});
|
||||
await expect(page.getByText('2 个文件')).toBeVisible();
|
||||
await page.getByRole('button',{name:'URDF 处理方式'}).click();
|
||||
await expect(page.getByLabel('URDF 处理方式')).toHaveValue('mjcf');
|
||||
await expect(page.getByLabel('URDF 基座类型')).toHaveValue('floating');
|
||||
await expect(page.getByText(/URDF 已转换为 MJCF(浮动基座),并整体平移/)).toBeVisible();
|
||||
await page.getByRole('button',{name:'通知中心'}).click();
|
||||
const notifications=page.getByRole('dialog',{name:'通知中心'});
|
||||
await expect(notifications).toContainText('URDF 兼容处理');
|
||||
await expect(notifications).toContainText(/URDF 已转换为 MJCF(浮动基座),并整体平移/);
|
||||
await page.keyboard.press('Escape');
|
||||
await expect(page.getByLabel('显示碰撞几何')).not.toBeChecked();
|
||||
});
|
||||
|
||||
@@ -111,7 +141,7 @@ test('中等规模模型持续步进并可重复加载', async ({page}) => {
|
||||
await expect(page.locator('footer')).not.toContainText('时间 0.000 s');
|
||||
|
||||
// 播放过程中重置必须同时暂停底层会话,之后仍可正常播放和暂停。
|
||||
await page.getByRole('button',{name:'重置'}).click();
|
||||
await page.getByRole('button',{name:'重置',exact:true}).click();
|
||||
await expect(page.getByRole('button',{name:'▶ 播放'})).toBeVisible();
|
||||
await expect(page.locator('footer')).toContainText('时间 0.000 s');
|
||||
await page.getByRole('button',{name:'▶ 播放'}).click();
|
||||
|
||||
Reference in New Issue
Block a user