diff --git a/platform/ui/src/components/content/viewportDownloadForm/ViewportDownloadForm.js b/platform/ui/src/components/content/viewportDownloadForm/ViewportDownloadForm.js
index 75100dc7a..680d08f91 100644
--- a/platform/ui/src/components/content/viewportDownloadForm/ViewportDownloadForm.js
+++ b/platform/ui/src/components/content/viewportDownloadForm/ViewportDownloadForm.js
@@ -196,11 +196,12 @@ const ViewportDownloadForm = ({
)}
-
+
setFilename(event.target.value)}
label={t('File name')}
@@ -233,6 +236,7 @@ const ViewportDownloadForm = ({
-
+
{t('Image Preview')}
-
-
+
{t('Download')}
diff --git a/platform/ui/src/components/ohifModal/OHIFModal.js b/platform/ui/src/components/ohifModal/OHIFModal.js
index 5c6b18633..3f9302ced 100644
--- a/platform/ui/src/components/ohifModal/OHIFModal.js
+++ b/platform/ui/src/components/ohifModal/OHIFModal.js
@@ -29,7 +29,7 @@ const OHIFModal = ({
const renderHeader = () => {
return (
title && (
-
+
{title}
{closeButton && (
@@ -44,6 +44,7 @@ const OHIFModal = ({
return (
<>
{renderHeader()}
- {children}
+
+ {children}
+
>
);
diff --git a/platform/viewer/cypress/integration/common/OHIFCornerstoneHotkeys.spec.js b/platform/viewer/cypress/integration/common/OHIFCornerstoneHotkeys.spec.js
index 6953a836e..fc67063e7 100644
--- a/platform/viewer/cypress/integration/common/OHIFCornerstoneHotkeys.spec.js
+++ b/platform/viewer/cypress/integration/common/OHIFCornerstoneHotkeys.spec.js
@@ -81,10 +81,8 @@ describe('OHIF Cornerstone Hotkeys', () => {
});
it('uses hotkeys "RightArrow" and "LeftArrow" to navigate between multiple viewports', () => {
- //Click on Layout button
- cy.get('@layoutBtn').click();
- //Select 3 viewports
- cy.get('tbody > :nth-child(1) > :nth-child(3)').click();
+ //Select viewport layout (3,1)
+ cy.setLayout(3, 1);
cy.waitViewportImageLoading();
// Press multiples hotkeys on viewport #1
diff --git a/platform/viewer/cypress/integration/common/OHIFDownloadSnapshotFile.spec.js b/platform/viewer/cypress/integration/common/OHIFDownloadSnapshotFile.spec.js
new file mode 100644
index 000000000..af5d4b6f1
--- /dev/null
+++ b/platform/viewer/cypress/integration/common/OHIFDownloadSnapshotFile.spec.js
@@ -0,0 +1,126 @@
+describe('OHIF Download Snapshot File', () => {
+ before(() => {
+ cy.openStudy('MISTER^MR');
+ cy.waitDicomImage();
+ cy.expectMinimumThumbnails(5);
+ });
+
+ beforeEach(() => {
+ cy.openDownloadImageModal();
+ });
+
+ afterEach(() => {
+ // Close modal
+ cy.get('[data-cy="close-button"]')
+ .scrollIntoView()
+ .click();
+ });
+
+ it('checks displayed information for Tablet experience', function() {
+ // Set Tablet resolution
+ cy.viewport(1000, 660);
+ // Visual comparison
+ cy.screenshot('Download Image Modal - Tablet experience');
+ cy.percyCanvasSnapshot('Download Image Modal - Tablet experience');
+ });
+
+ it('checks displayed information for Desktop experience', function() {
+ // Set Desktop resolution
+ cy.viewport(1750, 720);
+ // Visual comparison
+ cy.screenshot('Download Image Modal - Desktop experience');
+ cy.percyCanvasSnapshot('Download Image Modal - Desktop experience');
+ //Check if all elements are displayed
+ cy.get('[data-cy=modal-header]')
+ .as('downloadImageModal')
+ .should('contain.text', 'Download High Quality Image');
+ // Check input fields
+ cy.get('[data-cy=file-type]')
+ .select('png')
+ .should('have.value', 'png')
+ .select('jpg')
+ .should('have.value', 'jpg');
+ // Check image preview
+ cy.get('[data-cy="image-preview"]').should('contain.text', 'Image Preview');
+ cy.get('[data-cy="viewport-preview-img"]')
+ .should('have.attr', 'src')
+ .and('include', 'data:image');
+ // Check buttons
+ cy.get('[data-cy="cancel-btn"]')
+ .scrollIntoView()
+ .should('be.visible');
+ cy.get('[data-cy="download-btn"]')
+ .scrollIntoView()
+ .should('be.visible');
+ });
+
+ it('cancel changes on download modal', function() {
+ //Change Image Width, Filename and File Type
+ cy.get('[data-cy="image-width"]')
+ .clear()
+ .type('300');
+ cy.get('[data-cy="image-height"]') //Image Height should be the same as width
+ .should('have.value', '300');
+ cy.get('[data-cy="file-name"]')
+ .clear()
+ .type('new-filename');
+ cy.get('[data-cy=file-type]').select('png');
+ //Click on Cancel button
+ cy.get('[data-cy="cancel-btn"]')
+ .scrollIntoView()
+ .click();
+ //Check modal is closed
+ cy.get('[data-cy="modal"]').should('not.exist');
+ //Open Modal
+ cy.openDownloadImageModal();
+ //Verify default values was restored
+ cy.get('[data-cy="image-width"]').should('have.value', '512');
+ cy.get('[data-cy="file-name"]').should('have.value', 'image');
+ cy.get('[data-cy=file-type]').should('have.value', 'jpg');
+ });
+
+ // TO-DO once issue is fixed: https://github.com/OHIF/Viewers/issues/1217
+ // it('checks error messages for empty fields', function() {
+ // //Clear fields Image Width and Filename
+ // cy.get('[data-cy="image-width"]')
+ // .clear();
+ // cy.get('[data-cy="file-name"]').clear();
+
+ // //Click on Download button
+ // cy.get('[data-cy="download-btn"]')
+ // .scrollIntoView()
+ // .click();
+ // //Check error message
+ // });
+
+ it('checks if "Show Annotations" checkbox will display annotations', function() {
+ // Close modal that is initially opened
+ cy.get('[data-cy="close-button"]').click();
+
+ // Add measurements in the viewport
+ cy.addLengthMeasurement();
+ cy.addAngleMeasurement();
+
+ // Open Modal
+ cy.openDownloadImageModal();
+ // Select "Show Annotations" option
+ cy.get('[data-cy="show-annotations"]').check();
+ // Check image preview
+ cy.get('[data-cy="image-preview"]').scrollIntoView();
+ // Visual comparison
+ cy.screenshot('Download Image Modal - Show Annotations checked');
+ cy.percyCanvasSnapshot('Download Image Modal - Show Annotations checked');
+ //Compare classes that exists on Image Preview with Annotations and Without Annotation
+ cy.get('[data-cy="modal-content"]')
+ .find('canvas')
+ .should('have.class', 'magnifyTool'); //Class "MagnifyTool" exists with annotations displayed on Image preview
+ // Uncheck "Show Annotations" option
+ cy.get('[data-cy="show-annotations"]')
+ .uncheck()
+ .wait(300);
+ // Check that class "MagnifyTool" should not exist
+ cy.get('[data-cy="modal-content"]')
+ .find('canvas')
+ .should('not.have.class', 'magnifyTool');
+ });
+});
diff --git a/platform/viewer/cypress/support/aliases.js b/platform/viewer/cypress/support/aliases.js
index 50fa2f370..95a30f085 100644
--- a/platform/viewer/cypress/support/aliases.js
+++ b/platform/viewer/cypress/support/aliases.js
@@ -11,6 +11,7 @@ export function initCornerstoneToolsAliases() {
cy.get('.ToolbarRow > :nth-child(10)').as('cineBtn');
cy.get('.expandableToolMenu').as('moreBtn');
cy.get('.btn-group > .toolbar-button').as('layoutBtn');
+ cy.get('.viewport-element').as('viewport');
}
//Creating aliases for Common page elements
diff --git a/platform/viewer/cypress/support/commands.js b/platform/viewer/cypress/support/commands.js
index 3843c5ec5..cd8b7a255 100644
--- a/platform/viewer/cypress/support/commands.js
+++ b/platform/viewer/cypress/support/commands.js
@@ -469,6 +469,18 @@ Cypress.Commands.add(
}
);
+Cypress.Commands.add('openDownloadImageModal', () => {
+ // Click on More button
+ cy.get('.expandableToolMenu')
+ .as('moreBtn')
+ .click();
+
+ // Click on Download button
+ cy.get('.tooltip-inner > :nth-child(13)')
+ .as('downloadBtn')
+ .click();
+});
+
Cypress.Commands.add('setLanguage', (language, save = true) => {
cy.openPreferences();