From 288d05daed1ed51163efff58251ff97400e554a6 Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Wed, 5 Aug 2026 15:10:43 -0300 Subject: [PATCH 1/5] fix: consume collapsible visibility-gated SEG legend (#409) Bump dicom-microscopy-viewer to the slim#409 fix so the probabilistic SEG/parametric-map legend is collapsible, hidden when no overlay is visible, and stays in sync with right-panel visibility toggles. --- README.md | 2 ++ package.json | 2 +- pnpm-lock.yaml | 11 ++++++----- pnpm-workspace.yaml | 7 +++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e79f57d8..25e3a3ac 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ Raster graphics: - [DICOM Segmentation](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.51.html) instances that contain binary or fractional segmentation masks - [DICOM Parametric Map](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.75.html) instances that contain saliency maps, attention maps, class activation maps, etc. +Fractional segmentations and parametric maps show an in-viewport color legend when at least one overlay is visible. The legend is collapsible and its per-item visibility toggles stay in sync with the switches in the right-hand panel. + | | DICOM IOD | | :------------------------------------------------------------------------------------------------------------------------: | :--------------------------------- | | IDC CPTAC Segmentation | Segmentation | diff --git a/package.json b/package.json index d0336b76..a2edf987 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "classnames": "^2.2.6", "dcmjs": "^0.35.0", "detect-browser": "^5.2.1", - "dicom-microscopy-viewer": "^0.48.22", + "dicom-microscopy-viewer": "github:ImagingDataCommons/dicom-microscopy-viewer#1023019602f919e0cb79be9f9cf64ab283088d7f", "dicomweb-client": "0.10.3", "oidc-client": "^1.11.5", "ol": "^10.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96daaa1b..7c2760c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ importers: specifier: ^5.2.1 version: 5.3.0 dicom-microscopy-viewer: - specifier: ^0.48.22 - version: 0.48.22 + specifier: github:ImagingDataCommons/dicom-microscopy-viewer#1023019602f919e0cb79be9f9cf64ab283088d7f + version: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f dicomweb-client: specifier: 0.10.3 version: 0.10.3 @@ -3012,8 +3012,9 @@ packages: engines: {node: '>= 4.2.1'} hasBin: true - dicom-microscopy-viewer@0.48.22: - resolution: {integrity: sha512-IkFwh9lyAjhb6HXbSvZZu0gc462CLGN6h+6iWaZASsnaskRj3Mlrq9QOgzQJ/iYZP/aoaL87UAWn8Q2ZV+sceQ==} + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f: + resolution: {gitHosted: true, integrity: sha512-rp5mj43mvnMOTZTh6CNR3JE00PZ2lFnjYPzeKtJjuJEFsRDW/xyqDJ9bT3g/+sqFys7C0Tdf5G1WthgoeDS8Nw==, tarball: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f} + version: 0.48.22 dicomweb-client@0.10.3: resolution: {integrity: sha512-/fHNEAYiz8j+9TNOrNJ0k+hYqirbOT85B7vM7I4VkY8DeDQb4BDUeL3RX6huDVtn6ZQlR91dI+2tejLc5c99wA==} @@ -11052,7 +11053,7 @@ snapshots: transitivePeerDependencies: - supports-color - dicom-microscopy-viewer@0.48.22: + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f: dependencies: '@cornerstonejs/codec-charls': 1.2.3 '@cornerstonejs/codec-libjpeg-turbo-8bit': 1.2.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index cd1888dd..5803d3be 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,7 +4,14 @@ strictPeerDependencies: false allowBuilds: core-js: true core-js-pure: true + # Allow the git-hosted dicom-microscopy-viewer to run its prepare script, + # which builds dist/ when installed from a commit tarball. pnpm matches + # git-hosted packages by their exact tarball URL, so this entry must be + # updated whenever the dependency pin in package.json changes. dicom-microscopy-viewer: true + dicom-microscopy-viewer@0.48.22: true + 'dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f': true + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/88d78adfefe3f011d26c644ac268b26feb8da6b4: set this to true or false overrides: '@types/d3-dispatch': 3.0.6 From ba4425ffe8e1e976f3d956e1e156debfccfa61d6 Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Thu, 6 Aug 2026 20:35:04 -0300 Subject: [PATCH 2/5] fix(ci): build git-hosted DMV dist and bump legend pin Drop --ignore-scripts on PR workflows so prepare can emit dist/, clean allowBuilds, and point at the refreshed fix/409-collapsible-seg-legend tip. --- .github/workflows/deploy-to-firebase.yml | 4 +++- .github/workflows/deploy-to-github-pages.yml | 4 +++- .github/workflows/unit-tests.yml | 4 +++- package.json | 2 +- pnpm-lock.yaml | 11 ++++++----- pnpm-workspace.yaml | 4 +--- 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/.github/workflows/deploy-to-firebase.yml b/.github/workflows/deploy-to-firebase.yml index b56ecc4d..d622b870 100644 --- a/.github/workflows/deploy-to-firebase.yml +++ b/.github/workflows/deploy-to-firebase.yml @@ -36,7 +36,9 @@ jobs: cache: pnpm - name: Install dependencies - run: pnpm install --frozen-lockfile --ignore-scripts + # Dependency build scripts are gated by allowBuilds in pnpm-workspace.yaml. + # The git-hosted dicom-microscopy-viewer needs its prepare script to build dist/. + run: pnpm install --frozen-lockfile - name: Build run: REACT_APP_CONFIG=preview PUBLIC_URL=/ pnpm run build diff --git a/.github/workflows/deploy-to-github-pages.yml b/.github/workflows/deploy-to-github-pages.yml index 15faaf03..6b55ba99 100644 --- a/.github/workflows/deploy-to-github-pages.yml +++ b/.github/workflows/deploy-to-github-pages.yml @@ -35,7 +35,9 @@ jobs: cache: pnpm - name: Install dependencies - run: pnpm install --frozen-lockfile --ignore-scripts + # Dependency build scripts are gated by allowBuilds in pnpm-workspace.yaml. + # The git-hosted dicom-microscopy-viewer needs its prepare script to build dist/. + run: pnpm install --frozen-lockfile - name: Build run: pnpm run predeploy diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index b9793645..bec9480e 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -32,7 +32,9 @@ jobs: cache: pnpm - name: Install dependencies - run: pnpm install --frozen-lockfile --ignore-scripts + # Dependency build scripts are gated by allowBuilds in pnpm-workspace.yaml. + # The git-hosted dicom-microscopy-viewer needs its prepare script to build dist/. + run: pnpm install --frozen-lockfile - name: Lint run: pnpm run lint diff --git a/package.json b/package.json index 271441d7..41ccbe8b 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "classnames": "^2.2.6", "dcmjs": "^0.35.0", "detect-browser": "^5.2.1", - "dicom-microscopy-viewer": "github:ImagingDataCommons/dicom-microscopy-viewer#1023019602f919e0cb79be9f9cf64ab283088d7f", + "dicom-microscopy-viewer": "github:ImagingDataCommons/dicom-microscopy-viewer#135ad885ff71b3f38e0446a51a9e2be13d8d7674", "dicomweb-client": "0.10.3", "oidc-client": "^1.11.5", "ol": "^10.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c2760c9..2e38366b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ importers: specifier: ^5.2.1 version: 5.3.0 dicom-microscopy-viewer: - specifier: github:ImagingDataCommons/dicom-microscopy-viewer#1023019602f919e0cb79be9f9cf64ab283088d7f - version: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f + specifier: github:ImagingDataCommons/dicom-microscopy-viewer#135ad885ff71b3f38e0446a51a9e2be13d8d7674 + version: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674 dicomweb-client: specifier: 0.10.3 version: 0.10.3 @@ -2749,6 +2749,7 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + deprecated: Active development of CryptoJS has been discontinued. This library is no longer maintained. crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} @@ -3012,8 +3013,8 @@ packages: engines: {node: '>= 4.2.1'} hasBin: true - dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f: - resolution: {gitHosted: true, integrity: sha512-rp5mj43mvnMOTZTh6CNR3JE00PZ2lFnjYPzeKtJjuJEFsRDW/xyqDJ9bT3g/+sqFys7C0Tdf5G1WthgoeDS8Nw==, tarball: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f} + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674: + resolution: {gitHosted: true, integrity: sha512-M7sQIB3wA30BwWh4aVgkzS4gZv/+fsZqXHvm2YJ06HowzvHFK5eODKkXLU+p3dhvCWYtUyqUY93NSVifh++wAQ==, tarball: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674} version: 0.48.22 dicomweb-client@0.10.3: @@ -11053,7 +11054,7 @@ snapshots: transitivePeerDependencies: - supports-color - dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f: + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674: dependencies: '@cornerstonejs/codec-charls': 1.2.3 '@cornerstonejs/codec-libjpeg-turbo-8bit': 1.2.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5803d3be..c58968d9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,9 +9,7 @@ allowBuilds: # git-hosted packages by their exact tarball URL, so this entry must be # updated whenever the dependency pin in package.json changes. dicom-microscopy-viewer: true - dicom-microscopy-viewer@0.48.22: true - 'dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f': true - dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/88d78adfefe3f011d26c644ac268b26feb8da6b4: set this to true or false + 'dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674': true overrides: '@types/d3-dispatch': 3.0.6 From 2240da456cc336a44d2dfbf91fa6f726d4e5ec0d Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Thu, 6 Aug 2026 20:46:49 -0300 Subject: [PATCH 3/5] fix(ci): pin DMV legend SHA that prepare can build from git The post-merge tip failed webpack during prepare (missing dataLoader.worker.min.js). Keep workflows without --ignore-scripts and pin 1023019, which still includes the collapsible legend fix. --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- pnpm-workspace.yaml | 3 ++- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 41ccbe8b..271441d7 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "classnames": "^2.2.6", "dcmjs": "^0.35.0", "detect-browser": "^5.2.1", - "dicom-microscopy-viewer": "github:ImagingDataCommons/dicom-microscopy-viewer#135ad885ff71b3f38e0446a51a9e2be13d8d7674", + "dicom-microscopy-viewer": "github:ImagingDataCommons/dicom-microscopy-viewer#1023019602f919e0cb79be9f9cf64ab283088d7f", "dicomweb-client": "0.10.3", "oidc-client": "^1.11.5", "ol": "^10.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e38366b..418465fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ importers: specifier: ^5.2.1 version: 5.3.0 dicom-microscopy-viewer: - specifier: github:ImagingDataCommons/dicom-microscopy-viewer#135ad885ff71b3f38e0446a51a9e2be13d8d7674 - version: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674 + specifier: github:ImagingDataCommons/dicom-microscopy-viewer#1023019602f919e0cb79be9f9cf64ab283088d7f + version: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f dicomweb-client: specifier: 0.10.3 version: 0.10.3 @@ -3013,8 +3013,8 @@ packages: engines: {node: '>= 4.2.1'} hasBin: true - dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674: - resolution: {gitHosted: true, integrity: sha512-M7sQIB3wA30BwWh4aVgkzS4gZv/+fsZqXHvm2YJ06HowzvHFK5eODKkXLU+p3dhvCWYtUyqUY93NSVifh++wAQ==, tarball: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674} + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f: + resolution: {gitHosted: true, integrity: sha512-rp5mj43mvnMOTZTh6CNR3JE00PZ2lFnjYPzeKtJjuJEFsRDW/xyqDJ9bT3g/+sqFys7C0Tdf5G1WthgoeDS8Nw==, tarball: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f} version: 0.48.22 dicomweb-client@0.10.3: @@ -11054,7 +11054,7 @@ snapshots: transitivePeerDependencies: - supports-color - dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674: + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f: dependencies: '@cornerstonejs/codec-charls': 1.2.3 '@cornerstonejs/codec-libjpeg-turbo-8bit': 1.2.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c58968d9..f336e426 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,7 +9,8 @@ allowBuilds: # git-hosted packages by their exact tarball URL, so this entry must be # updated whenever the dependency pin in package.json changes. dicom-microscopy-viewer: true - 'dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/135ad885ff71b3f38e0446a51a9e2be13d8d7674': true + 'dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f': true + overrides: '@types/d3-dispatch': 3.0.6 From 0bdcfecbb93ea2d0acb78243b11c892ce016746c Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Thu, 6 Aug 2026 20:51:08 -0300 Subject: [PATCH 4/5] fix(ci): bump DMV pin with webpack include fix for pnpm git builds Pull in the babel include: context fix so prepare succeeds when pnpm builds the git dependency inside a store path containing node_modules. --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- pnpm-workspace.yaml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 271441d7..8a3616b5 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "classnames": "^2.2.6", "dcmjs": "^0.35.0", "detect-browser": "^5.2.1", - "dicom-microscopy-viewer": "github:ImagingDataCommons/dicom-microscopy-viewer#1023019602f919e0cb79be9f9cf64ab283088d7f", + "dicom-microscopy-viewer": "github:ImagingDataCommons/dicom-microscopy-viewer#03b4732f05fb7d02b6247e2d75e69c73ab5c88ff", "dicomweb-client": "0.10.3", "oidc-client": "^1.11.5", "ol": "^10.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 418465fa..c621c825 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ importers: specifier: ^5.2.1 version: 5.3.0 dicom-microscopy-viewer: - specifier: github:ImagingDataCommons/dicom-microscopy-viewer#1023019602f919e0cb79be9f9cf64ab283088d7f - version: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f + specifier: github:ImagingDataCommons/dicom-microscopy-viewer#03b4732f05fb7d02b6247e2d75e69c73ab5c88ff + version: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/03b4732f05fb7d02b6247e2d75e69c73ab5c88ff dicomweb-client: specifier: 0.10.3 version: 0.10.3 @@ -3013,8 +3013,8 @@ packages: engines: {node: '>= 4.2.1'} hasBin: true - dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f: - resolution: {gitHosted: true, integrity: sha512-rp5mj43mvnMOTZTh6CNR3JE00PZ2lFnjYPzeKtJjuJEFsRDW/xyqDJ9bT3g/+sqFys7C0Tdf5G1WthgoeDS8Nw==, tarball: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f} + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/03b4732f05fb7d02b6247e2d75e69c73ab5c88ff: + resolution: {gitHosted: true, integrity: sha512-zEeCQl3Zaa+MJll3mEXRVUcn2CXI21yrRl0PFpFJaYpKMwZI7q1aZ6W1ZWEDnw6c+RCYYF4mUHp5TbuqcG2fOg==, tarball: https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/03b4732f05fb7d02b6247e2d75e69c73ab5c88ff} version: 0.48.22 dicomweb-client@0.10.3: @@ -11054,7 +11054,7 @@ snapshots: transitivePeerDependencies: - supports-color - dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f: + dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/03b4732f05fb7d02b6247e2d75e69c73ab5c88ff: dependencies: '@cornerstonejs/codec-charls': 1.2.3 '@cornerstonejs/codec-libjpeg-turbo-8bit': 1.2.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f336e426..b1b5ae6d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,7 +9,7 @@ allowBuilds: # git-hosted packages by their exact tarball URL, so this entry must be # updated whenever the dependency pin in package.json changes. dicom-microscopy-viewer: true - 'dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/1023019602f919e0cb79be9f9cf64ab283088d7f': true + 'dicom-microscopy-viewer@https://codeload.github.com/ImagingDataCommons/dicom-microscopy-viewer/tar.gz/03b4732f05fb7d02b6247e2d75e69c73ab5c88ff': true overrides: From 21a48a97db5bc65f55f2a4d752690baf48a08f25 Mon Sep 17 00:00:00 2001 From: Igor Octaviano Date: Thu, 6 Aug 2026 20:58:02 -0300 Subject: [PATCH 5/5] fix(ci): poll Slim readiness in container tests Compose marks the app started before nginx is listening, so a bare curl right after `up -d` flakes. Match the DICOMweb poll pattern. --- .github/workflows/container-tests.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/container-tests.yml b/.github/workflows/container-tests.yml index 7c320008..2071169c 100644 --- a/.github/workflows/container-tests.yml +++ b/.github/workflows/container-tests.yml @@ -27,8 +27,20 @@ jobs: - name: Test web page run: | - curl -sI http://localhost:8008/ | grep -o '200 OK' - curl -s http://localhost:8008/ | grep -o 'Slim' + # Poll: compose returns as soon as the container process starts, + # before nginx is listening (same flake as a bare curl right after up). + for i in $(seq 1 30); do + if curl -sI http://localhost:8008/ | grep -q '200 OK' \ + && curl -s http://localhost:8008/ | grep -q 'Slim'; then + echo "Slim web page ready" + exit 0 + fi + sleep 2 + done + echo "Slim web page did not become ready in time" + docker compose ps || true + docker compose logs --tail=80 app || true + exit 1 - name: Test DICOMweb service run: |