feat: Add combined build (#5895)
* Add combined build * Link script location update * Security and validation fixes * Allow specifying target path in PR description * fix: Version match * Fix build detection issue * fix: Playwright deploy * Separate out the branch merge guard * Update docs and link info * test: Update the layout change to wait for network idle * Move audit late so the rest of the build can be worked on * Add text with network check to ensure we see this change is updated * Attempt to fix the mpr loading on ohif-downstream * PR review comments * Update docs * Update to CS3D 4.20.0 * PR comments * Add log on ohif-integration builds * Update build test * Removed unused space to kickoff build
This commit is contained in:
1 parent
15ef4c2e0f
commit
1df671e9ab
36 files changed
+1047
-301
No files matched your search
@@ -19,7 +19,7 @@ test.describe('3D four up Test', async () => {
|
||||
|
||||
await attemptAction(() => reduce3DViewportSize(page), 10, 100);
|
||||
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot(
|
||||
page,
|
||||
|
||||
@@ -17,7 +17,7 @@ test.describe('3D main Test', async () => {
|
||||
test('should render 3D main correctly.', async ({ page, mainToolbarPageObject }) => {
|
||||
await mainToolbarPageObject.layoutSelection.threeDMain.click();
|
||||
await attemptAction(() => reduce3DViewportSize(page), 10, 100);
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
await checkForScreenshot(page, page, screenShotPaths.threeDMain.threeDMainDisplayedCorrectly);
|
||||
});
|
||||
});
|
||||
@@ -17,7 +17,7 @@ test.describe('3D only Test', async () => {
|
||||
test('should render 3D only correctly.', async ({ page, mainToolbarPageObject }) => {
|
||||
await mainToolbarPageObject.layoutSelection.threeDOnly.click();
|
||||
await attemptAction(() => reduce3DViewportSize(page), 10, 100);
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
// Use a 4 percent diff pixel ratio to account for slight color differences in the 3D viewport
|
||||
await checkForScreenshot({
|
||||
page,
|
||||
|
||||
@@ -18,7 +18,7 @@ test.describe('3D primary Test', async () => {
|
||||
await mainToolbarPageObject.layoutSelection.threeDPrimary.click();
|
||||
|
||||
await attemptAction(() => reduce3DViewportSize(page), 10, 100);
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
await checkForScreenshot(
|
||||
page,
|
||||
page,
|
||||
|
||||
@@ -28,7 +28,7 @@ test('should display the arrow tool and allow free-form text to be entered', asy
|
||||
|
||||
await DOMOverlayPageObject.viewport.measurementTracking.confirm.click();
|
||||
|
||||
await page.waitForTimeout(2000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot({
|
||||
page,
|
||||
@@ -42,7 +42,7 @@ test('should display the arrow tool and allow free-form text to be entered', asy
|
||||
|
||||
await DOMOverlayPageObject.dialog.input.fillAndSave('Neil Peart was the drummer for Rush');
|
||||
|
||||
await page.waitForTimeout(2000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot({
|
||||
page,
|
||||
@@ -56,7 +56,7 @@ test('should display the arrow tool and allow free-form text to be entered', asy
|
||||
.nthMeasurement(0)
|
||||
.actions.rename('Drummer annotation arrow');
|
||||
|
||||
await page.waitForTimeout(2000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot({
|
||||
page,
|
||||
|
||||
@@ -39,6 +39,7 @@ test('should display the long series name properly within the series select butt
|
||||
const mode = 'viewer';
|
||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
await mainToolbarPageObject.moreTools.tagBrowser.click();
|
||||
const dicomTagBrowser = DOMOverlayPageObject.dialog.dicomTagBrowser;
|
||||
|
||||
|
||||
@@ -8,5 +8,6 @@ test.beforeEach(async ({ page }) => {
|
||||
|
||||
test('should invert the image', async ({ page, mainToolbarPageObject }) => {
|
||||
await mainToolbarPageObject.moreTools.invert.click();
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
await checkForScreenshot(page, page, screenShotPaths.invert.invertDisplayedCorrectly);
|
||||
});
|
||||
@@ -14,8 +14,7 @@ test('should launch MPR with unhydrated RTSTRUCT chosen from the data overlay me
|
||||
}) => {
|
||||
await mainToolbarPageObject.layoutSelection.MPR.click();
|
||||
|
||||
// Wait 5 seconds for MPR to load. This is necessary in particular when screen shots are added or replaced.
|
||||
await page.waitForTimeout(10000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot(
|
||||
page,
|
||||
@@ -35,8 +34,7 @@ test('should launch MPR with unhydrated RTSTRUCT chosen from the data overlay me
|
||||
// Adding an overlay should not show the LOAD button.
|
||||
await assertNumberOfModalityLoadBadges({ page, expectedCount: 0 });
|
||||
|
||||
// Wait 5 seconds for RT to load. This is necessary in particular when screen shots are added or replaced.
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot({
|
||||
page,
|
||||
|
||||
@@ -10,6 +10,7 @@ test.beforeEach(async ({ page }) => {
|
||||
|
||||
test('should display multiple segmentation overlays (both SEG and RT)', async ({
|
||||
page,
|
||||
mainToolbarPageObject,
|
||||
rightPanelPageObject,
|
||||
viewportPageObject,
|
||||
}) => {
|
||||
@@ -20,24 +21,21 @@ test('should display multiple segmentation overlays (both SEG and RT)', async ({
|
||||
await dataOverlayPageObject.toggle();
|
||||
await dataOverlayPageObject.addSegmentation('2d-tta_nnU-Net_Segmentation');
|
||||
|
||||
// A short wait after each overlay is selected to ensure it loads.
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
// Adding an overlay should not show the LOAD button.
|
||||
assertNumberOfModalityLoadBadges({ page, expectedCount: 0 });
|
||||
|
||||
await dataOverlayPageObject.addSegmentation('Segmentation');
|
||||
|
||||
// A short wait after each overlay is selected to ensure it loads.
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
// Adding an overlay should not show the LOAD button.
|
||||
assertNumberOfModalityLoadBadges({ page, expectedCount: 0 });
|
||||
|
||||
await dataOverlayPageObject.addSegmentation('3d_lowres-tta_nnU-Net_Segmentation');
|
||||
|
||||
// A short wait after each overlay is selected to ensure it loads.
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
// Adding an overlay should not show the LOAD button.
|
||||
assertNumberOfModalityLoadBadges({ page, expectedCount: 0 });
|
||||
@@ -61,7 +59,7 @@ test('should display multiple segmentation overlays (both SEG and RT)', async ({
|
||||
// Navigate to image 56.
|
||||
await press({ page, key: 'ArrowDown', nTimes: 55 });
|
||||
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot({
|
||||
page,
|
||||
@@ -73,8 +71,7 @@ test('should display multiple segmentation overlays (both SEG and RT)', async ({
|
||||
|
||||
await dataOverlayPageObject.addSegmentation('Series 3 - RTSTRUCT');
|
||||
|
||||
// A short wait after each overlay is selected to ensure it loads.
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
// Adding an overlay should not show the LOAD button.
|
||||
assertNumberOfModalityLoadBadges({ page, expectedCount: 0 });
|
||||
|
||||
@@ -24,7 +24,7 @@ test('should launch MPR with unhydrated RTSTRUCT chosen from the data overlay me
|
||||
// Hide the overlay menu.
|
||||
await dataOverlayPageObject.toggle();
|
||||
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot(
|
||||
page,
|
||||
@@ -34,7 +34,7 @@ test('should launch MPR with unhydrated RTSTRUCT chosen from the data overlay me
|
||||
|
||||
await mainToolbarPageObject.layoutSelection.MPR.click();
|
||||
|
||||
await page.waitForTimeout(5000);
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
|
||||
await checkForScreenshot(
|
||||
page,
|
||||
|
||||
+3
-3
@@ -1,5 +1,4 @@
|
||||
import { test } from 'playwright-test-coverage';
|
||||
import { visitStudy, checkForScreenshot, screenShotPaths } from './utils';
|
||||
import { test, visitStudy, checkForScreenshot, screenShotPaths } from './utils';
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
const studyInstanceUID =
|
||||
@@ -8,7 +7,8 @@ test.beforeEach(async ({ page }) => {
|
||||
await visitStudy(page, studyInstanceUID, mode, 10000);
|
||||
});
|
||||
|
||||
test('should properly display MPR for MR', async ({ page }) => {
|
||||
test('should properly display MPR for MR', async ({ page, mainToolbarPageObject }) => {
|
||||
await mainToolbarPageObject.waitForVolumeLoad();
|
||||
await page.getByTestId('side-panel-header-right').click();
|
||||
// await page.getByTestId('study-browser-thumbnail-no-image').dblclick();
|
||||
await checkForScreenshot(page, page, screenShotPaths.mpr2.mprDisplayedCorrectly);
|
||||
|
||||
@@ -7,6 +7,11 @@ export class MainToolbarPageObject {
|
||||
this.page = page;
|
||||
}
|
||||
|
||||
async waitForVolumeLoad(): Promise<void> {
|
||||
await this.page.waitForTimeout(2000);
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120000 });
|
||||
}
|
||||
|
||||
get crosshairs() {
|
||||
const button = this.page.getByTestId('Crosshairs');
|
||||
return {
|
||||
@@ -18,6 +23,7 @@ export class MainToolbarPageObject {
|
||||
}
|
||||
get layoutSelection() {
|
||||
const page = this.page;
|
||||
const self = this;
|
||||
|
||||
const button = page.getByTestId('Layout');
|
||||
const layoutSelection = {
|
||||
@@ -46,6 +52,7 @@ export class MainToolbarPageObject {
|
||||
async click() {
|
||||
await layoutSelection.click();
|
||||
await button.click();
|
||||
await self.waitForVolumeLoad();
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -56,6 +63,7 @@ export class MainToolbarPageObject {
|
||||
async click() {
|
||||
await layoutSelection.click();
|
||||
await button.click();
|
||||
await self.waitForVolumeLoad();
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -66,6 +74,7 @@ export class MainToolbarPageObject {
|
||||
async click() {
|
||||
await layoutSelection.click();
|
||||
await button.click();
|
||||
await self.waitForVolumeLoad();
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -76,6 +85,7 @@ export class MainToolbarPageObject {
|
||||
async click() {
|
||||
await layoutSelection.click();
|
||||
await button.click();
|
||||
await self.waitForVolumeLoad();
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -86,6 +96,7 @@ export class MainToolbarPageObject {
|
||||
async click() {
|
||||
await layoutSelection.click();
|
||||
await button.click();
|
||||
await self.waitForVolumeLoad();
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user