diff --git a/packages/renderer/src/lib/onboarding/Onboarding.svelte b/packages/renderer/src/lib/onboarding/Onboarding.svelte index d7a7c7552535c..12f8e1a29cb48 100644 --- a/packages/renderer/src/lib/onboarding/Onboarding.svelte +++ b/packages/renderer/src/lib/onboarding/Onboarding.svelte @@ -397,7 +397,6 @@ function handleEscape({ key }: any) { {/each} diff --git a/packages/renderer/src/lib/onboarding/OnboardingItem.spec.ts b/packages/renderer/src/lib/onboarding/OnboardingItem.spec.ts index f81e83e8a756a..a6e836a996961 100644 --- a/packages/renderer/src/lib/onboarding/OnboardingItem.spec.ts +++ b/packages/renderer/src/lib/onboarding/OnboardingItem.spec.ts @@ -20,9 +20,10 @@ import { test, expect, vi } from 'vitest'; import { render, screen } from '@testing-library/svelte'; import OnboardingItem from './OnboardingItem.svelte'; import type { OnboardingStepItem } from '../../../../main/src/plugin/api/onboarding'; -import { ContextUI } from '../context/context'; +import { context } from '/@/stores/context'; import { configurationProperties } from '/@/stores/configurationProperties'; import { CONFIGURATION_ONBOARDING_SCOPE } from '../../../../main/src/plugin/configuration-registry-constants'; +import { ContextUI } from '../context/context'; test('Expect button html when passing a button tag in markdown', async () => { const textComponent: OnboardingStepItem = { @@ -31,7 +32,6 @@ test('Expect button html when passing a button tag in markdown', async () => { render(OnboardingItem, { extension: 'extension', item: textComponent, - getContext: vi.fn(), inProgressCommandExecution: vi.fn(), }); const button = screen.getByRole('button', { name: 'label' }); @@ -46,7 +46,6 @@ test('Expect markdown html when passing a text component', async () => { render(OnboardingItem, { extension: 'extension', item: textComponent, - getContext: vi.fn(), inProgressCommandExecution: vi.fn(), }); const markdownSection = screen.getByLabelText('markdown-content'); @@ -58,12 +57,12 @@ test('Expect placeholders are replaced when passing a text component with placeh const textComponent: OnboardingStepItem = { value: '${onboardingContext:text}', }; - const context = new ContextUI(); - context.setValue('extension.onboarding.text', 'placeholder content'); + const globalContext = new ContextUI(); + globalContext.setValue('extension.onboarding.text', 'placeholder content'); + context.set(globalContext); render(OnboardingItem, { extension: 'extension', item: textComponent, - getContext: () => context, inProgressCommandExecution: vi.fn(), }); const markdownSection = screen.getByLabelText('markdown-content'); @@ -93,7 +92,6 @@ test('Expect boolean configuration placeholder to be replaced with a checkbox', render(OnboardingItem, { extension: 'extension', item: textComponent, - getContext: vi.fn(), inProgressCommandExecution: vi.fn(), }); const input = screen.getByLabelText('record-description'); @@ -126,7 +124,6 @@ test('Expect when configuration placeholder is type string and format file to be render(OnboardingItem, { extension: 'extension', item: textComponent, - getContext: vi.fn(), inProgressCommandExecution: vi.fn(), }); const readOnlyInput = screen.getByLabelText('record-description'); @@ -160,7 +157,6 @@ test('Expect a type text configuration placeholder to be replaced by a text inpu render(OnboardingItem, { extension: 'extension', item: textComponent, - getContext: vi.fn(), inProgressCommandExecution: vi.fn(), }); const input = screen.getByLabelText('record-description'); @@ -193,7 +189,6 @@ test('Expect a configuration to be visible in the onboarding even if hidden prop render(OnboardingItem, { extension: 'extension', item: textComponent, - getContext: vi.fn(), inProgressCommandExecution: vi.fn(), }); const input = screen.getByLabelText('record-description'); @@ -203,3 +198,28 @@ test('Expect a configuration to be visible in the onboarding even if hidden prop expect((input as HTMLSelectElement).name).toBe('extension.text.prop'); expect((input as HTMLInputElement).placeholder).toBe('Example: text'); }); + +test('Expect value rendered is updated if context value is updated', async () => { + const textComponent: OnboardingStepItem = { + value: '${onboardingContext:text}', + }; + const globalContext = new ContextUI(); + globalContext.setValue('extension.onboarding.text', 'first value'); + context.set(globalContext); + render(OnboardingItem, { + extension: 'extension', + item: textComponent, + inProgressCommandExecution: vi.fn(), + }); + const markdownSection = screen.getByLabelText('markdown-content'); + expect(markdownSection).toBeInTheDocument(); + expect(markdownSection.innerHTML.includes('first value')).toBe(true); + + // simulate the value in context is updated + globalContext.setValue('extension.onboarding.text', 'second value'); + context.set(globalContext); + + await new Promise(resolve => setTimeout(resolve, 100)); + const markdownSection2 = screen.getByLabelText('markdown-content'); + expect(markdownSection2.innerHTML.includes('second value')).toBe(true); +}); diff --git a/packages/renderer/src/lib/onboarding/OnboardingItem.svelte b/packages/renderer/src/lib/onboarding/OnboardingItem.svelte index 777831d67f814..9d1465d41e0a6 100644 --- a/packages/renderer/src/lib/onboarding/OnboardingItem.svelte +++ b/packages/renderer/src/lib/onboarding/OnboardingItem.svelte @@ -1,5 +1,5 @@