diff --git a/app/components/CameraManager.vue b/app/components/CameraManager.vue
index baca19cdf..3c56ec4ef 100644
--- a/app/components/CameraManager.vue
+++ b/app/components/CameraManager.vue
@@ -38,6 +38,7 @@ const { showDialog, width } = defineProps({
size="small"
color="white"
class="text-caption text-none"
+ data-testid="closeCameraManagerButton"
@click="emit('close')"
>Close
diff --git a/app/components/CameraManager/List.vue b/app/components/CameraManager/List.vue
index 38f3ca6bc..d30b578a7 100644
--- a/app/components/CameraManager/List.vue
+++ b/app/components/CameraManager/List.vue
@@ -54,6 +54,7 @@ async function saveRename() {
color="success"
size="x-small"
class="mr-1"
+ :data-testid="'restoreCameraPositionButton_' + position.name"
@click="restorePosition(position.id)"
>
mdi-play
diff --git a/app/components/CameraManager/Saver.vue b/app/components/CameraManager/Saver.vue
index 7c0a569c1..c97ee1d80 100644
--- a/app/components/CameraManager/Saver.vue
+++ b/app/components/CameraManager/Saver.vue
@@ -27,6 +27,7 @@ async function saveCurrentPosition() {
v-model="newPositionName"
label="Position Name"
placeholder="e.g. Front View"
+ data-testid="cameraPositionNameInput"
density="compact"
variant="outlined"
hide-details
@@ -39,6 +40,7 @@ async function saveCurrentPosition() {
variant="elevated"
block
size="small"
+ data-testid="saveCameraPositionButton"
:disabled="!newPositionName"
@click="saveCurrentPosition"
height="32"
diff --git a/app/components/CameraOrientation.vue b/app/components/CameraOrientation.vue
index 39882f1a6..f8300a8e6 100644
--- a/app/components/CameraOrientation.vue
+++ b/app/components/CameraOrientation.vue
@@ -212,6 +212,7 @@ watch(hoveredFace, (newFace, oldFace) => {
size="32"
class="satellite-node position-absolute"
:style="orientation.position"
+ :data-testid="'cameraOrientation' + orientation.vtkKey + 'Button'"
@mouseenter="hoveredFace = orientation.face"
@mouseleave="hoveredFace = undefined"
@click.stop="emit('select', orientation.value)"
@@ -241,6 +242,7 @@ watch(hoveredFace, (newFace, oldFace) => {
size="32"
variant="text"
class="ma-1"
+ :data-testid="'cameraOrientation' + orientation.vtkKey + 'Button'"
@mouseenter="hoveredFace = orientation.face"
@mouseleave="hoveredFace = undefined"
@click.stop="emit('select', orientation.value)"
diff --git a/app/components/Screenshot.vue b/app/components/Screenshot.vue
index 0968eaec8..4a5e98c86 100644
--- a/app/components/Screenshot.vue
+++ b/app/components/Screenshot.vue
@@ -96,6 +96,7 @@ watch(screenshot_type, (value) => {
value="file"
prepend-icon="mdi-file-download-outline"
size="small"
+ data-testid="screenshotFileButton"
class="text-caption text-none"
>
File
@@ -104,6 +105,7 @@ watch(screenshot_type, (value) => {
value="clipboard"
prepend-icon="mdi-content-copy"
size="small"
+ data-testid="screenshotClipboardButton"
class="text-caption text-none"
>
Clipboard
@@ -119,6 +121,7 @@ watch(screenshot_type, (value) => {
label="File name"
variant="outlined"
density="compact"
+ data-testid="screenshotFileNameInput"
hide-details
class="text-caption"
>
@@ -130,6 +133,7 @@ watch(screenshot_type, (value) => {
label="Extension"
variant="outlined"
density="compact"
+ data-testid="screenshotExtensionSelect"
hide-details
required
class="text-caption"
@@ -143,6 +147,7 @@ watch(screenshot_type, (value) => {
v-model="include_background"
:disabled="screenshot_type === 'file' && output_extension !== 'png'"
label="Include background"
+ data-testid="screenshotIncludeBackgroundSwitch"
density="compact"
hide-details
inset
@@ -158,6 +163,7 @@ watch(screenshot_type, (value) => {
variant="text"
size="small"
color="white"
+ data-testid="screenshotCancelButton"
class="text-caption text-none"
@click="show = false"
>
@@ -167,6 +173,7 @@ watch(screenshot_type, (value) => {
variant="outlined"
size="small"
class="text-caption text-none"
+ data-testid="screenshotActionButton"
:disabled="(screenshot_type === 'file' && !filename) || !output_extension"
color="white"
@click="takeScreenshot()"
diff --git a/app/components/ViewToolbar.vue b/app/components/ViewToolbar.vue
index 03644e9ae..110c6fa06 100644
--- a/app/components/ViewToolbar.vue
+++ b/app/components/ViewToolbar.vue
@@ -180,6 +180,7 @@ const camera_options = computed(() => [
@@ -116,6 +117,7 @@ defineExpose({ get_viewer_id });
size="large"
variant="flat"
class="pick-pulse"
+ data-testid="hoverHighlightChip"
style="pointer-events: auto"
@click="stopHoverHighlight"
>