From 58ca12e8e6f8d02c37b0cb6516bddd497e3cdfaf Mon Sep 17 00:00:00 2001 From: valleykid Date: Mon, 5 Mar 2018 10:43:31 +0800 Subject: [PATCH] Nightmare -> puppeteer (#1006) --- package.json | 2 +- src/e2e/home.e2e.js | 11 ++++++++--- src/e2e/login.e2e.js | 44 ++++++++++++++++++++++++-------------------- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index ca25c73f..d3fadd79 100755 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "stylelint-config-standard": "^18.0.0" }, "optionalDependencies": { - "nightmare": "^2.10.0" + "puppeteer": "^1.1.1" }, "lint-staged": { "**/*.{js,jsx}": "lint-staged:js", diff --git a/src/e2e/home.e2e.js b/src/e2e/home.e2e.js index 61b0cd83..1a5d9513 100644 --- a/src/e2e/home.e2e.js +++ b/src/e2e/home.e2e.js @@ -1,9 +1,14 @@ -import Nightmare from 'nightmare'; +import puppeteer from 'puppeteer'; describe('Homepage', () => { it('it should have logo text', async () => { - const page = Nightmare().goto('http://localhost:8000'); - const text = await page.wait('h1').evaluate(() => document.body.innerHTML).end(); + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + await page.goto('http://localhost:8000'); + await page.waitForSelector('h1'); + const text = await page.evaluate(() => document.body.innerHTML); expect(text).toContain('

Ant Design Pro

'); + await page.close(); + browser.close(); }); }); diff --git a/src/e2e/login.e2e.js b/src/e2e/login.e2e.js index 703efc0b..5211a3b4 100644 --- a/src/e2e/login.e2e.js +++ b/src/e2e/login.e2e.js @@ -1,32 +1,36 @@ -import Nightmare from 'nightmare'; +import puppeteer from 'puppeteer'; describe('Login', () => { + let browser; let page; - beforeEach(() => { - page = Nightmare(); - page - .goto('http://localhost:8000/') - .evaluate(() => { - window.localStorage.setItem('antd-pro-authority', 'guest'); - }) - .goto('http://localhost:8000/#/user/login'); + + beforeAll(async () => { + browser = await puppeteer.launch(); + }); + + beforeEach(async () => { + page = await browser.newPage(); + await page.goto('http://localhost:8000/#/user/login'); + await page.evaluate(() => window.localStorage.setItem('antd-pro-authority', 'guest')); }); + afterEach(() => page.close()); + it('should login with failure', async () => { - await page.type('#userName', 'mockuser') - .type('#password', 'wrong_password') - .click('button[type="submit"]') - .wait('.ant-alert-error') // should display error - .end(); + await page.type('#userName', 'mockuser'); + await page.type('#password', 'wrong_password'); + await page.click('button[type="submit"]'); + await page.waitForSelector('.ant-alert-error'); // should display error }); it('should login successfully', async () => { - const text = await page.type('#userName', 'admin') - .type('#password', '888888') - .click('button[type="submit"]') - .wait('.ant-layout-sider h1') // should display error - .evaluate(() => document.body.innerHTML) - .end(); + await page.type('#userName', 'admin'); + await page.type('#password', '888888'); + await page.click('button[type="submit"]'); + await page.waitForSelector('.ant-layout-sider h1'); // should display error + const text = await page.evaluate(() => document.body.innerHTML); expect(text).toContain('

Ant Design Pro

'); }); + + afterAll(() => browser.close()); }); -- GitLab