From af1e697b9d3c0059377902c722d077fba9be7060 Mon Sep 17 00:00:00 2001 From: Paul Elliott Date: Fri, 22 May 2026 16:49:53 -0400 Subject: [PATCH] test: re-enable four tests skipped during past tooling migrations Four tests were skipped over the years, each during a test-harness or build migration rather than for a genuine feature failure. A skipped test is green in CI, so none produced a signal and all silently rotted. Re-enable them. testLabelmapOutlineManyRenderer Skipped 2022-03-11 in commit 50ace42c8be (PR #2308, "Make test harnesses the same for release and PRs"); the commit gave no reason. While skipped the code rotted: createLabelPipeline called backgroundImageData.getDimensionsByReference(), which is not a function on vtkImageData. Use getDimensions(). Passes against the existing baseline, so no baseline change. testEdgeVisibility Skipped 2021-11-12 in commit 13b9be1847e (PR #2161, "Update test framework"), flagged in a pixelmatch-threshold-0 audit (PR #2098, closed unmerged) as a "bad image test" (issue #2104). The 2017 baseline predates commit a8873e5cd9a (2021-02-19, "feat(vtkopenglpolydatamapper): add support for backface property"), which changed the edge draw path from lit (ambient = getAmbient(), diffuse = getDiffuse()) to flat (ambient = 1.0, diffuse = 0.0): edges now render at the full configured edge color, the intended behavior. The render has been stable since at least 2021-06 (a steady 1.80% from the 2017 baseline at 2021-06, 2022, and 2024). Refresh the baseline; the tolerance is unchanged at 1% (chromium ~0%, firefox passes). testAverageIntensityProjection Skipped 2021-11-12 in commit 13b9be1847e (PR #2161), tracked by issue #2102. It did not drift or regress. Before the 2021 test-framework work the test was effectively a no-op: the old compareImages passed its threshold argument (here 1.5) straight to pixelmatch, whose threshold range is 0 to 1, so pixelmatch reported zero differing pixels for any image and the test passed vacuously. The pixelmatch-threshold-0 audit (PR #2098, closed unmerged) exposed the real comparison, and the test then "failed" because its baseline had never actually been checked. The committed baseline is the original 2019 image from aae2f554559; commit 8a50448cbfb only renamed it OpenGL/ to Core/ (100% rename). It is a near-blank volume the real render never matched. Rendering against old Sources shows a stable, correct head volume back to 2021-06 (~1.5% from the corrected baseline, ~0% on current master). Replace the baseline with the actual render (chromium ~0%, firefox 0.01%, within the 1% tolerance) and re-enable the test. Also release resources via .finally; gc.releaseResources had been passed as an unused 5th argument to compareImages. testSetTable Skipped 2026-05-21 by the Vite/Vitest migration (c0d988751e6), which rewrote test.onlyIfWebGL(...) as it.skip(...) instead of the it.skipIf(__VTK_TEST_NO_WEBGL__)(...) form used for every other migrated WebGL test, silently disabling a passing test. Restore the intended WebGL-conditional skip. Closes #2102 --- .../Core/LookupTable/test/testSetTable.js | 2 +- .../Core/Mapper/test/testEdgeVisibility.js | 4 +- .../Core/Mapper/test/testEdgeVisibility.png | Bin 35766 -> 43932 bytes .../test/testAverageIntensityProjection.js | 173 +++++----- .../test/testAverageIntensityProjection.png | Bin 18853 -> 31394 bytes .../test/testLabelmapOutlineManyRenderer.js | 307 +++++++++--------- 6 files changed, 247 insertions(+), 239 deletions(-) diff --git a/Sources/Common/Core/LookupTable/test/testSetTable.js b/Sources/Common/Core/LookupTable/test/testSetTable.js index ad6a81de41b..d66f7cf326f 100644 --- a/Sources/Common/Core/LookupTable/test/testSetTable.js +++ b/Sources/Common/Core/LookupTable/test/testSetTable.js @@ -12,7 +12,7 @@ import vtkPolyData from 'vtk.js/Sources/Common/DataModel/PolyData'; import baseline from './testSetTable.png'; -it.skip('Test LookupTable setTable', () => { +it.skipIf(__VTK_TEST_NO_WEBGL__)('Test LookupTable setTable', () => { const gc = testUtils.createGarbageCollector(); expect('rendering', 'vtkLookupTable TestSetTable').toBeTruthy(); // testUtils.keepDOM(); diff --git a/Sources/Rendering/Core/Mapper/test/testEdgeVisibility.js b/Sources/Rendering/Core/Mapper/test/testEdgeVisibility.js index c1bccfe3a4e..4a12f15fa38 100644 --- a/Sources/Rendering/Core/Mapper/test/testEdgeVisibility.js +++ b/Sources/Rendering/Core/Mapper/test/testEdgeVisibility.js @@ -10,7 +10,7 @@ import vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper'; import baseline from './testEdgeVisibility.png'; -it.skip('Test Edge Visibility', () => { +it.skipIf(__VTK_TEST_NO_WEBGL__)('Test Edge Visibility', () => { const gc = testUtils.createGarbageCollector(); expect('rendering', 'vtkMapper EdgeVisibility').toBeTruthy(); @@ -50,7 +50,7 @@ it.skip('Test Edge Visibility', () => { testUtils.compareImages( image, [baseline], - 'Rendering/Core/Mapper/testEdgeVisibility.js', + 'Rendering/Core/Mapper/testEdgeVisibility', 1 ) ) diff --git a/Sources/Rendering/Core/Mapper/test/testEdgeVisibility.png b/Sources/Rendering/Core/Mapper/test/testEdgeVisibility.png index b165b2f1e17ff51beaef3115bc9d6ccd881ca863..01403f8d4e40073bcfd67d46602bf684b7fad0f4 100644 GIT binary patch literal 43932 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

-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 ghRy%~guRu_RD7qg+;lpO2K-TyQ { - const gc = testUtils.createGarbageCollector(); - expect('rendering', 'vtkVolumeMapper AverageIP').toBeTruthy(); - // testUtils.keepDOM(); - - // Create some control UI - const container = document.querySelector('body'); - const renderWindowContainer = gc.registerDOMElement( - document.createElement('div') - ); - container.appendChild(renderWindowContainer); - - // create what we will view - const renderWindow = gc.registerResource(vtkRenderWindow.newInstance()); - const renderer = gc.registerResource(vtkRenderer.newInstance()); - renderWindow.addRenderer(renderer); - renderer.setBackground(0.32, 0.34, 0.43); - - const actor = gc.registerResource(vtkVolume.newInstance()); - - const mapper = gc.registerResource(vtkVolumeMapper.newInstance()); - mapper.setSampleDistance(0.7); - mapper.setBlendMode(Constants.BlendMode.AVERAGE_INTENSITY_BLEND); - - actor.setMapper(mapper); - - const reader = vtkHttpDataSetReader.newInstance({ fetchGzip: true }); - - // create color and opacity transfer functions - const ctfun = vtkColorTransferFunction.newInstance(); - ctfun.addRGBPoint(-3024, 0, 0, 0); - ctfun.addRGBPoint(-637.62, 1, 1, 1); - ctfun.addRGBPoint(700, 1, 1, 1); - ctfun.addRGBPoint(3071, 1, 1, 1); - ctfun.setMappingRange(500, 3000); - - const ofun = vtkPiecewiseFunction.newInstance(); - ofun.addPoint(-3024, 0); - ofun.addPoint(-637.62, 0); - ofun.addPoint(700, 0.5); - ofun.addPoint(3071, 0.9); - - actor.getProperty().setRGBTransferFunction(0, ctfun); - actor.getProperty().setScalarOpacity(0, ofun); - actor.getProperty().setScalarOpacityUnitDistance(0, 4.5); - actor.getProperty().setInterpolationTypeToFastLinear(); - - mapper.setInputConnection(reader.getOutputPort()); - - // now create something to view it - const glwindow = gc.registerResource(renderWindow.newAPISpecificView()); - glwindow.setContainer(renderWindowContainer); - renderWindow.addView(glwindow); - glwindow.setSize(400, 400); - - // Interactor - const interactor = vtkRenderWindowInteractor.newInstance(); - interactor.setStillUpdateRate(0.01); - interactor.setView(glwindow); - interactor.initialize(); - interactor.bindEvents(renderWindowContainer); - - await reader.setUrl(`${__BASE_PATH__}/Data/volume/headsq.vti`); - await reader.loadData(); - - renderer.addVolume(actor); - renderer.resetCamera(); - - const promise = glwindow.captureNextImage().then((image) => - testUtils.compareImages( - image, - [baseline], - 'Rendering/Core/VolumeMapper/testAverageIntensityProjection', - { - // be stricter here - pixelThreshold: 0.01, - mismatchTolerance: 1.0, - }, - gc.releaseResources - ) - ); - renderWindow.render(); - return promise; -}); +it.skipIf(__VTK_TEST_NO_WEBGL__)( + 'Test Average Intensity Projection Volume Rendering', + async () => { + const gc = testUtils.createGarbageCollector(); + expect('rendering', 'vtkVolumeMapper AverageIP').toBeTruthy(); + // testUtils.keepDOM(); + + // Create some control UI + const container = document.querySelector('body'); + const renderWindowContainer = gc.registerDOMElement( + document.createElement('div') + ); + container.appendChild(renderWindowContainer); + + // create what we will view + const renderWindow = gc.registerResource(vtkRenderWindow.newInstance()); + const renderer = gc.registerResource(vtkRenderer.newInstance()); + renderWindow.addRenderer(renderer); + renderer.setBackground(0.32, 0.34, 0.43); + + const actor = gc.registerResource(vtkVolume.newInstance()); + + const mapper = gc.registerResource(vtkVolumeMapper.newInstance()); + mapper.setSampleDistance(0.7); + mapper.setBlendMode(Constants.BlendMode.AVERAGE_INTENSITY_BLEND); + + actor.setMapper(mapper); + + const reader = vtkHttpDataSetReader.newInstance({ fetchGzip: true }); + + // create color and opacity transfer functions + const ctfun = vtkColorTransferFunction.newInstance(); + ctfun.addRGBPoint(-3024, 0, 0, 0); + ctfun.addRGBPoint(-637.62, 1, 1, 1); + ctfun.addRGBPoint(700, 1, 1, 1); + ctfun.addRGBPoint(3071, 1, 1, 1); + ctfun.setMappingRange(500, 3000); + + const ofun = vtkPiecewiseFunction.newInstance(); + ofun.addPoint(-3024, 0); + ofun.addPoint(-637.62, 0); + ofun.addPoint(700, 0.5); + ofun.addPoint(3071, 0.9); + + actor.getProperty().setRGBTransferFunction(0, ctfun); + actor.getProperty().setScalarOpacity(0, ofun); + actor.getProperty().setScalarOpacityUnitDistance(0, 4.5); + actor.getProperty().setInterpolationTypeToFastLinear(); + + mapper.setInputConnection(reader.getOutputPort()); + + // now create something to view it + const glwindow = gc.registerResource(renderWindow.newAPISpecificView()); + glwindow.setContainer(renderWindowContainer); + renderWindow.addView(glwindow); + glwindow.setSize(400, 400); + + // Interactor + const interactor = vtkRenderWindowInteractor.newInstance(); + interactor.setStillUpdateRate(0.01); + interactor.setView(glwindow); + interactor.initialize(); + interactor.bindEvents(renderWindowContainer); + + await reader.setUrl(`${__BASE_PATH__}/Data/volume/headsq.vti`); + await reader.loadData(); + + renderer.addVolume(actor); + renderer.resetCamera(); + + const promise = glwindow + .captureNextImage() + .then((image) => + testUtils.compareImages( + image, + [baseline], + 'Rendering/Core/VolumeMapper/testAverageIntensityProjection', + { + // be stricter here + pixelThreshold: 0.01, + mismatchTolerance: 1.0, + } + ) + ) + .finally(gc.releaseResources); + renderWindow.render(); + return promise; + } +); diff --git a/Sources/Rendering/Core/VolumeMapper/test/testAverageIntensityProjection.png b/Sources/Rendering/Core/VolumeMapper/test/testAverageIntensityProjection.png index fe9fe011e064bcd211261879b3f37e7aeedca2f2..a691c7502ce723575d3fec28d0ad406a94d81264 100644 GIT binary patch literal 31394 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�UiHK_FT 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 RK7I*7R!Rv_CGkDz{{pUf_Z { - const gc = testUtils.createGarbageCollector(); - expect('rendering', 'LabelmapOutline manyRenderers').toBeTruthy(); +it.skipIf(__VTK_TEST_NO_WEBGL__)( + 'Test Labelmap Outline with many renderers', + async () => { + const gc = testUtils.createGarbageCollector(); + expect('rendering', 'LabelmapOutline manyRenderers').toBeTruthy(); - const renderWindow = gc.registerResource(vtkRenderWindow.newInstance()); - const glwindow = gc.registerResource(vtkOpenGLRenderWindow.newInstance()); - renderWindow.addView(glwindow); + const renderWindow = gc.registerResource(vtkRenderWindow.newInstance()); + const glwindow = gc.registerResource(vtkOpenGLRenderWindow.newInstance()); + renderWindow.addView(glwindow); - // Create some control UI - const bodyElement = document.querySelector('body'); - bodyElement.style.margin = 0; + // Create some control UI + const bodyElement = document.querySelector('body'); + bodyElement.style.margin = 0; - const rootContainer = gc.registerDOMElement(document.createElement('div')); - rootContainer.style.position = 'fixed'; - rootContainer.style.zIndex = -1; - rootContainer.style.left = 0; - rootContainer.style.top = 0; - rootContainer.style.pointerEvents = 'none'; + const rootContainer = gc.registerDOMElement(document.createElement('div')); + rootContainer.style.position = 'fixed'; + rootContainer.style.zIndex = -1; + rootContainer.style.left = 0; + rootContainer.style.top = 0; + rootContainer.style.pointerEvents = 'none'; - bodyElement.appendChild(rootContainer); - glwindow.setContainer(rootContainer); + bodyElement.appendChild(rootContainer); + glwindow.setContainer(rootContainer); - const interactor = gc.registerResource( - vtkRenderWindowInteractor.newInstance() - ); - interactor.setView(glwindow); - interactor.initialize(); - - resize(renderWindow, glwindow); - - // ---------------------------------------------------------------------------- - // Renderers - // ---------------------------------------------------------------------------- - let rendererId = 1; - - const reader = vtkHttpDataSetReader.newInstance({ - fetchGzip: true, - }); - - await reader.setUrl(`${__BASE_PATH__}/Data/volume/headsq.vti`, { - loadData: true, - }); - - const data = reader.getOutputData(); - const labelMap = createLabelPipeline(data, gc); - fillBlobForThreshold(labelMap.imageData, data); - - for (let i = 0; i < 2; i++) { - const mapper = gc.registerResource(vtkVolumeMapper.newInstance()); - mapper.setInputData(data); - const el = gc.registerDOMElement(document.createElement('div')); - el.classList.add('renderer'); - el.style.width = '400px'; - el.style.height = '400px'; - - el.id = rendererId++; - bodyElement.appendChild(el); - - const actor = gc.registerResource(vtkVolume.newInstance()); - actor.getProperty().setInterpolationTypeToNearest(); - - actor.setMapper(mapper); - - const ofun = vtkPiecewiseFunction.newInstance(); - ofun.addPoint(0, 0); - ofun.addPoint(1, 1.0); - actor.getProperty().setScalarOpacity(0, ofun); - - const sourceDataRGBTransferFunction = actor - .getProperty() - .getRGBTransferFunction(0); - sourceDataRGBTransferFunction.setMappingRange(324, 2324); - - const renderer = gc.registerResource(vtkRenderer.newInstance()); - renderer.addVolume(actor); - renderer.addVolume(labelMap.actor); - - renderWindow.addRenderer(renderer); - renderer.resetCamera(); - - // MPR slice custom, for some reason doesn't work if we set it as interactorStyle - const camera = renderer.getActiveCamera(); - const normal = camera.getDirectionOfProjection(); - // prevent zoom manipulator from messing with our focal point - camera.setFreezeFocalPoint(true); - vtkMath.normalize(normal); - - const bounds = mapper.getBounds(); - - // diagonal will be used as "width" of camera scene - const diagonal = Math.sqrt( - vtkMath.distance2BetweenPoints( - [bounds[0], bounds[2], bounds[4]], - [bounds[1], bounds[3], bounds[5]] - ) + const interactor = gc.registerResource( + vtkRenderWindowInteractor.newInstance() ); + interactor.setView(glwindow); + interactor.initialize(); + + resize(renderWindow, glwindow); + + // ---------------------------------------------------------------------------- + // Renderers + // ---------------------------------------------------------------------------- + let rendererId = 1; + + const reader = vtkHttpDataSetReader.newInstance({ + fetchGzip: true, + }); + + await reader.setUrl(`${__BASE_PATH__}/Data/volume/headsq.vti`, { + loadData: true, + }); + + const data = reader.getOutputData(); + const labelMap = createLabelPipeline(data, gc); + fillBlobForThreshold(labelMap.imageData, data); + + for (let i = 0; i < 2; i++) { + const mapper = gc.registerResource(vtkVolumeMapper.newInstance()); + mapper.setInputData(data); + const el = gc.registerDOMElement(document.createElement('div')); + el.classList.add('renderer'); + el.style.width = '400px'; + el.style.height = '400px'; + + el.id = rendererId++; + bodyElement.appendChild(el); + + const actor = gc.registerResource(vtkVolume.newInstance()); + actor.getProperty().setInterpolationTypeToNearest(); + + actor.setMapper(mapper); + + const ofun = vtkPiecewiseFunction.newInstance(); + ofun.addPoint(0, 0); + ofun.addPoint(1, 1.0); + actor.getProperty().setScalarOpacity(0, ofun); + + const sourceDataRGBTransferFunction = actor + .getProperty() + .getRGBTransferFunction(0); + sourceDataRGBTransferFunction.setMappingRange(324, 2324); + + const renderer = gc.registerResource(vtkRenderer.newInstance()); + renderer.addVolume(actor); + renderer.addVolume(labelMap.actor); + + renderWindow.addRenderer(renderer); + renderer.resetCamera(); + + // MPR slice custom, for some reason doesn't work if we set it as interactorStyle + const camera = renderer.getActiveCamera(); + const normal = camera.getDirectionOfProjection(); + // prevent zoom manipulator from messing with our focal point + camera.setFreezeFocalPoint(true); + vtkMath.normalize(normal); + + const bounds = mapper.getBounds(); + + // diagonal will be used as "width" of camera scene + const diagonal = Math.sqrt( + vtkMath.distance2BetweenPoints( + [bounds[0], bounds[2], bounds[4]], + [bounds[1], bounds[3], bounds[5]] + ) + ); + + // center will be used as initial focal point + const center = [ + (bounds[0] + bounds[1]) / 2.0, + (bounds[2] + bounds[3]) / 2.0, + (bounds[4] + bounds[5]) / 2.0, + ]; + + const angle = 90; + // distance from camera to focal point + const dist = diagonal / (2 * Math.tan((angle / 360) * Math.PI)); + + const cameraPos = [ + center[0] - normal[0] * dist, + center[1] - normal[1] * dist, + center[2] - normal[2] * dist, + ]; + + // set viewUp based on DOP rotation + const oldDop = camera.getDirectionOfProjection(); + const transform = vtkMatrixBuilder + .buildFromDegree() + .identity() + .rotateFromDirections(oldDop, normal); + + const viewUp = [0, 1, 0]; + transform.apply(viewUp); + + camera.setParallelProjection(true); + + camera.setPosition(...cameraPos); + camera.setDistance(dist); + // camera.setFocalPoint(center) + // should be set after pos and distance + camera.setDirectionOfProjection(...normal); + camera.setViewUp(...viewUp); + camera.setViewAngle(angle); + camera.setClippingRange(dist, dist + 0.1); + camera.setParallelScale(20); + + updateViewPort(el, renderer); + renderer.getActiveCamera().setViewUp(1, 0, 0); + renderWindow.render(); + + // Keep track of renderer + RENDERERS[el.id] = renderer; + } - // center will be used as initial focal point - const center = [ - (bounds[0] + bounds[1]) / 2.0, - (bounds[2] + bounds[3]) / 2.0, - (bounds[4] + bounds[5]) / 2.0, - ]; - - const angle = 90; - // distance from camera to focal point - const dist = diagonal / (2 * Math.tan((angle / 360) * Math.PI)); - - const cameraPos = [ - center[0] - normal[0] * dist, - center[1] - normal[1] * dist, - center[2] - normal[2] * dist, - ]; - - // set viewUp based on DOP rotation - const oldDop = camera.getDirectionOfProjection(); - const transform = vtkMatrixBuilder - .buildFromDegree() - .identity() - .rotateFromDirections(oldDop, normal); - - const viewUp = [0, 1, 0]; - transform.apply(viewUp); - - camera.setParallelProjection(true); - - camera.setPosition(...cameraPos); - camera.setDistance(dist); - // camera.setFocalPoint(center) - // should be set after pos and distance - camera.setDirectionOfProjection(...normal); - camera.setViewUp(...viewUp); - camera.setViewAngle(angle); - camera.setClippingRange(dist, dist + 0.1); - camera.setParallelScale(20); - - updateViewPort(el, renderer); - renderer.getActiveCamera().setViewUp(1, 0, 0); - renderWindow.render(); - - // Keep track of renderer - RENDERERS[el.id] = renderer; + const promise = glwindow + .captureNextImage() + .then((image) => + testUtils.compareImages( + image, + [baseline1], + 'Rendering/OpenGL/VolumeMapper/testLabelmapOutlineManyRenderer', + 1.5, + gc.releaseResources + ) + ); + + recomputeViewports(renderWindow); + return promise; } - - const promise = glwindow - .captureNextImage() - .then((image) => - testUtils.compareImages( - image, - [baseline1], - 'Rendering/OpenGL/VolumeMapper/testLabelmapOutlineManyRenderer', - 1.5, - gc.releaseResources - ) - ); - - recomputeViewports(renderWindow); - return promise; -}); +);