Unify CAD conveyor on / and /details, add RealSense D435i + contact paddle physics, keep items moving through scan, lock 7×10 drop validation, and ship Stage 2 artifacts with production on :3100 (permanent HTTPS still blocked). Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { ensureRunning, openPausedCase } from './helpers';
|
|
|
|
test.describe('safety', () => {
|
|
test.setTimeout(90_000);
|
|
|
|
test('jam case shows FAULT in status or command', async ({ page }) => {
|
|
await openPausedCase(page, 9, '1');
|
|
await expect(page.getByTestId('demo-case-label')).toHaveText('10/11');
|
|
await ensureRunning(page);
|
|
|
|
await expect
|
|
.poll(
|
|
async () => {
|
|
const status = (await page.getByTestId('demo-status').textContent()) ?? '';
|
|
const command = (await page.getByTestId('demo-command').textContent()) ?? '';
|
|
return `${status} ${command}`;
|
|
},
|
|
{ timeout: 20_000, intervals: [50, 100, 100] },
|
|
)
|
|
.toMatch(/FAULT/i);
|
|
});
|
|
|
|
test('emergency case shows EMERGENCY in status or command', async ({ page }) => {
|
|
await openPausedCase(page, 10, '1');
|
|
await expect(page.getByTestId('demo-case-label')).toHaveText('11/11');
|
|
await ensureRunning(page);
|
|
|
|
await expect
|
|
.poll(
|
|
async () => {
|
|
const status = (await page.getByTestId('demo-status').textContent()) ?? '';
|
|
const command = (await page.getByTestId('demo-command').textContent()) ?? '';
|
|
return `${status} ${command}`;
|
|
},
|
|
{ timeout: 20_000, intervals: [50, 100, 100] },
|
|
)
|
|
.toMatch(/EMERGENCY/i);
|
|
});
|
|
});
|