From f97197071fe8da7431f24c3be8a331213d9f9328 Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Tue, 14 Jan 2020 21:20:58 +0800 Subject: [PATCH] test: add basic tests cases --- __tests__/cases/baseline.ts | 48 ++++++++++++++++++++++++++ __tests__/cases/homepage.not-render.ts | 9 +++++ __tests__/cases/project-page.gitako.ts | 9 +++++ __tests__/utils.ts | 7 ++++ 4 files changed, 73 insertions(+) create mode 100644 __tests__/cases/baseline.ts create mode 100644 __tests__/cases/homepage.not-render.ts create mode 100644 __tests__/cases/project-page.gitako.ts create mode 100644 __tests__/utils.ts diff --git a/__tests__/cases/baseline.ts b/__tests__/cases/baseline.ts new file mode 100644 index 0000000..71368a7 --- /dev/null +++ b/__tests__/cases/baseline.ts @@ -0,0 +1,48 @@ +/** + * Make sure some basic behaviors of puppeteer assertions + */ + +import { expectToFind, expectToNotFind } from '../utils' + +describe(`in random page`, () => { + beforeAll(() => page.goto('https://google.com')) + + it('wait for hidden non-exist element should resolve null', async () => { + expect( + await page.waitForSelector('.non-exist-element', { hidden: true, timeout: 1000 }), + ).toBeNull() + }) + + it('wait for exist element', async () => { + expectToFind('*') + }) + + it('wait for exist element', async () => { + expectToNotFind('.non-exist-element') + }) + + it('wait for non-exist element reject should throw', async () => { + await expect(page.waitForSelector('.non-exist-element', { timeout: 1000 })).rejects.toThrow() + }) + + // Cases below are expected to fail to show how async test works + + // // This is expected to fail! + // it('wait for non-exist element reject should not throw', async () => { + // await expect( + // page.waitForSelector('.non-exist-element', { timeout: 1000 }), + // ).rejects.not.toThrow() + // }) + + // // This is expected to fail! + // it('wait for non-exist element should resolve throw', async () => { + // await expect(page.waitForSelector('.non-exist-element', { timeout: 1000 })).resolves.toThrow() + // }) + + // // This is expected to fail! + // it('wait for non-exist element should resolve not throw', async () => { + // await expect( + // page.waitForSelector('.non-exist-element', { timeout: 1000 }), + // ).resolves.not.toThrow() + // }) +}) diff --git a/__tests__/cases/homepage.not-render.ts b/__tests__/cases/homepage.not-render.ts new file mode 100644 index 0000000..d75e7ca --- /dev/null +++ b/__tests__/cases/homepage.not-render.ts @@ -0,0 +1,9 @@ +import { expectToNotFind } from '../utils' + +describe(`in GitHub homepage`, () => { + beforeAll(() => page.goto('https://github.com')) + + it('should not render Gitako', async () => { + expectToNotFind('.gitako-side-bar .gitako-position-wrapper') + }) +}) diff --git a/__tests__/cases/project-page.gitako.ts b/__tests__/cases/project-page.gitako.ts new file mode 100644 index 0000000..1ebfb54 --- /dev/null +++ b/__tests__/cases/project-page.gitako.ts @@ -0,0 +1,9 @@ +import { expectToFind } from '../utils' + +describe(`in Gitako project page`, () => { + beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako')) + + it('should render Gitako', async () => { + expectToFind('.gitako-side-bar .gitako-position-wrapper') + }) +}) diff --git a/__tests__/utils.ts b/__tests__/utils.ts new file mode 100644 index 0000000..01099c2 --- /dev/null +++ b/__tests__/utils.ts @@ -0,0 +1,7 @@ +export async function expectToFind(selector: string) { + await expect(await page.waitForSelector(selector)).not.toBeNull() +} + +export async function expectToNotFind(selector: string) { + await expect(page.waitForSelector(selector, { timeout: 1000 })).rejects.toThrow() +}