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
});
});
});