| import { expect } from 'chai'; |
| import { |
| addEventListenersToPuppeteerPage, |
| loadCachedTestBed, |
| takeScreenshot, |
| TestBed, |
| } from '../../../puppeteer-tests/util'; |
| import { END_BUSY_EVENT } from '../codesize-scaffold-sk/events'; |
| |
| describe('binary-page-sk', () => { |
| let testBed: TestBed; |
| |
| before(async () => { |
| testBed = await loadCachedTestBed(); |
| }); |
| |
| beforeEach(async () => { |
| await testBed.page.setViewport({ width: 1024, height: 768 }); |
| const eventPromise = await addEventListenersToPuppeteerPage(testBed.page, [END_BUSY_EVENT]); |
| const loaded = eventPromise(END_BUSY_EVENT); // Emitted when page is loaded. |
| await testBed.page.goto(testBed.baseUrl); |
| await loaded; |
| }); |
| |
| it('should render the demo page', async () => { |
| expect(await testBed.page.$$('binary-page-sk')).to.have.length(1); |
| }); |
| |
| describe('screenshots', () => { |
| it('shows the default view', async () => { |
| await takeScreenshot(testBed.page, 'codesize', 'binary-page-sk'); |
| }); |
| |
| it('shows a child node', async () => { |
| // Hover over the rightmost node in the tree. We use coordinates because the SVG generated |
| // by the google.visualization.TreeMap is not amenable to querying. |
| const treemap = await testBed.page.$('#treemap'); |
| const box = await treemap.boundingBox(); |
| await testBed.page.mouse.click( |
| box.x + box.width - 50, |
| box.y + box.height - 50, |
| ); |
| |
| // Give the TreeMap a chance to redraw. |
| await new Promise((resolve) => setTimeout(resolve, 1000)); |
| |
| await takeScreenshot(testBed.page, 'codesize', 'binary-page-sk_node'); |
| }); |
| |
| it('shows some suggestions when the user types in letters', async () => { |
| // https://stackoverflow.com/a/56772379/1447621 |
| await testBed.page.focus('.search-bar input'); |
| await testBed.page.keyboard.type('s'); |
| |
| await takeScreenshot(testBed.page, 'codesize', 'binary-page-sk-search_bar'); |
| }); |
| |
| it('jumps to the first result when the user types enter', async () => { |
| await testBed.page.focus('.search-bar input'); |
| await testBed.page.keyboard.type('skp'); |
| await testBed.page.keyboard.press('Enter'); |
| |
| await takeScreenshot(testBed.page, 'codesize', 'binary-page-sk-search_bar_enter'); |
| }); |
| }); |
| }); |