import { render } from '@stencil/vitest'; describe('ontario-task-list', () => { beforeAll(() => { global.MutationObserver = class { constructor(callback: any) { (this as any).callback = callback; } observe(_target: any, _options: any) {} disconnect() {} takeRecords() { return []; } } as any; }); it('renders with a label and updates when the label changes', async () => { const page = await render(``); if (!page.root) { throw new Error('Component did not render properly.'); } const heading = page.root.shadowRoot?.querySelector('.ontario-task-list__heading'); if (!heading) { throw new Error('Heading element not found in shadowRoot.'); } expect(heading.textContent).toBe('My Task List'); // Update the label prop page.root.setAttribute('label', 'Updated Task List'); await page.waitForChanges(); expect(heading.textContent).toBe('Updated Task List'); }); it('handles language changes and updates translations', async () => { const page = await render(``); if (!page.root) { throw new Error('Component did not render properly.'); } // Verify initial language let completionText = page.root.shadowRoot?.querySelector('.ontario-task-list__completion-text')?.textContent; if (!completionText) { throw new Error('Completion text element not found in shadowRoot.'); } expect(completionText).toBe('You have completed 0 out of 0 tasks.'); // Change language to French page.root.setAttribute('language', 'fr'); await page.waitForChanges(); // Verify updated translation completionText = page.root.shadowRoot?.querySelector('.ontario-task-list__completion-text')?.textContent; expect(completionText).toBe('Vous avez complété 0 sur 0 tâches.'); }); });