| import { expect } from 'chai'; |
| import { Page } from 'puppeteer'; |
| import { |
| addEventListenersToPuppeteerPage, |
| loadCachedTestBed, |
| takeScreenshot, |
| TestBed, |
| } from '../../../puppeteer-tests/util'; |
| |
| describe('skottie-sk', () => { |
| let testBed: TestBed; |
| |
| before(async () => { |
| testBed = await loadCachedTestBed(); |
| }); |
| |
| describe('screenshots', () => { |
| it('should show the default page', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await takeScreenshot(testBed.page, 'skottie', 'default_page'); |
| }); |
| |
| it('shows lottie-web animation when a box is checked', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await testBed.page.click('checkbox-sk[label="Show lottie-web"]'); |
| await takeScreenshot(testBed.page, 'skottie', 'lottie_web'); |
| expect(testBed.page.url()).contains('l=true'); |
| }); |
| |
| it('shows JSON editor when a box is checked', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await testBed.page.click('checkbox-sk[label="Show editor"]'); |
| await takeScreenshot(testBed.page, 'skottie', 'json_editor'); |
| expect(testBed.page.url()).contains('e=true'); |
| }); |
| |
| it('shows GIF exporter when a box is checked', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await testBed.page.click('checkbox-sk[label="Show gif exporter"]'); |
| await takeScreenshot(testBed.page, 'skottie', 'gif_exporter'); |
| expect(testBed.page.url()).contains('g=true'); |
| }); |
| |
| it('shows text editor when a box is checked', async () => { |
| await navigateTo(testBed.page, `${testBed.baseUrl}?test=withText`); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 1200 }); |
| await testBed.page.click('checkbox-sk[label="Show text editor"]'); |
| await takeScreenshot(testBed.page, 'skottie', 'text_editor'); |
| expect(testBed.page.url()).contains('t=true'); |
| }); |
| |
| it('shows performance chart when a box is checked', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await testBed.page.click('checkbox-sk[label="Show performance chart"]'); |
| await takeScreenshot(testBed.page, 'skottie', 'performance_chart'); |
| expect(testBed.page.url()).contains('p=true'); |
| }); |
| |
| it('shows a dialog to upload multiple lotties when a box is checked', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await testBed.page.click('checkbox-sk[label="Show library"]'); |
| await takeScreenshot(testBed.page, 'skottie', 'library_upload'); |
| expect(testBed.page.url()).contains('i=true'); |
| }); |
| |
| it('shows audio uploader when a box is checked', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await testBed.page.click('checkbox-sk[label="Show audio"]'); |
| await takeScreenshot(testBed.page, 'skottie', 'audio_upload'); |
| expect(testBed.page.url()).contains('a=true'); |
| }); |
| |
| it('shows the embed code when a button is clicked', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await testBed.page.click('#embed-btn'); |
| await takeScreenshot(testBed.page, 'skottie', 'embed_instructions'); |
| }); |
| |
| it('shows the upload animation dialog when a button is clicked', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl); |
| // Focus in a little to see better. |
| await testBed.page.setViewport({ width: 1300, height: 800 }); |
| await testBed.page.click('.edit-config'); |
| await takeScreenshot(testBed.page, 'skottie', 'upload_animation'); |
| }); |
| }); |
| }); |
| |
| async function navigateTo(page: Page, base: string, queryParams: string = '') { |
| const eventPromise = await addEventListenersToPuppeteerPage(page, ['initial-animation-loaded']); |
| const loaded = eventPromise('initial-animation-loaded'); |
| await page.goto(`${base}${queryParams}`); |
| await loaded; |
| // To make the animation be in the same place, we pause the animation and rewind it to the |
| // beginning. |
| await pause(page); |
| await rewind(page); |
| await page.focus('a'); |
| } |
| |
| async function pause(page: Page) { |
| await page.$eval('#playpause', ((ele: Element) => { |
| if (ele.textContent === 'Pause') { |
| (ele as HTMLButtonElement).click(); |
| } |
| })); |
| } |
| |
| async function rewind(page: Page) { |
| await page.click('#rewind'); |
| } |