111 lines
3.5 KiB
TypeScript
111 lines
3.5 KiB
TypeScript
import { Page } from '@playwright/test';
|
|
|
|
import { RightPanelPageObject, ViewportPageObject } from './pages';
|
|
import { checkForScreenshot, expect, screenShotPaths, test, visitStudy } from './utils';
|
|
import { press } from './utils/keyboardUtils';
|
|
|
|
test.beforeEach(async ({ page, rightPanelPageObject }) => {
|
|
const studyInstanceUID = '1.3.12.2.1107.5.2.32.35162.30000015050317233592200000046';
|
|
const mode = 'segmentation';
|
|
await visitStudy(page, studyInstanceUID, mode, 2000);
|
|
|
|
await rightPanelPageObject.labelMapSegmentationPanel.addSegmentationButton.click();
|
|
|
|
await page.waitForTimeout(500);
|
|
});
|
|
|
|
async function performDrawingToolInteraction(
|
|
page: Page,
|
|
toolName: string,
|
|
rightPanelPageObject: RightPanelPageObject,
|
|
viewportPageObject: ViewportPageObject
|
|
) {
|
|
const brushRadiusInput = rightPanelPageObject.labelMapSegmentationPanel.tools[toolName].input;
|
|
const circle = viewportPageObject.active.svg('circle').first();
|
|
|
|
await expect(brushRadiusInput).toHaveValue('25');
|
|
await viewportPageObject.active.clickAt([{ x: 275, y: 300 }]);
|
|
let radius = parseFloat(await circle.getAttribute('r'));
|
|
expect(radius).toBeGreaterThanOrEqual(65);
|
|
expect(radius).toBeLessThanOrEqual(68);
|
|
|
|
await page.waitForTimeout(500);
|
|
await press({ page, key: '[', nTimes: 2 });
|
|
await expect(brushRadiusInput).toHaveValue('19');
|
|
await viewportPageObject.active.clickAt([{ x: 500, y: 300 }]);
|
|
radius = parseFloat(await circle.getAttribute('r'));
|
|
expect(radius).toBeGreaterThanOrEqual(49);
|
|
expect(radius).toBeLessThanOrEqual(52);
|
|
|
|
await page.waitForTimeout(500);
|
|
|
|
await press({ page, key: ']', nTimes: 5 });
|
|
await expect(brushRadiusInput).toHaveValue('34');
|
|
await viewportPageObject.active.clickAt([{ x: 275, y: 500 }]);
|
|
radius = parseFloat(await circle.getAttribute('r'));
|
|
expect(radius).toBeGreaterThanOrEqual(87);
|
|
expect(radius).toBeLessThanOrEqual(90);
|
|
|
|
await page.waitForTimeout(500);
|
|
|
|
await brushRadiusInput.fill('42');
|
|
await viewportPageObject.active.clickAt([{ x: 500, y: 500 }]);
|
|
radius = parseFloat(await circle.getAttribute('r'));
|
|
expect(radius).toBeGreaterThanOrEqual(108);
|
|
expect(radius).toBeLessThanOrEqual(111);
|
|
|
|
await page.waitForTimeout(500);
|
|
}
|
|
|
|
test('should resize segmentation brush tool', async ({
|
|
page,
|
|
rightPanelPageObject,
|
|
viewportPageObject,
|
|
}) => {
|
|
await page.getByTestId('Brush-btn').click();
|
|
|
|
await performDrawingToolInteraction(page, 'brush', rightPanelPageObject, viewportPageObject);
|
|
|
|
await checkForScreenshot(
|
|
page,
|
|
viewportPageObject.active.pane,
|
|
screenShotPaths.segDrawingToolsResizing.brushTool
|
|
);
|
|
});
|
|
|
|
test('should resize segmentation eraser tool', async ({
|
|
page,
|
|
rightPanelPageObject,
|
|
viewportPageObject,
|
|
}) => {
|
|
await page.getByTestId('Brush-btn').click();
|
|
|
|
await page.getByTestId('brush-radius').locator('input').fill('99.5');
|
|
await viewportPageObject.active.clickAt([{ x: 400, y: 400 }]);
|
|
|
|
await page.waitForTimeout(500);
|
|
|
|
await page.getByTestId('Eraser-btn').click();
|
|
await page.getByTestId('eraser-radius').locator('input').fill('25');
|
|
|
|
await page.waitForTimeout(500);
|
|
|
|
await performDrawingToolInteraction(page, 'eraser', rightPanelPageObject, viewportPageObject);
|
|
|
|
await checkForScreenshot(
|
|
page,
|
|
viewportPageObject.active.pane,
|
|
screenShotPaths.segDrawingToolsResizing.eraserTool
|
|
);
|
|
});
|
|
|
|
test('should resize segmentation threshold tool', async ({
|
|
page,
|
|
rightPanelPageObject,
|
|
viewportPageObject,
|
|
}) => {
|
|
await page.getByTestId('Threshold-btn').click();
|
|
|
|
await performDrawingToolInteraction(page, 'threshold', rightPanelPageObject, viewportPageObject);
|
|
});
|