| import { expect } from 'chai'; |
| import { Page } from 'puppeteer'; |
| import { |
| addEventListenersToPuppeteerPage, |
| loadCachedTestBed, |
| takeScreenshot, |
| TestBed, |
| } from '../../../puppeteer-tests/util'; |
| import { DiffPageSkPO } from './diff-page-sk_po'; |
| |
| describe('diff-page-sk', () => { |
| let testBed: TestBed; |
| |
| before(async () => { |
| testBed = await loadCachedTestBed(); |
| }); |
| |
| // The demo page pushes a "default" query string to the URL when no query string is provided. All |
| // parameters in the below query string are different from said defaults. This allows this test |
| // to verify that the page correctly parses out the query parameters. |
| const baseParams = |
| '?left=99c58c7002073346ff55f446d47d6311&right=6246b773851984c726cb2e1cb13510c2' + |
| '&grouping=name%3DMy%2520test%2520has%2520spaces%26source_type%3Dinfra'; |
| |
| it('should render the demo page', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl, baseParams); |
| // Smoke test. |
| expect(await testBed.page.$$('diff-page-sk')).to.have.length(1); |
| }); |
| |
| describe('screenshots', () => { |
| it('should show the default page', async () => { |
| await navigateTo(testBed.page, testBed.baseUrl, baseParams); |
| await testBed.page.setViewport({ |
| width: 1300, |
| height: 700, |
| }); |
| await takeScreenshot(testBed.page, 'gold', 'diff-page-sk'); |
| }); |
| }); |
| |
| describe('url params', () => { |
| it('correctly extracts the grouping, left and right digest', async () => { |
| const diffPageSkPO = await navigateTo( |
| testBed.page, |
| testBed.baseUrl, |
| baseParams |
| ); |
| |
| expect(await diffPageSkPO.digestDetailsSkPO.getTestName()).to.equal( |
| 'Test: My test has spaces' |
| ); |
| expect(await diffPageSkPO.digestDetailsSkPO.getLeftDigest()).to.equal( |
| 'Left: 99c58c7002073346ff55f446d47d6311' |
| ); |
| expect(await diffPageSkPO.digestDetailsSkPO.getRightDigest()).to.equal( |
| 'Right: 6246b773851984c726cb2e1cb13510c2' |
| ); |
| |
| // This link should not have a changelist ID or CRS. |
| expect(await diffPageSkPO.digestDetailsSkPO.getDiffPageLink()).to.equal( |
| '/diff?grouping=name%3DMy%2520test%2520has%2520spaces%26source_type%3Dinfra' + |
| '&left=99c58c7002073346ff55f446d47d6311&right=6246b773851984c726cb2e1cb13510c2' |
| ); |
| }); |
| |
| it('correctly extracts the changelist ID and CRS if provided', async () => { |
| const diffPageSkPO = await navigateTo( |
| testBed.page, |
| testBed.baseUrl, |
| `${baseParams}&changelist_id=65432&crs=gerrit` |
| ); |
| |
| expect(await diffPageSkPO.digestDetailsSkPO.getTestName()).to.equal( |
| 'Test: My test has spaces' |
| ); |
| expect(await diffPageSkPO.digestDetailsSkPO.getLeftDigest()).to.equal( |
| 'Left: 99c58c7002073346ff55f446d47d6311' |
| ); |
| expect(await diffPageSkPO.digestDetailsSkPO.getRightDigest()).to.equal( |
| 'Right: 6246b773851984c726cb2e1cb13510c2' |
| ); |
| |
| // The changelist ID and CRS should be reflected in this link. |
| expect(await diffPageSkPO.digestDetailsSkPO.getDiffPageLink()).to.equal( |
| '/diff?grouping=name%3DMy%2520test%2520has%2520spaces%26source_type%3Dinfra' + |
| '&left=99c58c7002073346ff55f446d47d6311&right=6246b773851984c726cb2e1cb13510c2' + |
| '&changelist_id=65432&crs=gerrit' |
| ); |
| }); |
| }); |
| }); |
| |
| async function navigateTo( |
| page: Page, |
| base: string, |
| queryParams = '' |
| ): Promise<DiffPageSkPO> { |
| const eventPromise = await addEventListenersToPuppeteerPage(page, [ |
| 'busy-end', |
| ]); |
| const loaded = eventPromise('busy-end'); // Emitted from gold-scaffold when page is loaded. |
| await page.goto(`${base}${queryParams}`); |
| await loaded; |
| return new DiffPageSkPO(page.$('diff-page-sk')); |
| } |