From d9cc081b2de50cc13193bd980b5ead4df377d98d Mon Sep 17 00:00:00 2001 From: Dinesh Date: Fri, 29 May 2020 19:06:32 +0530 Subject: [PATCH] puppeteer_tests: Move `log_in` and `log_out` functions to `common.js`. Since `log_in` and `log_out` functions will also be used in other tests, these are moved to `common.js`. --- frontend_tests/puppeteer_lib/common.js | 27 +++++++++++++++++++ frontend_tests/puppeteer_tests/01-login.js | 30 ++-------------------- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/frontend_tests/puppeteer_lib/common.js b/frontend_tests/puppeteer_lib/common.js index 438bb66a00..70f4e63054 100644 --- a/frontend_tests/puppeteer_lib/common.js +++ b/frontend_tests/puppeteer_lib/common.js @@ -1,10 +1,12 @@ const path = require('path'); const puppeteer = require('puppeteer'); +const assert = require("assert"); class CommonUtils { constructor() { this.browser = null; this.screenshot_id = 0; + this.realm_url = "http://zulip.zulipdev.com:9981/"; } async ensure_browser() { @@ -44,6 +46,31 @@ class CommonUtils { }); } + async log_in(page, credentials) { + console.log("Logging in"); + await page.goto(this.realm_url + 'login/'); + assert.equal(this.realm_url + 'login/', page.url()); + await page.type('#id_username', credentials.username); + await page.type('#id_password', credentials.password); + await page.$eval('#login_form', form => form.submit()); + } + + async log_out(page) { + await page.goto(this.realm_url); + const menu_selector = '#settings-dropdown'; + const logout_selector = 'a[href="#logout"]'; + console.log("Loggin out"); + await page.waitForSelector(menu_selector, {visible: true}); + await page.click(menu_selector); + await page.waitForSelector(logout_selector); + await page.click(logout_selector); + + // Wait for a email input in login page so we know login + // page is loaded. Then check that we are at the login url. + await page.waitForSelector('input[name="username"]'); + assert(page.url().includes('/login/')); + } + async run_test(test_function) { // Pass a page instance to test so we can take // a screenshot of it when the test fails. diff --git a/frontend_tests/puppeteer_tests/01-login.js b/frontend_tests/puppeteer_tests/01-login.js index 1a98c90e1d..f68ceb66c7 100644 --- a/frontend_tests/puppeteer_tests/01-login.js +++ b/frontend_tests/puppeteer_tests/01-login.js @@ -1,35 +1,9 @@ -const assert = require("assert"); const common = require('../puppeteer_lib/common'); const test_credentials = require('../../var/casper/test_credentials.js').test_credentials; -const realm_url = "http://zulip.zulipdev.com:9981/"; - -async function log_in(page, credentials) { - console.log("Logging in"); - assert.equal(realm_url + 'login/', page.url()); - await page.type('#id_username', credentials.username); - await page.type('#id_password', credentials.password); - await page.$eval('#login_form', form => form.submit()); -} - -async function log_out(page) { - await page.goto(realm_url); - const menu_selector = '#settings-dropdown'; - const logout_selector = 'a[href="#logout"]'; - await page.waitForSelector(menu_selector, {visible: true}); - await page.click(menu_selector); - await page.waitForSelector(logout_selector); - await page.click(logout_selector); - - // Wait for a email input in login page so we know login - // page is loaded. Then check that we are at the login url. - await page.waitForSelector('input[name="username"]'); - assert(page.url().includes('/login/')); -} async function login_tests(page) { - await page.goto(realm_url + 'login/'); - await log_in(page, test_credentials.default_user); - await log_out(page); + await common.log_in(page, test_credentials.default_user); + await common.log_out(page); } common.run_test(login_tests);