test: Study list test cases: Patient Name, MRN, Modality, Description (#1121)
* Study list tests: Patient Name, MRN, Modality, Description * Fixed field selector * Desktop tests * Fix for study list * Added tablet tests and small refactor on aliases * Fix based on reviews
This commit is contained in:
parent
05802a3cf1
commit
19b22c39ae
199
platform/viewer/cypress/integration/common/OHIFStudyList.spec.js
Normal file
199
platform/viewer/cypress/integration/common/OHIFStudyList.spec.js
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
describe('OHIF Study List', function() {
|
||||||
|
context('Desktop resolution', function() {
|
||||||
|
beforeEach(function() {
|
||||||
|
cy.viewport(1750, 720);
|
||||||
|
cy.openStudyList();
|
||||||
|
cy.initStudyListAliasesOnDesktop();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches Patient Name with exact string', function() {
|
||||||
|
cy.get('@patientName').type('Juno');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(2);
|
||||||
|
expect($list).to.contain('Juno');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches MRN with exact string', function() {
|
||||||
|
cy.get('@MRN').type('ProstateX-0000');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(2);
|
||||||
|
expect($list).to.contain('ProstateX-0000');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches Accession with exact string', function() {
|
||||||
|
cy.get('@accessionNumber').type('fpcben98890');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(1);
|
||||||
|
expect($list).to.contain('fpcben98890');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches Modality with camel case', function() {
|
||||||
|
cy.get('@modalities').type('Mr');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(17);
|
||||||
|
expect($list).to.contain('MR');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches Description with exact string', function() {
|
||||||
|
cy.get('@studyDescription').type('CHEST');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(2);
|
||||||
|
expect($list).to.contain('CHEST');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('changes rows per page and checks the study count', function() {
|
||||||
|
//Show rows per page options
|
||||||
|
const pageRows = [25, 50, 100];
|
||||||
|
|
||||||
|
//Check all options of rows
|
||||||
|
pageRows.forEach(numRows => {
|
||||||
|
cy.get('select').select(numRows.toString()); //Select rows per page option
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList().then(() => {
|
||||||
|
//Compare the search result with the Study Count on the table header
|
||||||
|
cy.get('@studyCount')
|
||||||
|
.should($studyCount => {
|
||||||
|
expect(parseInt($studyCount.text())).to.be.at.most(numRows); //less than or equals to
|
||||||
|
})
|
||||||
|
.then($studyCount => {
|
||||||
|
//Compare to the number of rows in the search result
|
||||||
|
cy.get('@searchResult').then($searchResult => {
|
||||||
|
let countResults = $searchResult.length;
|
||||||
|
expect($studyCount.text()).to.be.eq(countResults.toString());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//TO-TO: This test should be uncommented once issue #1120 is fixed:
|
||||||
|
//https://github.com/OHIF/Viewers/issues/1120
|
||||||
|
// it('filter study list by Study Date', function() {
|
||||||
|
// //Type Start and End dates
|
||||||
|
// cy.get('@studyListStartDate').type('01/01/2000');
|
||||||
|
// cy.get('@studyListEndDate').type('01/01/2019');
|
||||||
|
// //Display all results into one page
|
||||||
|
// cy.get('select').select('100');
|
||||||
|
// //Checks if all expected results are displayed
|
||||||
|
// //Wait result list to be displayed
|
||||||
|
// cy.waitStudyList();
|
||||||
|
// cy.get('@searchResult').should($list => {
|
||||||
|
// expect($list.length).to.be.eq(42);
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
});
|
||||||
|
|
||||||
|
context('Tablet resolution', function() {
|
||||||
|
beforeEach(function() {
|
||||||
|
cy.viewport(1000, 660);
|
||||||
|
cy.openStudyList();
|
||||||
|
cy.initStudyListAliasesOnTablet();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches Patient Name with exact string', function() {
|
||||||
|
cy.get('@patientNameOrMRN').type('Juno');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(2);
|
||||||
|
expect($list).to.contain('Juno');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches MRN with with exact string', function() {
|
||||||
|
cy.get('@patientNameOrMRN').type('ProstateX-0000');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(2);
|
||||||
|
expect($list).to.contain('ProstateX-0000');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches Modality with exact string', function() {
|
||||||
|
cy.get('@accessionModalityDescription').type('MR');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(17);
|
||||||
|
expect($list).to.contain('MR');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches Accession with exact string', function() {
|
||||||
|
cy.get('@accessionModalityDescription').type('fpcben98890');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(1);
|
||||||
|
expect($list).to.contain('fpcben98890');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('searches Description with exact string', function() {
|
||||||
|
cy.get('@accessionModalityDescription').type('CHEST');
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList();
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list.length).to.be.eq(2);
|
||||||
|
expect($list).to.contain('CHEST');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('changes rows per page and checks the study count', function() {
|
||||||
|
//Show rows per page options
|
||||||
|
const pageRows = [25, 50, 100];
|
||||||
|
|
||||||
|
//Check all options of rows
|
||||||
|
pageRows.forEach(numRows => {
|
||||||
|
cy.get('select').select(numRows.toString()); //Select rows per page option
|
||||||
|
//Wait result list to be displayed
|
||||||
|
cy.waitStudyList().then(() => {
|
||||||
|
//Compare the search result with the Study Count on the table header
|
||||||
|
cy.get('@studyCount')
|
||||||
|
.should($studyCount => {
|
||||||
|
expect(parseInt($studyCount.text())).to.be.at.most(numRows); //less than or equals to
|
||||||
|
})
|
||||||
|
.then($studyCount => {
|
||||||
|
//Compare to the number of rows in the search result
|
||||||
|
cy.get('@searchResult').then($searchResult => {
|
||||||
|
let countResults = $searchResult.length;
|
||||||
|
expect($studyCount.text()).to.be.eq(countResults.toString());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//TO-TO: This test should be uncommented once issue #1120 is fixed:
|
||||||
|
//https://github.com/OHIF/Viewers/issues/1120
|
||||||
|
// it('filter study list by Study Date', function() {
|
||||||
|
// //Type Start and End dates
|
||||||
|
// cy.get('@studyListStartDate').type('01/01/2000');
|
||||||
|
// cy.get('@studyListEndDate').type('01/01/2019');
|
||||||
|
// //Display all results into one page
|
||||||
|
// cy.get('select').select('100');
|
||||||
|
// //Checks if all expected results are displayed
|
||||||
|
// //Wait result list to be displayed
|
||||||
|
// cy.waitStudyList();
|
||||||
|
// cy.get('@searchResult').should($list => {
|
||||||
|
// expect($list.length).to.be.eq(42);
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -72,30 +72,26 @@ describe('OHIF Study Viewer Page', function() {
|
|||||||
cy.get('@measurementsPanel').should('not.be.enabled');
|
cy.get('@measurementsPanel').should('not.be.enabled');
|
||||||
});
|
});
|
||||||
|
|
||||||
//TO-DO: Test case will fail due to issue #1013: https://github.com/OHIF/Viewers/issues/1013
|
it('checks if Description can be added to measurement item under Measurements panel', () => {
|
||||||
|
cy.addLengthMeasurement(); //Adding measurement in the viewport
|
||||||
|
cy.get('@measurementsBtn').click();
|
||||||
|
cy.get('.measurementItem').click();
|
||||||
|
|
||||||
// it('checks if Description can be added to measurement item under Measurements panel', () => {
|
// Click "Description"
|
||||||
// cy.addLengthMeasurement(); //Adding measurement in the viewport
|
cy.get('.btnAction')
|
||||||
// cy.get('@measurementsBtn').click();
|
.contains('Description')
|
||||||
// cy.get('.measurementItem').click();
|
.click();
|
||||||
//
|
|
||||||
// // Click "Description"
|
// Enter description text
|
||||||
// cy.get('.btnAction')
|
const descriptionText = 'Adding text for description test';
|
||||||
// .contains('Description')
|
cy.get('#description').type(descriptionText);
|
||||||
// .click();
|
|
||||||
//
|
// Confirm
|
||||||
// // Enter description text
|
cy.get('.btn-confirm').click();
|
||||||
// const descriptionText = 'Adding text for description test';
|
|
||||||
// cy.get('#description')
|
//Verify if descriptionText was added
|
||||||
// .type(descriptionText);
|
cy.get('.measurementLocation').should('contain.text', descriptionText);
|
||||||
//
|
});
|
||||||
// // Confirm
|
|
||||||
// cy.get('.btn-confirm').click();
|
|
||||||
//
|
|
||||||
// //Verify if descriptionText was added
|
|
||||||
// cy.get('.measurementLocation')
|
|
||||||
// .should('contain.text', descriptionText);
|
|
||||||
// });
|
|
||||||
|
|
||||||
it('checks if measurement item can be deleted through the context menu on the viewport', function() {
|
it('checks if measurement item can be deleted through the context menu on the viewport', function() {
|
||||||
cy.addLengthMeasurement([100, 100], [200, 100]); //Adding measurement in the viewport
|
cy.addLengthMeasurement([100, 100], [200, 100]); //Adding measurement in the viewport
|
||||||
@ -228,14 +224,12 @@ describe('OHIF Study Viewer Page', function() {
|
|||||||
cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText);
|
cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText);
|
||||||
});
|
});
|
||||||
|
|
||||||
//TO-DO: this test is blocked due to issue #1072: https://github.com/OHIF/Viewers/issues/1072
|
it('performs single-click to load thumbnail in active viewport', () => {
|
||||||
// Uncomment this once #1072 is fixed.
|
cy.get('[data-cy="thumbnail-list"]:nth-child(3)').click();
|
||||||
// it('performs single-click to load thumbnail in active viewport', () => {
|
|
||||||
// cy.get('[data-cy="thumbnail-list"]:nth-child(3)').click();
|
|
||||||
|
|
||||||
// const expectedText = 'Ser 3';
|
const expectedText = 'Ser: 3';
|
||||||
// cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText);
|
cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText);
|
||||||
// });
|
});
|
||||||
|
|
||||||
it('performs right click to zoom', function() {
|
it('performs right click to zoom', function() {
|
||||||
//Right click on viewport
|
//Right click on viewport
|
||||||
@ -244,7 +238,7 @@ describe('OHIF Study Viewer Page', function() {
|
|||||||
.trigger('mousemove', 'center', { which: 3 })
|
.trigger('mousemove', 'center', { which: 3 })
|
||||||
.trigger('mouseup');
|
.trigger('mouseup');
|
||||||
|
|
||||||
const expectedText = 'Zoom: 442%';
|
const expectedText = 'Zoom: 301%';
|
||||||
cy.get('@viewportInfoBottomRight').should('contains.text', expectedText);
|
cy.get('@viewportInfoBottomRight').should('contains.text', expectedText);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -52,3 +52,28 @@ export function initVTKToolsAliases() {
|
|||||||
cy.get('.ohif-check-label').as('modeCheckbox');
|
cy.get('.ohif-check-label').as('modeCheckbox');
|
||||||
cy.get('.btn-group > .toolbar-button').as('layoutBtn');
|
cy.get('.btn-group > .toolbar-button').as('layoutBtn');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Creating aliases for Study List page elements on Desktop experience
|
||||||
|
export function initStudyListAliasesOnDesktop() {
|
||||||
|
cy.get('.study-count').as('studyCount');
|
||||||
|
cy.get('#filter-patientName').as('patientName');
|
||||||
|
cy.get('#filter-patientId').as('MRN');
|
||||||
|
cy.get('#filter-accessionNumber').as('accessionNumber');
|
||||||
|
cy.get('#start-date').as('studyListStartDate');
|
||||||
|
cy.get('#end-date').as('studyListEndDate');
|
||||||
|
cy.get('#filter-modalities').as('modalities');
|
||||||
|
cy.get('#filter-studyDescription').as('studyDescription');
|
||||||
|
cy.get('[data-cy="study-list-results"] > tr').as('searchResult');
|
||||||
|
}
|
||||||
|
|
||||||
|
//Creating aliases for Study List page elements on Tablet experience
|
||||||
|
export function initStudyListAliasesOnTablet() {
|
||||||
|
cy.get('.study-count').as('studyCount');
|
||||||
|
cy.get('#filter-patientNameOrId').as('patientNameOrMRN');
|
||||||
|
cy.get('#filter-accessionOrModalityOrDescription').as(
|
||||||
|
'accessionModalityDescription'
|
||||||
|
);
|
||||||
|
cy.get('#start-date').as('studyListStartDate');
|
||||||
|
cy.get('#end-date').as('studyListEndDate');
|
||||||
|
cy.get('[data-cy="study-list-results"] > tr').as('searchResult');
|
||||||
|
}
|
||||||
|
|||||||
@ -5,6 +5,8 @@ import {
|
|||||||
initCommonElementsAliases,
|
initCommonElementsAliases,
|
||||||
initRouteAliases,
|
initRouteAliases,
|
||||||
initVTKToolsAliases,
|
initVTKToolsAliases,
|
||||||
|
initStudyListAliasesOnDesktop,
|
||||||
|
initStudyListAliasesOnTablet,
|
||||||
} from './aliases.js';
|
} from './aliases.js';
|
||||||
|
|
||||||
// ***********************************************
|
// ***********************************************
|
||||||
@ -76,12 +78,18 @@ Cypress.Commands.add('isPageLoaded', (url = '/viewer/') => {
|
|||||||
return cy.location('pathname', { timeout: 60000 }).should('include', url);
|
return cy.location('pathname', { timeout: 60000 }).should('include', url);
|
||||||
});
|
});
|
||||||
|
|
||||||
Cypress.Commands.add('openStudyList', patientName => {
|
Cypress.Commands.add('openStudyList', () => {
|
||||||
cy.initRouteAliases();
|
cy.initRouteAliases();
|
||||||
cy.visit('/');
|
cy.visit('/');
|
||||||
cy.wait('@getStudies');
|
cy.wait('@getStudies');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('waitStudyList', () => {
|
||||||
|
cy.get('@searchResult').should($list => {
|
||||||
|
expect($list).to.not.have.class('no-hover');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command to perform a drag and drop action. Before using this command, we must get the element that should be dragged first.
|
* Command to perform a drag and drop action. Before using this command, we must get the element that should be dragged first.
|
||||||
* Example of usage: cy.get(element-to-be-dragged).drag(dropzone-element)
|
* Example of usage: cy.get(element-to-be-dragged).drag(dropzone-element)
|
||||||
@ -240,6 +248,16 @@ Cypress.Commands.add('initVTKToolsAliases', () => {
|
|||||||
initVTKToolsAliases();
|
initVTKToolsAliases();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Initialize aliases for Study List page elements
|
||||||
|
Cypress.Commands.add('initStudyListAliasesOnDesktop', () => {
|
||||||
|
initStudyListAliasesOnDesktop();
|
||||||
|
});
|
||||||
|
|
||||||
|
//Initialize aliases for Study List page elements
|
||||||
|
Cypress.Commands.add('initStudyListAliasesOnTablet', () => {
|
||||||
|
initStudyListAliasesOnTablet();
|
||||||
|
});
|
||||||
|
|
||||||
//Add measurements in the viewport
|
//Add measurements in the viewport
|
||||||
Cypress.Commands.add(
|
Cypress.Commands.add(
|
||||||
'addLengthMeasurement',
|
'addLengthMeasurement',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user