import { expect, Locator } from '@playwright/test'; import { test, EventSpy } from '@stencil/playwright'; test.describe('ontario-dropdown-list', () => { let host: Locator; let select: Locator; let changeSpy: EventSpy; test.beforeEach(async ({ page }) => { await page.setContent(` `); await page.waitForChanges(); host = page.locator('ontario-dropdown-list').first(); select = host.locator('select').first(); changeSpy = await page.spyOnEvent('change'); }); test('updates the component value and emits change detail when an option is selected', async ({ page }) => { await select.selectOption('dropdown-option-2'); await page.waitForChanges(); await expect(changeSpy).toHaveReceivedEvent(); await expect(changeSpy).toHaveReceivedEventDetail({ value: 'dropdown-option-2', }); expect(await host.evaluate((element: HTMLOntarioDropdownListElement) => element.value)).toBe('dropdown-option-2'); }); test('applies external value updates to the rendered selection', async ({ page }) => { await host.evaluate((element: HTMLOntarioDropdownListElement) => { element.value = 'dropdown-option-2'; }); await page.waitForChanges(); await expect(select).toHaveValue('dropdown-option-2'); expect(await host.evaluate((element: HTMLOntarioDropdownListElement) => element.value)).toBe('dropdown-option-2'); }); }); // import { newE2EPage } from '@stencil/core/testing'; // describe('ontario-dropdown-list', () => { // it('renders dropdown-list', async () => { // const page = await newE2EPage(); // await page.setContent(''); // const component = await page.find('ontario-dropdown-list'); // const element = await page.find('ontario-dropdown-list >>> select'); // expect(component).toHaveClass('hydrated'); // expect(element).toHaveClasses(['ontario-input', 'ontario-dropdown']); // }); // describe('render changes', () => { // let page: any; // let component: any; // let element: any; // beforeEach(async () => { // page = await newE2EPage(); // await page.setContent( // ``, // ); // component = await page.find('ontario-dropdown-list'); // element = await page.find('ontario-dropdown-list >>> select'); // }); // it('renders changes to the name property', async () => { // component.setProperty('name', 'ontario-dropdown-name'); // await page.waitForChanges(); // expect(element).toEqualAttributes({ // name: 'ontario-dropdown-name', // }); // }); // }); // }); // describe('events', () => { // it('fires the onChange event', async () => { // const page = await newE2EPage(); // await page.setContent(''); // const changeEvent = await page.spyOnEvent('change'); // const component = await page.find('ontario-dropdown-list'); // component.triggerEvent('change'); // await page.waitForChanges(); // expect(changeEvent).toHaveReceivedEventTimes(1); // }); // });