diff --git a/packages/editor-ui/src/components/canvas/elements/buttons/CanvasExecuteWorkflowButton.spec.ts b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasExecuteWorkflowButton.spec.ts new file mode 100644 index 0000000000..71db48cb90 --- /dev/null +++ b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasExecuteWorkflowButton.spec.ts @@ -0,0 +1,33 @@ +import { createComponentRenderer } from '@/__tests__/render'; +import CanvasExecuteWorkflowButton from './CanvasExecuteWorkflowButton.vue'; + +const renderComponent = createComponentRenderer(CanvasExecuteWorkflowButton); + +describe('CanvasExecuteWorkflowButton', () => { + it('should render correctly', () => { + const wrapper = renderComponent(); + + expect(wrapper.html()).toMatchSnapshot(); + }); + + it('should render different label when executing', () => { + const wrapper = renderComponent({ + props: { + executing: true, + }, + }); + + expect(wrapper.getAllByText('Executing workflow')).toHaveLength(2); + }); + + it('should render different label when executing and waiting for webhook', () => { + const wrapper = renderComponent({ + props: { + executing: true, + waitingForWebhook: true, + }, + }); + + expect(wrapper.getAllByText('Waiting for trigger event')).toHaveLength(2); + }); +}); diff --git a/packages/editor-ui/src/components/canvas/elements/buttons/CanvasExecuteWorkflowButton.vue b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasExecuteWorkflowButton.vue index 1ef7ef7866..65a1312e55 100644 --- a/packages/editor-ui/src/components/canvas/elements/buttons/CanvasExecuteWorkflowButton.vue +++ b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasExecuteWorkflowButton.vue @@ -2,31 +2,36 @@ import KeyboardShortcutTooltip from '@/components/KeyboardShortcutTooltip.vue'; import { computed } from 'vue'; import { useI18n } from '@/composables/useI18n'; -import { useUIStore } from '@/stores/ui.store'; defineEmits<{ click: [event: MouseEvent]; }>(); -const uiStore = useUIStore(); -const locale = useI18n(); +const props = defineProps<{ + waitingForWebhook: boolean; + executing: boolean; +}>(); -const workflowRunning = computed(() => uiStore.isActionActive['workflowRunning']); +const i18n = useI18n(); -const runButtonText = computed(() => { - if (!workflowRunning.value) { - return locale.baseText('nodeView.runButtonText.executeWorkflow'); +const label = computed(() => { + if (!props.executing) { + return i18n.baseText('nodeView.runButtonText.executeWorkflow'); } - return locale.baseText('nodeView.runButtonText.executingWorkflow'); + if (props.waitingForWebhook) { + return i18n.baseText('nodeView.runButtonText.waitingForTriggerEvent'); + } + + return i18n.baseText('nodeView.runButtonText.executingWorkflow'); });