/** * Add tests to ensure image consistency and quality */ const testPixel = (dx, dy, expectedPixel) => { cy.get('.cornerstone-canvas').then(v => { const canvas = v[0]; cy.log( 'testPixel canvas', dx, dy, expectedPixel, canvas.width, canvas.height, canvas.style.width, canvas.style.height ); const ctx = canvas.getContext('2d'); cy.window() .its('cornerstone') .then(cornerstone => { const { viewport } = cornerstone.getEnabledElements()[0]; const imageData = viewport.getImageData(); // cy.log("imageData", imageData); const origin = viewport.worldToCanvas(imageData?.origin); const orX = origin[0] * devicePixelRatio; const orY = origin[1] * devicePixelRatio; const x = Math.round(orX + dx); const y = Math.round(orY + dy); cy.log('testPixel origin x,y point x,y', orX, orY, x, y); // cy.log('world origin', imageData.origin); // cy.log('focal', viewport.getCamera().focalPoint, // viewport.worldToCanvas(viewport.getCamera().focalPoint)); const pixelData = ctx.getImageData(x, y, 1, 1); expect(pixelData.data[0]).closeTo(expectedPixel, 1); }); }); }; describe('CS3D Image Consistency and Quality', () => { const setupStudySeries = (studyUID, seriesUID) => { cy.checkStudyRouteInViewer( studyUID, `&seriesInstanceUID=${seriesUID}&hangingProtocolId=@ohif/hpScale` ); cy.initCornerstoneToolsAliases(); const skipMarkers = true; cy.initCommonElementsAliases(skipMarkers); }; it('TG18 Resolution Test Displayed 1:1', () => { setupStudySeries( '2.16.124.113543.6004.101.103.20021117.061159.1', '2.16.124.113543.6004.101.103.20021117.061159.1.004' ); cy.wait(2000); testPixel(1018, 1028, 255); // Horizontal and vertical delta from this should not be contaminated // by values from center testPixel(1019, 1028, 0); testPixel(1018, 1029, 0); testPixel(1017, 1028, 0); testPixel(1018, 1027, 0); }); // Missing test data - todo it.skip('8 bit image displayable', () => { setupStudySeries('1.3.46.670589.17.1.7.1.1.7', '1.3.46.670589.17.1.7.2.1.7'); cy.wait(1000); // Compare with dcm2jpg generated values or by manually computing WL values testPixel(258, 257, 171); testPixel(259, 257, 166); }); it.skip('12 bit image displayable and zoom with pixel spacing', () => { setupStudySeries( '1.3.6.1.4.1.25403.345050719074.3824.20170125113417.1', '1.3.6.1.4.1.25403.345050719074.3824.20170125113608.5' ); cy.wait(1000); // Compare with dcm2jpg generated values or by manually computing WL values testPixel(258, 277, 120); testPixel(259, 277, 122); }); });