fix(sr-hydration): enable hydration and arrow navigation for 3D SR measurements (#5887)
Joe is away, so approving based on the code having the requested change, and otherwise looking good/passing tests. * fix(sr-hydration): enable hydration and arrows navigation for 3D SR measurements * test: add automated test for SR measurement navigation with arrows after hydration * add cross-study warning in the 3D branch * test: address reviewer feedback for the test * fix: support 3D and 2D annotations for SR hydration * test: improve navigation to first image --------- Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>
This commit is contained in:
1 parent
40a472a9b1
commit
7a38903b19
2 files changed
+178
-34
No files matched your search
@@ -0,0 +1,94 @@
|
||||
import { expect, navigateWithViewportArrow, test, visitStudy } from './utils';
|
||||
import { expectRowSelected } from './utils/assertions';
|
||||
import { press } from './utils/keyboardUtils';
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
const studyInstanceUID = '1.3.6.1.4.1.14519.5.2.1.7310.5101.860473186348887719777907797922';
|
||||
const mode = 'viewer';
|
||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||
});
|
||||
|
||||
test('should navigate SR measurements with next/prev arrows after hydration for 3D SR', async ({
|
||||
page,
|
||||
DOMOverlayPageObject,
|
||||
leftPanelPageObject,
|
||||
rightPanelPageObject,
|
||||
viewportPageObject,
|
||||
}) => {
|
||||
await rightPanelPageObject.toggle();
|
||||
await rightPanelPageObject.measurementsPanel.select();
|
||||
await leftPanelPageObject.loadSeriesByModality('SR');
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
await DOMOverlayPageObject.viewport.segmentationHydration.yes.click();
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
const measurementCount = await rightPanelPageObject.measurementsPanel.panel.getMeasurementCount();
|
||||
expect(measurementCount).toBeGreaterThan(1);
|
||||
|
||||
// Navigate to first image
|
||||
await viewportPageObject.active.pane.click();
|
||||
await press({ page, key: 'Home' });
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
// first arrow click should navigate to second measurement
|
||||
await navigateWithViewportArrow(viewportPageObject, 'next');
|
||||
|
||||
await expectRowSelected(rightPanelPageObject.measurementsPanel.panel.nthMeasurement(1));
|
||||
|
||||
await expect(viewportPageObject.active.svg('circle')).toBeVisible();
|
||||
|
||||
const secondAnnotation = viewportPageObject.active.nthAnnotation(0);
|
||||
await expect(secondAnnotation.locator).toBeVisible();
|
||||
await expect(secondAnnotation.text.locator).toBeVisible();
|
||||
|
||||
// navigate back to first measurement
|
||||
await navigateWithViewportArrow(viewportPageObject, 'prev');
|
||||
|
||||
await expectRowSelected(rightPanelPageObject.measurementsPanel.panel.nthMeasurement(0));
|
||||
|
||||
await expect(viewportPageObject.active.svg('circle')).toBeVisible();
|
||||
|
||||
const firstAnnotation = viewportPageObject.active.nthAnnotation(0);
|
||||
await expect(firstAnnotation.locator).toBeVisible();
|
||||
await expect(firstAnnotation.text.locator).toBeVisible();
|
||||
});
|
||||
|
||||
test('should keep arrows visible and functional after clicking measurement in right panel', async ({
|
||||
page,
|
||||
DOMOverlayPageObject,
|
||||
leftPanelPageObject,
|
||||
rightPanelPageObject,
|
||||
viewportPageObject,
|
||||
}) => {
|
||||
await rightPanelPageObject.toggle();
|
||||
await rightPanelPageObject.measurementsPanel.select();
|
||||
await leftPanelPageObject.loadSeriesByModality('SR');
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
await DOMOverlayPageObject.viewport.segmentationHydration.yes.click();
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
const measurementCount = await rightPanelPageObject.measurementsPanel.panel.getMeasurementCount();
|
||||
expect(measurementCount).toBeGreaterThan(1);
|
||||
|
||||
// click on first measurement
|
||||
await rightPanelPageObject.measurementsPanel.panel.nthMeasurement(0).click();
|
||||
|
||||
await expect(viewportPageObject.active.nthAnnotation(0).locator).toBeVisible();
|
||||
|
||||
await expect(viewportPageObject.active.navigationArrows.next.button).toBeVisible();
|
||||
await expect(viewportPageObject.active.navigationArrows.prev.button).toBeVisible();
|
||||
|
||||
// navigate to second measurement
|
||||
await navigateWithViewportArrow(viewportPageObject, 'next');
|
||||
|
||||
await expectRowSelected(rightPanelPageObject.measurementsPanel.panel.nthMeasurement(1));
|
||||
await expect(viewportPageObject.active.nthAnnotation(0).locator).toBeVisible();
|
||||
|
||||
// navigate back to first measurement
|
||||
await navigateWithViewportArrow(viewportPageObject, 'prev');
|
||||
|
||||
await expectRowSelected(rightPanelPageObject.measurementsPanel.panel.nthMeasurement(0));
|
||||
await expect(viewportPageObject.active.nthAnnotation(0).locator).toBeVisible();
|
||||
});
|
||||
Reference in new issue
Block a user