import { render } from '@stencil/vitest'; describe('ontario-task', () => { it('renders with default props', async () => { const page = await render(``); if (!page.root) { throw new Error('Component did not render properly.'); } expect(page.root).toEqualHtml(`
  • Not Started Not Started
  • `); }); it('renders with a custom label', async () => { const page = await render(``); if (!page.root) { throw new Error('Component did not render properly.'); } expect(page.root.shadowRoot?.querySelector('.ontario-task__label')?.textContent).toBe('Task 2'); }); it('renders with a different task status', async () => { const page = await render(``); if (!page.root) { throw new Error('Component did not render properly.'); } const badge = page.root.shadowRoot?.querySelector('ontario-badge'); expect(badge?.getAttribute('aria-label')).toBe('Task Status: Completed (completed)'); expect(badge?.colour).toBe('white'); expect(badge?.textContent).toBe('Completed'); }); it('updates when task status changes', async () => { const page = await render(``); if (!page.root) { throw new Error('Component did not render properly.'); } const badge = page.root.shadowRoot?.querySelector('ontario-badge'); expect(badge?.textContent).toBe('Not Started'); expect(badge?.getAttribute('aria-label')).toBe('Task Status: Not Started (notStarted)'); // Update the task status page.root.setAttribute('task-status', 'inProgress'); await page.waitForChanges(); // Wait for changes to propagate // Ensure the badge text and aria-label reflect the updated status expect(badge?.getAttribute('aria-label')).toBe('Task Status: In Progress (inProgress)'); expect(badge?.textContent).toBe('In Progress'); }); it('renders with accessibility attributes', async () => { const page = await render( ``, ); if (!page.root) { throw new Error('Component did not render properly.'); } const listItem = page.root.shadowRoot?.querySelector('li'); expect(listItem?.getAttribute('role')).toBe('group'); expect(listItem?.getAttribute('aria-labelledby')).toBe('task-label--task-5'); }); });