Update to use beta 5.0 of CS3D (#5904)

* Update to use beta 5.0

* fix: unit tests

* fix: Allow slow server/test rendering to still work

* Update tests to use viewport grid compare

* Fix storage of stale retries actual/diff files

* cs3d linking fixees

* Linking for cs3d metadata

* Use metadata import for suv scaling

* Fix suv import

* Use type for import

* fix: Metadata registration ordering

* Use beta for upstream

* Merge from origin/master

* Revert tests to master

* Undo beta version changes

* Revert bun.lock file to that of master.

* Reduce test failure retries to one per test. Cap the number of failed total tests to 10. Replace the JSON reporter with the HTML reporter.

* Add generic provider back in

* Deprecate OHIF versions of cs3d utils

* fix

* Undo some cs3d beta dependencies so this PR could be merged

* Build fix

* Fixing build issues

* build issue

* bun lock

* Temporary cache clear to resolve build issue

* Cache bust

* Remove the babel hoist fix attempt

* Cache netlify toml issue

* Fix netlify cache issue

* Try to fix cache dependency issue

* Try update resolutions

* babel hoist fix

* fix: Remove netlify cache bust

* Revert pinned versions

* PR comments on duplicated suv-factors

* Undo lock changes and isEqual add

---------

Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com>
Co-authored-by: Alireza <ar.sedghi@gmail.com>
This commit is contained in:
Bill Wallace 2026-05-19 21:41:37 -04:00 committed by GitHub
parent ef8bb5559a
commit 09093b3f0a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 35 additions and 22 deletions

View File

@ -122,7 +122,7 @@ jobs:
run: |
mkdir -p packaged-test-results
cp -r ./tests/test-results packaged-test-results/ || true
cp ./tests/playwright-report.json packaged-test-results/ || true
cp -r ./tests/playwright-report packaged-test-results/ || true
- name: Upload directory of test results artifact
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4

View File

@ -5,8 +5,6 @@ module.exports = {
moduleNameMapper: {
...base.moduleNameMapper,
'@ohif/(.*)': '<rootDir>/../../platform/$1/src',
'^@cornerstonejs/([^/]+)/(.*)$': '<rootDir>/../../node_modules/@cornerstonejs/$1/dist/esm/$2',
'^@cornerstonejs/([^/]+)$': '<rootDir>/../../node_modules/@cornerstonejs/$1/dist/esm',
},
// rootDir: "../.."
// testMatch: [

View File

@ -178,14 +178,6 @@ export default async function init({
);
});
// add metadata providers
metaData.addProvider(
csUtilities.calibratedPixelSpacingMetadataProvider.get.bind(
csUtilities.calibratedPixelSpacingMetadataProvider
)
); // this provider is required for Calibration tool
metaData.addProvider(metadataProvider.get.bind(metadataProvider), 9999);
// These are set reasonably low to allow for interleaved retrieves and slower
// connections.
imageLoadPoolManager.maxNumRequests = {
@ -197,6 +189,16 @@ export default async function init({
initWADOImageLoader(userAuthenticationService, appConfig, extensionManager);
// Add OHIF metadata providers after dicomImageLoader.init().
// The linked metadata branch clears providers during loader init.
metaData.addProvider(csUtilities.genericMetadataProvider.get, 9998);
metaData.addProvider(
csUtilities.calibratedPixelSpacingMetadataProvider.get.bind(
csUtilities.calibratedPixelSpacingMetadataProvider
)
); // this provider is required for Calibration tool
metaData.addProvider(metadataProvider.get.bind(metadataProvider), 9999);
/* Measurement Service */
this.measurementServiceSource = connectToolsToMeasurementService({
servicesManager,

View File

@ -5,7 +5,6 @@ module.exports = {
moduleNameMapper: {
...base.moduleNameMapper,
'@ohif/(.*)': '<rootDir>/../../platform/$1/src',
'^@cornerstonejs/(.*)$': '<rootDir>/../../node_modules/@cornerstonejs/$1/dist/esm',
},
// rootDir: "../.."
// testMatch: [

View File

@ -1,6 +1,6 @@
import OHIF from '@ohif/core';
import { InstanceMetadata, PhilipsPETPrivateGroup } from '@cornerstonejs/calculate-suv/src/types';
import type { InstanceMetadata, PhilipsPETPrivateGroup } from '@cornerstonejs/calculate-suv/src/types';
const metadataProvider = OHIF.classes.MetadataProvider;

View File

@ -18,6 +18,13 @@ module.exports = {
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
'<rootDir>/src/__mocks__/fileMock.js',
'\\.(css|less)$': 'identity-obj-proxy',
// calculate-suv publishes under dist/ (not dist/esm), so map it explicitly
// before package-specific catch-all @cornerstonejs mappings.
'^@cornerstonejs/calculate-suv$': '<rootDir>/../../node_modules/@cornerstonejs/calculate-suv',
'^@cornerstonejs/calculate-suv/(.*)$':
'<rootDir>/../../node_modules/@cornerstonejs/calculate-suv/$1',
'^@cornerstonejs/([^/]+)/(.*)$': '<rootDir>/../../node_modules/@cornerstonejs/$1/dist/esm/$2',
'^@cornerstonejs/([^/]+)$': '<rootDir>/../../node_modules/@cornerstonejs/$1/dist/esm',
},
// Setup
// setupFiles: ["jest-canvas-mock/lib/index.js"],

View File

@ -14,6 +14,9 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const SRC_DIR = path.join(__dirname, '../src');
const DIST_DIR = path.join(__dirname, '../dist');
const PUBLIC_DIR = path.join(__dirname, '../public');
// Ignore node_modules except @cornerstonejs (symlinked local development).
const WATCH_IGNORED = /node_modules[\\/](?!@cornerstonejs(?:[\\/]|$))/;
// ~~ Env Vars
const HTML_TEMPLATE = process.env.HTML_TEMPLATE || 'index.html';
const PUBLIC_URL = process.env.PUBLIC_URL || '/';
@ -206,7 +209,8 @@ module.exports = (env, argv) => {
}
mergedConfig.watchOptions = {
ignored: /node_modules\/@cornerstonejs/,
ignored: WATCH_IGNORED,
followSymlinks: true,
};
return mergedConfig;

View File

@ -4,17 +4,13 @@ export default defineConfig({
testDir: './tests',
fullyParallel: !!process.env.CI,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 3 : 0,
retries: process.env.CI ? 1 : 0,
maxFailures: process.env.CI ? 10 : undefined,
workers: process.env.CI ? 6 : undefined,
snapshotPathTemplate: './tests/screenshots{/projectName}/{testFilePath}/{arg}{ext}',
outputDir: './tests/test-results',
reporter: [
[
process.env.CI ? 'json' : 'html',
process.env.CI
? { outputFile: './tests/playwright-report.json' }
: { outputFolder: './tests/playwright-report' },
],
['html', { outputFolder: './tests/playwright-report' }],
],
globalTimeout: 800_000,
timeout: 800_000,

View File

@ -27,7 +27,13 @@ const PROXY_PATH_REWRITE_TO = process.env.PROXY_PATH_REWRITE_TO;
const OHIF_PORT = Number(process.env.OHIF_PORT || 3000);
const OHIF_OPEN = process.env.OHIF_OPEN !== 'false';
// Ignore node_modules except @cornerstonejs (symlinked local development).
const WATCH_IGNORED = /node_modules[\\/](?!@cornerstonejs(?:[\\/]|$))/;
export default defineConfig({
dev: {
lazyCompilation: false,
},
source: {
entry: {
index: `${SRC_DIR}/index.js`,
@ -83,7 +89,8 @@ export default defineConfig({
},
},
watchOptions: {
ignored: /node_modules\/@cornerstonejs/,
ignored: WATCH_IGNORED,
followSymlinks: true,
},
},
},