import { newE2EPage } from '@stencil/core/testing'; const testContent = ` Other element Undo Redo Cut Copy Paste Delete `; describe('menu', () => { it('should emit slFocus when gaining focus', async () => { const page = await newE2EPage(); await page.setContent(testContent); const menu = await page.find('sl-menu'); const button = await page.find('sl-button'); const slFocus = await menu.spyOnEvent('slFocus'); // give focus to button await button.click(); // tab to menu await button.press('Tab'); expect(slFocus).toHaveReceivedEventTimes(1); }); it('should emit slBlur when losing focus', async () => { const page = await newE2EPage(); await page.setContent(testContent); const menu = await page.find('sl-menu'); const slBlur = await menu.spyOnEvent('slBlur'); //give focus await menu.callMethod('setFocus'); // remove focus by tabbing to other element await menu.press('Tab'); expect(slBlur).toHaveReceivedEventTimes(1); }); it('should emit slFocus on setFocus', async () => { const page = await newE2EPage(); await page.setContent(testContent); const menu = await page.find('sl-menu'); const slFocus = await menu.spyOnEvent('slFocus'); await menu.callMethod('setFocus'); expect(slFocus).toHaveReceivedEventTimes(1); }); it('should emit slBlur on removeFocus', async () => { const page = await newE2EPage(); await page.setContent(testContent); const menu = await page.find('sl-menu'); const slBlur = await menu.spyOnEvent('slBlur'); await menu.callMethod('setFocus'); await menu.callMethod('removeFocus'); expect(slBlur).toHaveReceivedEventTimes(1); }); it('should emit slSelect when menu item selected', async () => { const page = await newE2EPage(); await page.setContent(testContent); const menu = await page.find('sl-menu'); const menuItem = await page.find('sl-menu-item'); const menuItemEl = await page.$eval('sl-menu-item', el => el); const slSelect = await menu.spyOnEvent('slSelect'); await menuItem.click(); expect(slSelect).toHaveReceivedEventTimes(1); expect(slSelect).toHaveReceivedEventDetail({ item: menuItemEl }); }); });