1 const puppeteer = require('puppeteer');
2 const chai = require('chai');
3 const assert = chai.assert;
5 const baseUrl = process.env.TEST_HOST; // "https://newslash-dev:3000";
6 const chromiumArgs = ["--no-sandbox"];
7 const username = process.env.TEST_USER;
8 const password = process.env.TEST_PASSWORD;
9 const chromiumPath = process.env.CHROMIUM_PATH || null;
11 describe('Top Page', function () {
12 describe('login', function () {
13 assert.isAtLeast(username.length, 1, "usename length");
14 assert.isAtLeast(password.length, 1, "password length");
17 it('succeeds', async () => {
18 const browser = await puppeteer.launch({
19 executablePath: chromiumPath,
21 ignoreHTTPSErrors: true,
23 const page = await browser.newPage();
24 page.setViewport({width: 1024, height: 800});
26 await page.goto(baseUrl);
29 await page.click('#account-menu a.toggle-login-modal');
30 await page.waitForSelector('#login-modal', {timeout: 100});
31 assert.isTrue(await page.$eval('#login-modal', el => el.classList.contains("open")),
35 await page.click('#login-modal form .btn-default');
36 await page.waitForSelector('#login-modal', {hidden: true, timeout: 100});
37 assert.isNotTrue(page.$eval('#login-modal', el => el.classList.contains("open")),
41 await page.click('#account-menu .toggle-login-modal');
42 await page.waitForSelector('#login-modal', {timeout: 100});
45 await page.type('#login-nickname', username);
46 await page.type('#login-passwd', password);
47 await page.click('#login-modal .dialog-footer .btn-primary');
50 await page.waitForNavigation();
52 // check login succeeded
53 const regex = new RegExp(`^\\s*${username}\\s*$`);
54 const uname = await page.$eval('#user-menu a', el => el.innerHTML.trim());
55 assert.match(uname, regex, "login succeed");
58 await browser.close();