From 3a2b68f0980d2af5496b487cced3024a59bf52b1 Mon Sep 17 00:00:00 2001 From: Chris Haynes Date: Fri, 28 Aug 2020 22:30:49 +0100 Subject: [PATCH] Add e2e tests for slRadio --- test/e2e/radio.e2e.ts | 113 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 test/e2e/radio.e2e.ts diff --git a/test/e2e/radio.e2e.ts b/test/e2e/radio.e2e.ts new file mode 100644 index 000000000..64896dc82 --- /dev/null +++ b/test/e2e/radio.e2e.ts @@ -0,0 +1,113 @@ +import { newE2EPage } from '@stencil/core/testing'; + +const testContentUnchecked = ` +Radio + +`; + +const testContentChecked = ` +Radio + +`; + +describe('radio', () => { + it('should emit slFocus when gaining focus', async () => { + const page = await newE2EPage(); + await page.setContent(testContentUnchecked); + + const radio = await page.find('sl-radio'); + + const slFocus = await radio.spyOnEvent('slFocus'); + + // give focus + await radio.click(); + + expect(slFocus).toHaveReceivedEventTimes(1); + }); + + it('should emit slBlur when losing focus', async () => { + const page = await newE2EPage(); + await page.setContent(testContentUnchecked); + + const radio = await page.find('sl-radio'); + const otherElement = await page.find('button'); + + const slBlur = await radio.spyOnEvent('slBlur'); + + //give focus + await radio.click(); + + // remove focus by clicking on other element + await otherElement.click(); + + expect(slBlur).toHaveReceivedEventTimes(1); + }); + + it('should emit slFocus on setFocus', async () => { + const page = await newE2EPage(); + await page.setContent(testContentUnchecked); + + const radio = await page.find('sl-radio'); + + const slFocus = await radio.spyOnEvent('slFocus'); + + await radio.callMethod('setFocus'); + + expect(slFocus).toHaveReceivedEventTimes(1); + }); + + it('should emit slBlur on removeFocus', async () => { + const page = await newE2EPage(); + await page.setContent(testContentUnchecked); + + const radio = await page.find('sl-radio'); + + const slBlur = await radio.spyOnEvent('slBlur'); + + await radio.callMethod('setFocus'); + await radio.callMethod('removeFocus'); + + expect(slBlur).toHaveReceivedEventTimes(1); + }); + + it('should emit slChange when state changes with click', async () => { + const page = await newE2EPage(); + await page.setContent(testContentUnchecked); + + const radio = await page.find('sl-radio'); + + const slChange = await radio.spyOnEvent('slChange'); + + await radio.click(); + + expect(slChange).toHaveReceivedEventTimes(1); + }); + + it('should emit slChange when state changes when checked attribute set', async () => { + const page = await newE2EPage(); + await page.setContent(testContentUnchecked); + + const radio = await page.find('sl-radio'); + + const slChange = await radio.spyOnEvent('slChange'); + + radio.setAttribute('checked', ''); + await page.waitForChanges(); + + expect(slChange).toHaveReceivedEventTimes(1); + }); + + it('should emit slChange when state changes when checked attribute removed', async () => { + const page = await newE2EPage(); + await page.setContent(testContentChecked); + + const radio = await page.find('sl-radio'); + + const slChange = await radio.spyOnEvent('slChange'); + + radio.removeAttribute('checked'); + await page.waitForChanges(); + + expect(slChange).toHaveReceivedEventTimes(1); + }); +});