ohif-viewer/tests/DicomTagBrowser.spec.ts

145 lines
4.5 KiB
TypeScript

import {
checkForScreenshot,
screenShotPaths,
test,
visitStudy,
expect,
waitForViewportsRendered,
} from './utils';
import { assertBoundingBoxIsContainedWithin } from './utils/assertions';
async function expectSelectedSeriesExistsInOptions(seriesSelect) {
const selectedSeriesLabel = (await seriesSelect.value.innerText()).trim();
await seriesSelect.click();
const optionCount = await seriesSelect.options.count();
let hasMatchingOption = false;
for (let index = 0; index < optionCount; index++) {
const optionText = (await seriesSelect.options.nth(index).innerText()).split('\n')[0].trim();
if (optionText === selectedSeriesLabel) {
hasMatchingOption = true;
break;
}
}
await expect(hasMatchingOption).toBeTruthy();
}
test('should display the dicom tag browser', async ({ page, mainToolbarPageObject }) => {
const studyInstanceUID = '1.3.6.1.4.1.25403.345050719074.3824.20170125095438.5';
const mode = 'viewer';
await visitStudy(page, studyInstanceUID, mode, 2000);
await mainToolbarPageObject.moreTools.tagBrowser.click();
await checkForScreenshot(
page,
page,
screenShotPaths.dicomTagBrowser.dicomTagBrowserDisplayedCorrectly
);
});
test('should render the scroll bar with the correct look-and-feel', async ({
page,
mainToolbarPageObject,
DOMOverlayPageObject,
}) => {
const studyInstanceUID = '1.3.6.1.4.1.25403.345050719074.3824.20170125095438.5';
const mode = 'viewer';
await visitStudy(page, studyInstanceUID, mode, 2000);
await mainToolbarPageObject.moreTools.tagBrowser.click();
const dicomTagBrowser = DOMOverlayPageObject.dialog.dicomTagBrowser;
await dicomTagBrowser.waitVisible();
await checkForScreenshot({
page,
normalizedClip: { x: 0.77, y: 0.25, width: 0.03, height: 0.75 },
screenshotPath: screenShotPaths.dicomTagBrowser.scrollBarRenderedProperly,
});
});
test('should display the long series name properly within the series select button', async ({
page,
mainToolbarPageObject,
DOMOverlayPageObject,
}) => {
const studyInstanceUID = '1.3.6.1.4.1.14519.5.2.1.5099.8010.217836670708542506360829799868';
const mode = 'viewer';
await visitStudy(page, studyInstanceUID, mode, 2000);
await mainToolbarPageObject.moreTools.tagBrowser.click();
const dicomTagBrowser = DOMOverlayPageObject.dialog.dicomTagBrowser;
await dicomTagBrowser.waitVisible();
const seriesSelect = dicomTagBrowser.seriesSelect;
const selectedOptionText = await seriesSelect.selectOption(6);
await expect(seriesSelect.value).toContainText(selectedOptionText);
const triggerBox = await seriesSelect.trigger.boundingBox();
const textBox = await seriesSelect.value.boundingBox();
await assertBoundingBoxIsContainedWithin({
innerBox: textBox,
outerBox: triggerBox,
innerBoxLabel: 'text',
outerBoxLabel: 'trigger',
});
});
test('should open DICOM Tag Browser from empty viewport and show default series', async ({
page,
mainToolbarPageObject,
viewportPageObject,
DOMOverlayPageObject,
}) => {
const studyInstanceUID = '1.3.6.1.4.1.25403.345050719074.3824.20170125095258.1';
const mode = 'viewer';
await visitStudy(page, studyInstanceUID, mode, 2000);
// Switch to 3x3 layout
await mainToolbarPageObject.layoutSelection.click();
await page.getByTestId('Layout-2-2').click();
await waitForViewportsRendered(page);
await viewportPageObject.getNthLocator(6).click();
await mainToolbarPageObject.moreTools.tagBrowser.click();
const dicomTagBrowser = DOMOverlayPageObject.dialog.dicomTagBrowser;
await dicomTagBrowser.waitVisible();
const seriesSelect = dicomTagBrowser.seriesSelect;
await expectSelectedSeriesExistsInOptions(seriesSelect);
});
test('should open DICOM Tag Browser with active viewport series when viewport has display set', async ({
page,
mainToolbarPageObject,
viewportPageObject,
DOMOverlayPageObject,
}) => {
const studyInstanceUID = '1.3.6.1.4.1.25403.345050719074.3824.20170125095258.1';
const mode = 'viewer';
await visitStudy(page, studyInstanceUID, mode, 2000);
await mainToolbarPageObject.layoutSelection.click();
await page.getByTestId('Layout-2-2').click();
await waitForViewportsRendered(page);
await (await viewportPageObject.getNth(2)).pane.click();
await mainToolbarPageObject.moreTools.tagBrowser.click();
const dicomTagBrowser = DOMOverlayPageObject.dialog.dicomTagBrowser;
await dicomTagBrowser.waitVisible();
const seriesSelect = dicomTagBrowser.seriesSelect;
await expectSelectedSeriesExistsInOptions(seriesSelect);
});