feat(editor): the simulation's properties in a sheet of their own, with a restart for everyone
Who started the simulation, "Pakete verwerfen" and the dropped packets move from the toolbar into a properties sheet beside the surface. New in it: restart the simulation, after asking. The room learns a restart message: stopped as by stop, every capture, dropped frame and program window emptied, started anew and named after who restarted; refused for readers and frozen projects, logged, and waiting for asked blobs like a start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -46,6 +46,7 @@ const box = (page: Page, id: string) => page.locator(`g.device[data-node="${id}"
|
||||
const canvas = (page: Page) => page.locator('svg.filius-canvas');
|
||||
const desktop = (page: Page, id: string) => page.locator(`section[data-desktop="${id}"]`);
|
||||
const note = (page: Page, kind: string) => page.locator(`[data-note="${kind}"]`);
|
||||
const properties = (page: Page) => page.getByRole('complementary', { name: 'Eigenschaften' });
|
||||
|
||||
async function commandLine(page: Page, id: string) {
|
||||
await showDesktop(page, id);
|
||||
@@ -117,8 +118,12 @@ test('three people in one project of F: moving, reading only, one simulation for
|
||||
await mia.locator('button[name="simulationMode"]').click();
|
||||
for (const page of [mia, ben, rita]) {
|
||||
await expect(canvas(page)).toHaveAttribute('data-mode', 'simulation');
|
||||
await expect(note(page, 'startedBy')).toHaveText('Simulation gestartet von Mia');
|
||||
await page.getByRole('button', { name: 'Eigenschaften' }).click();
|
||||
await expect(properties(page).locator('[data-note="startedBy"]')).toHaveText('Simulation gestartet von Mia');
|
||||
}
|
||||
// Rita may look: neither start anew nor drop.
|
||||
await expect(properties(rita).getByRole('button')).toHaveText(['×']);
|
||||
for (const page of [mia, ben, rita]) await properties(page).getByRole('button', { name: 'Schließen' }).click();
|
||||
|
||||
// Ben pings from the notebook's command line; Mia's command line of it shows the same.
|
||||
const bens = await commandLine(ben, notebook);
|
||||
@@ -141,6 +146,16 @@ test('three people in one project of F: moving, reading only, one simulation for
|
||||
await ritas.input.press('Enter');
|
||||
await expect(rita.getByText('Hier können Sie nur zuschauen.')).toBeVisible();
|
||||
|
||||
// Ben starts it anew, for everyone: the command line begins anew in each, named after him.
|
||||
await ben.getByRole('button', { name: 'Eigenschaften' }).click();
|
||||
await properties(ben).getByRole('button', { name: 'Simulation neu starten' }).click();
|
||||
await properties(ben).getByRole('button', { name: 'Neu starten' }).click();
|
||||
for (const each of [bens, mias, ritas]) await expect(each.text).not.toContainText('ping 141.99.5.10');
|
||||
await expect(properties(ben).locator('[data-note="startedBy"]')).toHaveText('Simulation gestartet von Ben');
|
||||
await mia.getByRole('button', { name: 'Eigenschaften' }).click();
|
||||
await expect(properties(mia).locator('[data-note="startedBy"]')).toHaveText('Simulation gestartet von Ben');
|
||||
await expect(properties(mia).getByText('Noch keine verworfenen Pakete.')).toBeVisible();
|
||||
|
||||
// Ben stops it, for everyone.
|
||||
await ben.locator('button[name="designMode"]').click();
|
||||
for (const page of [mia, ben, rita]) await expect(canvas(page)).toHaveAttribute('data-mode', 'design');
|
||||
|
||||
Reference in New Issue
Block a user