mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-11 00:10:40 +00:00
## Summary Added comprehensive component test suite for WidgetImageCompare widget with 410 test assertions covering display, edge cases, and integration scenarios. ## Changes - **What**: Created [Vue Test Utils](https://vue-test-utils.vuejs.org/) test suite for [WidgetImageCompare component](src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.vue) using [Vitest](https://vitest.dev/) testing framework ## Review Focus Test coverage completeness for string vs object value handling, accessibility attribute propagation, and edge case robustness including malformed URLs and empty states. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5549-test-Add-component-test-for-image-compare-widget-26e6d73d365081189fe0d010f87d1eec) by [Unito](https://www.unito.io) --------- Co-authored-by: DrJKL <DrJKL@users.noreply.github.com>
71 lines
1.7 KiB
Vue
71 lines
1.7 KiB
Vue
<template>
|
|
<ImageCompare
|
|
:tabindex="widget.options?.tabindex ?? 0"
|
|
:aria-label="widget.options?.ariaLabel"
|
|
:aria-labelledby="widget.options?.ariaLabelledby"
|
|
:pt="widget.options?.pt"
|
|
:pt-options="widget.options?.ptOptions"
|
|
:unstyled="widget.options?.unstyled"
|
|
>
|
|
<template #left>
|
|
<img
|
|
:src="beforeImage"
|
|
:alt="beforeAlt"
|
|
class="w-full h-full object-cover"
|
|
/>
|
|
</template>
|
|
<template #right>
|
|
<img
|
|
:src="afterImage"
|
|
:alt="afterAlt"
|
|
class="w-full h-full object-cover"
|
|
/>
|
|
</template>
|
|
</ImageCompare>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import ImageCompare from 'primevue/imagecompare'
|
|
import { computed } from 'vue'
|
|
|
|
import type { SimplifiedWidget } from '@/types/simplifiedWidget'
|
|
|
|
export interface ImageCompareValue {
|
|
before: string
|
|
after: string
|
|
beforeAlt?: string
|
|
afterAlt?: string
|
|
initialPosition?: number
|
|
}
|
|
|
|
// Image compare widgets typically don't have v-model, they display comparison
|
|
const props = defineProps<{
|
|
widget: SimplifiedWidget<ImageCompareValue | string>
|
|
readonly?: boolean
|
|
}>()
|
|
|
|
const beforeImage = computed(() => {
|
|
const value = props.widget.value
|
|
return typeof value === 'string' ? value : value?.before || ''
|
|
})
|
|
|
|
const afterImage = computed(() => {
|
|
const value = props.widget.value
|
|
return typeof value === 'string' ? '' : value?.after || ''
|
|
})
|
|
|
|
const beforeAlt = computed(() => {
|
|
const value = props.widget.value
|
|
return typeof value === 'object' && value?.beforeAlt
|
|
? value.beforeAlt
|
|
: 'Before image'
|
|
})
|
|
|
|
const afterAlt = computed(() => {
|
|
const value = props.widget.value
|
|
return typeof value === 'object' && value?.afterAlt
|
|
? value.afterAlt
|
|
: 'After image'
|
|
})
|
|
</script>
|