35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
import path from 'node:path';
|
|
import { expect, test } from '@playwright/test';
|
|
|
|
test('viewer2d loads DWG, DXF, and an uploaded file', async ({ page }) => {
|
|
await page.goto('/');
|
|
|
|
await page.getByRole('button', { name: 'Sample DWG' }).click();
|
|
await expect(page.locator('#status')).toContainText('✓ BasicSample.dwg · 7309 entities');
|
|
|
|
await page.getByRole('button', { name: 'Layers' }).click();
|
|
await expect(page.locator('#layerList label').first()).toBeVisible();
|
|
|
|
await page.getByRole('button', { name: 'Sample DXF' }).click();
|
|
await expect(page.locator('#status')).toContainText('✓ simple.dxf · 6 entities');
|
|
|
|
await page.locator('#file').setInputFiles(
|
|
path.resolve('apps/viewer-2d-sample/public/samples/simple.dxf'),
|
|
);
|
|
await expect(page.locator('#status')).toContainText('✓ simple.dxf · 6 entities');
|
|
});
|
|
|
|
test('viewer2d rejects cross-origin and oversized CAD input', async ({ page }) => {
|
|
await page.goto('/?model=https://attacker.example/oversized.dxf');
|
|
await expect(page.locator('#status')).toContainText('같은 origin');
|
|
|
|
await page.goto('/');
|
|
await page.evaluate(() => {
|
|
const file = new File([new Uint8Array(50 * 1024 * 1024 + 1)], 'oversized.dxf');
|
|
const transfer = new DataTransfer();
|
|
transfer.items.add(file);
|
|
window.dispatchEvent(new DragEvent('drop', { dataTransfer: transfer }));
|
|
});
|
|
await expect(page.locator('#status')).toContainText('50 MiB');
|
|
});
|