2026-04-27 18:55:12 +02:00
|
|
|
import {
|
|
|
|
|
checkForScreenshot,
|
|
|
|
|
screenShotPaths,
|
|
|
|
|
test,
|
|
|
|
|
visitStudy,
|
2026-06-10 02:25:14 +02:00
|
|
|
waitForPaintToSettle,
|
2026-04-27 18:55:12 +02:00
|
|
|
waitForViewportRenderCycle,
|
|
|
|
|
waitForViewportsRendered,
|
|
|
|
|
} from './utils';
|
2025-02-26 17:23:40 +01:00
|
|
|
|
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
|
|
|
const studyInstanceUID = '1.3.12.2.1107.5.2.32.35162.30000015050317233592200000046';
|
|
|
|
|
const mode = 'viewer';
|
|
|
|
|
await visitStudy(page, studyInstanceUID, mode, 2000);
|
|
|
|
|
});
|
|
|
|
|
|
2025-12-12 17:46:45 +01:00
|
|
|
test('should properly display MPR for MR', async ({
|
|
|
|
|
page,
|
|
|
|
|
DOMOverlayPageObject,
|
|
|
|
|
leftPanelPageObject,
|
|
|
|
|
mainToolbarPageObject,
|
|
|
|
|
rightPanelPageObject,
|
2026-04-27 18:55:12 +02:00
|
|
|
viewportPageObject,
|
2025-12-12 17:46:45 +01:00
|
|
|
}) => {
|
|
|
|
|
await rightPanelPageObject.toggle();
|
2025-04-04 18:11:29 +02:00
|
|
|
|
2025-11-20 15:29:14 +01:00
|
|
|
await mainToolbarPageObject.layoutSelection.MPR.click();
|
2025-04-04 18:11:29 +02:00
|
|
|
|
2026-04-27 18:55:12 +02:00
|
|
|
await waitForViewportsRendered(page);
|
|
|
|
|
|
|
|
|
|
await checkForScreenshot(
|
|
|
|
|
page,
|
|
|
|
|
viewportPageObject.grid,
|
|
|
|
|
screenShotPaths.segHydrationFromMPR.mprBeforeSEG
|
|
|
|
|
);
|
2025-04-04 18:11:29 +02:00
|
|
|
|
2025-12-12 17:46:45 +01:00
|
|
|
await leftPanelPageObject.loadSeriesByDescription('SEG');
|
2025-02-26 17:23:40 +01:00
|
|
|
|
2026-04-27 18:55:12 +02:00
|
|
|
await waitForViewportsRendered(page);
|
2026-06-10 02:25:14 +02:00
|
|
|
// SEG load triggers an additional progressive labelmap upload after the
|
|
|
|
|
// viewports first report 'rendered'; let that finish before screenshotting.
|
|
|
|
|
await page.waitForTimeout(1500);
|
|
|
|
|
await waitForPaintToSettle(page);
|
2026-04-27 18:55:12 +02:00
|
|
|
|
|
|
|
|
await checkForScreenshot(
|
|
|
|
|
page,
|
|
|
|
|
viewportPageObject.grid,
|
|
|
|
|
screenShotPaths.segHydrationFromMPR.mprAfterSEG
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// start watching for viewports to render
|
|
|
|
|
const viewportRenderCycle = waitForViewportRenderCycle(page);
|
2025-04-04 18:11:29 +02:00
|
|
|
|
2025-12-12 17:46:45 +01:00
|
|
|
await DOMOverlayPageObject.viewport.segmentationHydration.yes.click();
|
2025-04-04 18:11:29 +02:00
|
|
|
|
2026-04-27 18:55:12 +02:00
|
|
|
await viewportRenderCycle;
|
2026-06-10 02:25:14 +02:00
|
|
|
// Hydration propagates the labelmap volume to the sagittal/coronal MPR
|
|
|
|
|
// viewports asynchronously; wait for that propagation to render before
|
|
|
|
|
// capturing.
|
|
|
|
|
await page.waitForTimeout(1500);
|
|
|
|
|
await waitForPaintToSettle(page);
|
2026-04-27 18:55:12 +02:00
|
|
|
|
|
|
|
|
await checkForScreenshot(
|
|
|
|
|
page,
|
|
|
|
|
viewportPageObject.grid,
|
|
|
|
|
screenShotPaths.segHydrationFromMPR.mprAfterSegHydrated
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const viewportRenderAfterLayoutChange = waitForViewportRenderCycle(page);
|
2025-02-26 17:23:40 +01:00
|
|
|
|
2025-11-20 15:29:14 +01:00
|
|
|
await mainToolbarPageObject.layoutSelection.axialPrimary.click();
|
2025-02-26 17:23:40 +01:00
|
|
|
|
2026-04-27 18:55:12 +02:00
|
|
|
await viewportRenderAfterLayoutChange;
|
2026-06-10 02:25:14 +02:00
|
|
|
await page.waitForTimeout(1000);
|
|
|
|
|
await waitForPaintToSettle(page);
|
2026-04-27 18:55:12 +02:00
|
|
|
|
2025-02-26 17:23:40 +01:00
|
|
|
await checkForScreenshot(
|
|
|
|
|
page,
|
2026-04-27 18:55:12 +02:00
|
|
|
viewportPageObject.grid,
|
2025-04-04 18:11:29 +02:00
|
|
|
screenShotPaths.segHydrationFromMPR.mprAfterSegHydratedAfterLayoutChange
|
2025-02-26 17:23:40 +01:00
|
|
|
);
|
|
|
|
|
});
|