ohif-viewer/tests/pages/MainToolbarPageObject.ts
Bill Wallace 1df671e9ab
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
2026-03-17 07:52:17 -04:00

342 lines
8.1 KiB
TypeScript

import { Page } from '@playwright/test';
export class MainToolbarPageObject {
readonly page: Page;
constructor(page: Page) {
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 {
button,
async click() {
await button.click();
},
};
}
get layoutSelection() {
const page = this.page;
const self = this;
const button = page.getByTestId('Layout');
const layoutSelection = {
button,
async click() {
await button.click();
},
};
return {
...layoutSelection,
get axialPrimary() {
const button = page.getByTestId('Axial Primary');
return {
button,
async click() {
await layoutSelection.click();
await button.click();
},
};
},
get MPR() {
const button = page.getByTestId('MPR');
return {
button,
async click() {
await layoutSelection.click();
await button.click();
await self.waitForVolumeLoad();
},
};
},
get threeDFourUp() {
const button = page.getByTestId('3D four up');
return {
button,
async click() {
await layoutSelection.click();
await button.click();
await self.waitForVolumeLoad();
},
};
},
get threeDMain() {
const button = page.getByTestId('3D main');
return {
button,
async click() {
await layoutSelection.click();
await button.click();
await self.waitForVolumeLoad();
},
};
},
get threeDOnly() {
const button = page.getByTestId('3D only');
return {
button,
async click() {
await layoutSelection.click();
await button.click();
await self.waitForVolumeLoad();
},
};
},
get threeDPrimary() {
const button = page.getByTestId('3D primary');
return {
button,
async click() {
await layoutSelection.click();
await button.click();
await self.waitForVolumeLoad();
},
};
},
};
}
get measurementTools() {
const page = this.page;
const button = page.getByTestId('MeasurementTools-split-button-secondary');
const measurementTools = {
button,
async click() {
await button.click();
},
};
return {
...measurementTools,
get selectedTool() {
const button = page.getByTestId('MeasurementTools-split-button-primary');
return {
button,
async click() {
await button.click();
},
};
},
get arrowAnnotate() {
const button = page.getByTestId('ArrowAnnotate');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
get bidirectional() {
const button = page.getByTestId('Bidirectional');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
get circleROI() {
const button = page.getByTestId('CircleROI');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
get ellipticalROI() {
const button = page.getByTestId('EllipticalROI');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
get length() {
const button = page.locator('[data-cy="Length"][role="menuitem"]');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
get livewireContour() {
const button = page.getByTestId('LivewireContour');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
get rectangleROI() {
const button = page.getByTestId('RectangleROI');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
get splineROI() {
const button = page.getByTestId('SplineROI');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
get freehandROI() {
const button = page.getByTestId('PlanarFreehandROI');
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
/* microscopy specific tools */
// `.last()` targets the menu item inside the dropdown, not the active-tool
// indicator inside the split-button primary
// because both share the same data-cy value (e.g. "line")
// Other microscopy tools might follow the same pattern
get line() {
const button = page.getByTestId('line').last();
return {
button,
async click() {
await measurementTools.click();
await button.click();
},
};
},
};
}
get moreTools() {
const page = this.page;
const button = page.getByTestId('MoreTools-split-button-secondary');
const moreTools = {
button,
async click() {
await button.click();
},
};
return {
...moreTools,
get angle() {
const button = page.getByTestId('Angle');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
get cobbAngle() {
const button = page.getByTestId('CobbAngle');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
get flipHorizontal() {
const button = page.getByTestId('flipHorizontal');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
get invert() {
const button = page.getByTestId('invert');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
get probe() {
const button = page.getByTestId('Probe');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
get reset() {
const button = page.locator('[data-cy="Reset"][role="menuitem"]');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
get rotateRight() {
const button = page.getByTestId('rotate-right');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
get tagBrowser() {
const button = page.getByTestId('TagBrowser');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
};
}
get panTool() {
const button = this.page.getByTestId('Pan');
return {
button,
async click() {
await button.click();
},
};
}
}