Test: Playwright tests for tmtv (#4331)

Co-authored-by: Ibrahim <93064150+IbrahimCSAE@users.noreply.github.com>
Co-authored-by: Ibrahim <ibrahim.mdev@gmail.com>
This commit is contained in:
authored and GitHub committed 2024-08-15 21:57:04 -04:00
1 parent 4068488bb2
commit b2c0faf29d
13 files changed
+294 -13

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
const clearAllAnnotations = async page => {
await page.evaluate(
({ cornerstoneTools }: AppTypes.Test) => {
cornerstoneTools.annotation.state.removeAllAnnotations();
},
await page.evaluateHandle('window')
);
};
export { clearAllAnnotations };
+15
View File
@@ -0,0 +1,15 @@
const getSUV = async page => {
const SUV = await page.evaluate(
({ services }: AppTypes.Test) => {
const { measurementService } = services;
const measurements = measurementService.getMeasurements();
const displayText = measurements[0].displayText;
return displayText[2];
},
await page.evaluateHandle('window')
);
return SUV;
};
export { getSUV };
+27
View File
@@ -0,0 +1,27 @@
const getTMTVModalityUnit = async (page, attempts = 20) => {
for (let i = 0; i < attempts; i++) {
try {
const modalityUnit = await page.evaluate(
({ cornerstoneTools }: AppTypes.Test) => {
const annotations = cornerstoneTools.annotation.state.getAllAnnotations();
const stats = annotations[0].data.cachedStats;
const targetIds = Object.keys(stats);
const targetStats = stats[targetIds[1]];
return targetStats.modalityUnit;
},
await page.evaluateHandle('window')
);
if (modalityUnit) {
return modalityUnit;
}
} catch (error) {
console.error('Failed to get modalityUnit', error);
}
await new Promise(resolve => setTimeout(resolve, 1000));
}
throw new Error('Failed to get modalityUnit after multiple attempts');
};
export { getTMTVModalityUnit };
+17 -2
View File
@@ -4,6 +4,21 @@ import { screenShotPaths } from './screenShotPaths';
import { simulateClicksOnElement } from './simulateClicksOnElement';
import { reduce3DViewportSize } from './reduce3DviewportSize';
import { getMousePosition, initilizeMousePositionTracker } from './mouseUtils';
import { getSUV } from './getSUV';
import { getTMTVModalityUnit } from './getTMTVModalityUnit';
import { clearAllAnnotations } from './clearAllAnnotations';
import { scrollVolumeViewport } from './scrollVolumeViewport';
export { visitStudy, checkForScreenshot, screenShotPaths, simulateClicksOnElement, reduce3DViewportSize, getMousePosition, initilizeMousePositionTracker };
export {
visitStudy,
checkForScreenshot,
screenShotPaths,
simulateClicksOnElement,
reduce3DViewportSize,
getMousePosition,
initilizeMousePositionTracker,
getSUV,
getTMTVModalityUnit,
clearAllAnnotations,
scrollVolumeViewport,
};
+12 -8
View File
@@ -1,9 +1,13 @@
export const reduce3DViewportSize = async (page: any) => {
await page.evaluate(({ cornerstone }: AppTypes.Test) => {
const enabledElement = cornerstone.getEnabledElements().filter(element => element.viewport.type === 'volume3d')[0]
const { viewport } = enabledElement;
viewport.setZoom(0.5);
viewport.render()
}, await page.evaluateHandle('window'));
}
await page.evaluate(
({ cornerstone }: AppTypes.Test) => {
const enabledElement = cornerstone
.getEnabledElements()
.filter(element => element.viewport.type === 'volume3d')[0];
const { viewport } = enabledElement;
viewport.setZoom(0.5);
viewport.render();
},
await page.evaluateHandle('window')
);
};
+4 -1
View File
@@ -86,7 +86,10 @@ const screenShotPaths = {
crosshairsSlabThickness: 'crosshairsSlabThickness.png',
crosshairsResetToolbar: 'crosshairsResetToolbar.png',
crosshairsNewDisplayset: 'crosshairsNewDisplayset.png',
}
},
tmtvRendering: {
tmtvDisplayedCorrectly: 'tmtvDisplayedCorrectly.png',
},
};
export { screenShotPaths };
+17
View File
@@ -0,0 +1,17 @@
type scrollVolumeViewportType = {
viewportId: string;
delta: number;
};
const scrollVolumeViewport = async (page, viewportId, delta) => {
await page.evaluate(
({ services, viewportId, delta }: withTestTypes<scrollVolumeViewportType>) => {
const { cornerstoneViewportService } = services;
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId) as any;
viewport.scroll(delta);
},
{ viewportId, delta, services: await page.evaluateHandle('window.services') }
);
};
export { scrollVolumeViewport };