diff --git a/tests/SEGHydrationDeleteAndReload.spec.ts b/tests/SEGHydrationDeleteAndReload.spec.ts new file mode 100644 index 000000000..8a1701bad --- /dev/null +++ b/tests/SEGHydrationDeleteAndReload.spec.ts @@ -0,0 +1,67 @@ +import { + checkForScreenshot, + expect, + screenShotPaths, + test, + visitStudy, + waitForViewportRenderCycle, +} from './utils'; + +test.beforeEach(async ({ page }) => { + const studyInstanceUID = '1.3.6.1.4.1.14519.5.2.1.256467663913010332776401703474716742458'; + const mode = 'segmentation'; + await visitStudy(page, studyInstanceUID, mode, 2000); +}); + +test('should fully remove segmentation overlay after repeated load-and-delete cycle', async ({ + page, + DOMOverlayPageObject, + leftPanelPageObject, + rightPanelPageObject, + viewportPageObject, +}) => { + const activeViewport = await viewportPageObject.active; + + await leftPanelPageObject.loadSeriesByModality('SEG'); + + await expect(DOMOverlayPageObject.viewport.segmentationHydration.locator).toBeVisible(); + + let viewportRenderCycle = waitForViewportRenderCycle(page); + await DOMOverlayPageObject.viewport.segmentationHydration.yes.click(); + await viewportRenderCycle; + + viewportRenderCycle = waitForViewportRenderCycle(page); + await rightPanelPageObject.labelMapSegmentationPanel.panel.moreMenu.delete(); + await viewportRenderCycle; + + expect(await rightPanelPageObject.labelMapSegmentationPanel.panel.getSegmentCount()).toBe(0); + + // reload SEG series + viewportRenderCycle = waitForViewportRenderCycle(page); + await leftPanelPageObject.loadSeriesByModality('SEG'); + await viewportRenderCycle; + + await expect(DOMOverlayPageObject.viewport.segmentationHydration.locator).toBeVisible(); + + viewportRenderCycle = waitForViewportRenderCycle(page); + await DOMOverlayPageObject.viewport.segmentationHydration.yes.click(); + await viewportRenderCycle; + + await checkForScreenshot( + page, + activeViewport.pane, + screenShotPaths.segHydrationDeleteAndReload.viewportAfterSecondHydration + ); + + viewportRenderCycle = waitForViewportRenderCycle(page); + await rightPanelPageObject.labelMapSegmentationPanel.panel.moreMenu.delete(); + await viewportRenderCycle; + + expect(await rightPanelPageObject.labelMapSegmentationPanel.panel.getSegmentCount()).toBe(0); + + await checkForScreenshot( + page, + activeViewport.pane, + screenShotPaths.segHydrationDeleteAndReload.viewportAfterSecondDelete + ); +}); diff --git a/tests/screenshots/chromium/SEGHydrationDeleteAndReload.spec.ts/viewportAfterSecondDelete.png b/tests/screenshots/chromium/SEGHydrationDeleteAndReload.spec.ts/viewportAfterSecondDelete.png new file mode 100644 index 000000000..0cb3b0358 Binary files /dev/null and b/tests/screenshots/chromium/SEGHydrationDeleteAndReload.spec.ts/viewportAfterSecondDelete.png differ diff --git a/tests/screenshots/chromium/SEGHydrationDeleteAndReload.spec.ts/viewportAfterSecondHydration.png b/tests/screenshots/chromium/SEGHydrationDeleteAndReload.spec.ts/viewportAfterSecondHydration.png new file mode 100644 index 000000000..c4a232756 Binary files /dev/null and b/tests/screenshots/chromium/SEGHydrationDeleteAndReload.spec.ts/viewportAfterSecondHydration.png differ diff --git a/tests/utils/screenShotPaths.ts b/tests/utils/screenShotPaths.ts index bdab7e700..73cce0481 100644 --- a/tests/utils/screenShotPaths.ts +++ b/tests/utils/screenShotPaths.ts @@ -132,6 +132,10 @@ const screenShotPaths = { segPreHydration: 'segPreHydration.png', segJumpToSegment: 'segJumpToSegment.png', }, + segHydrationDeleteAndReload: { + viewportAfterSecondHydration: 'viewportAfterSecondHydration.png', + viewportAfterSecondDelete: 'viewportAfterSecondDelete.png', + }, segHydrationThenMPR: { segPostHydration: 'segPostHydration.png', segPostHydrationMPRAxialPrimary: 'segPostHydrationMPRAxialPrimary.png',