feat(web-platform): release V0.1

This commit is contained in:
2026-08-20 16:36:19 +08:00
parent 1eb05132f1
commit e4849e1645
11 changed files with 160 additions and 61 deletions
+23 -1
View File
@@ -5,10 +5,12 @@ const fixture = (relative: string) => fileURLToPath(new URL(`../fixtures/${relat
const SIMPLE_MODEL = `
<mujoco model="e2e">
<compiler angle="radian"/>
<worldbody>
<light pos="0 0 3"/>
<body name="box" pos="0 0 1">
<joint name="slide" type="slide" axis="1 0 0" range="-1 1"/>
<joint name="hinge" type="hinge" axis="0 1 0" range="-1.57079632679 1.57079632679"/>
<geom name="box_geom" type="box" size=".2 .2 .2" mass="1"/>
</body>
</worldbody>
@@ -39,6 +41,12 @@ test('显示中文平台骨架并加载单文件模型', async ({page}) => {
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 page.getByRole('button',{name:'切换到白天主题'}).click();
await expect(page.locator('#root > div')).toHaveClass(/theme-light/);
await expect(page.getByRole('button',{name:'切换到黑夜主题'})).toHaveText('☾');
await page.getByRole('button',{name:'切换到黑夜主题'}).click();
await expect(page.locator('#root > div')).toHaveClass(/theme-dark/);
await page.locator('input[type="file"]').first().setInputFiles({
name: 'model.xml',
@@ -48,7 +56,21 @@ test('显示中文平台骨架并加载单文件模型', async ({page}) => {
await expect(page.getByText('WASM 已加载')).toBeVisible({timeout: 30_000});
await expect(page.getByText('motor')).toBeVisible();
await expect(page.getByText('slide')).toBeVisible();
await expect(page.getByText('slide').first()).toBeVisible();
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();
await page.getByRole('button',{name:'高级'}).click();
await expect(page.getByText('下限 -1.571 rad')).toBeVisible();
await expect(page.getByText('上限 1.571 rad')).toBeVisible();
await page.getByRole('button',{name:'rad 弧度制'}).click();
await expect(page.getByText('下限 -90.000°')).toBeVisible();
await expect(page.getByText('上限 90.000°')).toBeVisible();
await page.getByRole('button',{name:'忽略关节限位'}).click();
await expect(page.getByRole('button',{name:'忽略关节限位'})).toHaveAttribute('aria-pressed','true');
await expect(page.getByText('已忽略').first()).toBeVisible();
await page.getByRole('button',{name:'重置关节'}).click();
await expect(page.getByRole('button',{name:'▶ 播放'})).toBeVisible();
});
test('加载包含 include、OBJ、STL 与 PNG 的工程', async ({page}) => {