fix: Integration test instability (#3597)

There are a couple of changes here which should improve stability of the tests.  Hopefully that will be sufficient, but it is difficult to tell for sure if it is complete.
This commit is contained in:
Bill Wallace 2023-08-15 07:20:45 -04:00 committed by GitHub
parent 799d0793fd
commit 884577a23d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 51 additions and 40 deletions

1
.gitmodules vendored
View File

@ -1,3 +1,4 @@
[submodule "testdata"]
path = testdata
url = https://github.com/OHIF/viewer-testdata-dicomweb.git
branch = main

View File

@ -54,12 +54,11 @@ export default async function init({
},
});
// For debugging large datasets
const MAX_CACHE_SIZE_1GB = 1073741824;
const maxCacheSize = appConfig.maxCacheSize;
cornerstone.cache.setMaxCacheSize(
maxCacheSize ? maxCacheSize : MAX_CACHE_SIZE_1GB
);
// For debugging large datasets, otherwise prefer the defaults
const { maxCacheSize } = appConfig;
if (maxCacheSize) {
cornerstone.cache.setMaxCacheSize(maxCacheSize);
}
initCornerstoneTools();

View File

@ -259,8 +259,9 @@ function TrackedCornerstoneViewport(props) {
patientAge: PatientAge || '',
MRN: PatientID || '',
thickness: SliceThickness
? `${parseFloat(SliceThickness).toFixed(2)}mm`
? `${parseFloat(SliceThickness).toFixed(2)}`
: '',
thicknessUnits: 'mm',
spacing:
SpacingBetweenSlices !== undefined
? `${parseFloat(SpacingBetweenSlices).toFixed(2)}mm`

View File

@ -8,6 +8,7 @@ describe('OHIF Measurement Panel', function() {
cy.initCommonElementsAliases();
cy.initCornerstoneToolsAliases();
cy.resetViewport().wait(50);
cy.waitDicomImage();
});
it('checks if Measurements right panel can be hidden/displayed', function() {

View File

@ -56,14 +56,14 @@ Cypress.Commands.add('openStudy', PatientName => {
Cypress.Commands.add(
'checkStudyRouteInViewer',
(StudyInstanceUID, otherParams = '') => {
(StudyInstanceUID, otherParams = '', mode = '/basic-test') => {
cy.location('pathname').then($url => {
cy.log($url);
if (
$url === 'blank' ||
!$url.includes(`/basic-test/${StudyInstanceUID}${otherParams}`)
!$url.includes(`${mode}/${StudyInstanceUID}${otherParams}`)
) {
cy.openStudyInViewer(StudyInstanceUID, otherParams);
cy.openStudyInViewer(StudyInstanceUID, otherParams, mode);
cy.waitDicomImage();
// Very short wait to ensure pending updates are handled
cy.wait(25);
@ -74,8 +74,8 @@ Cypress.Commands.add(
Cypress.Commands.add(
'openStudyInViewer',
(StudyInstanceUID, otherParams = '') => {
cy.visit(`/basic-test?StudyInstanceUIDs=${StudyInstanceUID}${otherParams}`);
(StudyInstanceUID, otherParams = '', mode = '/basic-test') => {
cy.visit(`${mode}?StudyInstanceUIDs=${StudyInstanceUID}${otherParams}`);
}
);
@ -156,13 +156,13 @@ Cypress.Commands.add('addLine', (viewport, firstClick, secondClick) => {
const [x1, y1] = firstClick;
const [x2, y2] = secondClick;
// TODO: Added a wait which appears necessary in Cornerstone Tools >4?
// The wait is necessary because of double click testing
cy.wrap($viewport)
.click(x1, y1, { force: true })
.wait(100)
.click(x1, y1)
.wait(250)
.trigger('mousemove', { clientX: x2, clientY: y2 })
.click(x2, y2, { force: true })
.wait(100);
.click(x2, y2)
.wait(250);
});
});
@ -202,28 +202,33 @@ Cypress.Commands.add('expectMinimumThumbnails', (seriesToWait = 1) => {
});
//Command to wait DICOM image to load into the viewport
Cypress.Commands.add('waitDicomImage', () => {
cy.window()
.its('cornerstone')
.should($cornerstone => {
const enabled = $cornerstone.getEnabledElements();
if (enabled?.length) {
enabled.forEach((item, i) => {
if (
item.viewport.viewportStatus !==
$cornerstone.Enums.ViewportStatus.RENDERED
) {
throw new Error(
`Viewport ${i} in state ${item.viewport.viewportStatus}`
);
}
});
} else {
throw new Error('No enabled elements');
}
});
cy.log('DICOM image loaded');
});
Cypress.Commands.add(
'waitDicomImage',
(mode = '/basic-test', timeout = 50000) => {
cy.window()
.its('cornerstone')
.should($cornerstone => {
const enabled = $cornerstone.getEnabledElements();
if (enabled?.length) {
enabled.forEach((item, i) => {
if (
item.viewport.viewportStatus !==
$cornerstone.Enums.ViewportStatus.RENDERED
) {
throw new Error(
`Viewport ${i} in state ${item.viewport.viewportStatus}`
);
}
});
} else {
throw new Error('No enabled elements');
}
});
// This shouldn't be necessary, but seems to be.
cy.wait(250);
cy.log('DICOM image loaded');
}
);
//Command to reset and clear all the changes made to the viewport
Cypress.Commands.add('resetViewport', () => {
@ -237,6 +242,7 @@ Cypress.Commands.add('resetViewport', () => {
Cypress.Commands.add('imageZoomIn', () => {
cy.initCornerstoneToolsAliases();
cy.get('@zoomBtn').click();
cy.wait(25);
//drags the mouse inside the viewport to be able to interact with series
cy.get('@viewport')
@ -248,6 +254,7 @@ Cypress.Commands.add('imageZoomIn', () => {
Cypress.Commands.add('imageContrast', () => {
cy.initCornerstoneToolsAliases();
cy.get('@wwwcBtnPrimary').click();
cy.wait(25);
//drags the mouse inside the viewport to be able to interact with series
cy.get('@viewport')
@ -295,7 +302,9 @@ Cypress.Commands.add(
Cypress.Commands.add(
'addAngleMeasurement',
(initPos = [180, 390], midPos = [300, 410], finalPos = [180, 450]) => {
cy.get('[data-cy="MeasurementTools-split-button-secondary"]').click();
cy.get('[data-cy="Angle"]').click();
cy.addAngle('.viewport-element', initPos, midPos, finalPos);
}
);

@ -1 +1 @@
Subproject commit 4d59660c2883ed749a680e5fb6d4624ab54c9422
Subproject commit da63adc206455ce860b87c6fe723d71fb415a891