import { BrowserTestCase } from '@atlaskit/webdriver-runner/runner'; import { codeBlockSelectors } from '../../__helpers/page-objects/_code-block'; import { mountEditor, goToEditorTestingWDExample, } from '../../__helpers/testing-example-helpers'; import { getDocFromElement, editable, insertEmoji, emojiItem, typeahead, highlightEmojiInTypeahead, } from '../_helpers'; // safari failure on browserstack BrowserTestCase( 'emoji-3.ts: user can navigate typeahead using keyboard', { skip: ['safari', 'edge'] }, async (client: any, testName: string) => { const page = await goToEditorTestingWDExample(client); await mountEditor(page, { appearance: 'full-page' }); await page.type(editable, ':'); await page.type(editable, 'smi'); await page.waitForSelector(typeahead); await page.keys('ArrowDown'); // The typeahead may re-order our results. // Go down 5 items til we find our desired emoji await highlightEmojiInTypeahead(page, 'smile'); await page.keys('Return'); const doc = await page.$eval(editable, getDocFromElement); expect(doc).toMatchCustomDocSnapshot(testName); }, ); // issue with safari on browserstack works on local BrowserTestCase( 'emoji-3.ts: should select emoji on return', { skip: ['safari', 'edge'] }, async (client: any, testName: string) => { const page = await goToEditorTestingWDExample(client); await mountEditor(page, { appearance: 'full-page' }); await page.type(editable, ':'); await page.type(editable, 'wink'); await page.waitForSelector(typeahead); // The typeahead may re-order our results. // Grab the currently selected emoji, to reference in render. await highlightEmojiInTypeahead(page, 'wink'); await page.keys('Return'); const doc = await page.$eval(editable, getDocFromElement); expect(doc).toMatchCustomDocSnapshot(testName); }, ); BrowserTestCase( 'emoji-3.ts: should render emoji inside codeblock', { skip: ['safari', 'edge'] }, async (client: any, testName: string) => { const page = await goToEditorTestingWDExample(client); await mountEditor(page, { appearance: 'full-page' }); await page.type(editable, ['``', '`']); await page.waitForSelector(codeBlockSelectors.code, { timeout: 1000 }); await page.type(editable, ':smile:'); const doc = await page.$eval(editable, getDocFromElement); expect(doc).toMatchCustomDocSnapshot(testName); }, ); // BUG on IE BrowserTestCase( 'emoji-3.ts: should render emoji inside action', { skip: ['safari', 'edge'] }, async (client: any, testName: string) => { const page = await goToEditorTestingWDExample(client); await mountEditor(page, { appearance: 'full-page' }); await page.type(editable, '[] '); await insertEmoji(page, 'smile'); await page.waitForSelector(emojiItem('smile'), { timeout: 1000 }); const doc = await page.$eval(editable, getDocFromElement); expect(doc).toMatchCustomDocSnapshot(testName); }, ); BrowserTestCase( 'emoji-3.ts: should not show typeahead with text: ', { skip: ['edge'] }, async (client: any) => { const page = await goToEditorTestingWDExample(client); await mountEditor(page, { appearance: 'full-page' }); await page.type(editable, 'text: '); expect(await page.isExisting(typeahead)).toBe(false); }, ); BrowserTestCase( 'emoji-3.ts: ":" does not show the picker', { skip: ['edge'] }, async (client: any) => { const page = await goToEditorTestingWDExample(client); await mountEditor(page, { appearance: 'full-page' }); await page.type(editable, ': '); expect(await page.isExisting(typeahead)).toBe(false); }, );