Implements login test.
This commit is contained in:
parent
c6ed9e80c9
commit
e5772b8579
2 changed files with 44 additions and 5 deletions
|
|
@ -2,13 +2,18 @@ import unittest, options, os
|
|||
|
||||
import webdriver
|
||||
|
||||
proc waitForLoad(session: Session) =
|
||||
proc waitForLoad(session: Session, timeout=20000) =
|
||||
var waitTime = 0
|
||||
sleep(2000)
|
||||
|
||||
while true:
|
||||
let loading = session.findElement(".loading")
|
||||
if loading.isNone: return
|
||||
sleep(1000)
|
||||
waitTime += 1000
|
||||
|
||||
if waitTime > timeout:
|
||||
doAssert false, "Wait for load time exceeded"
|
||||
|
||||
proc test*(session: Session, baseUrl: string) =
|
||||
session.navigate(baseUrl)
|
||||
|
|
@ -21,9 +26,43 @@ proc test*(session: Session, baseUrl: string) =
|
|||
check signUp.get().getText() == "Sign up"
|
||||
|
||||
test "shows log in":
|
||||
let signUp = session.findElement("#login-btn")
|
||||
check signUp.get().getText() == "Log in"
|
||||
let logIn = session.findElement("#login-btn")
|
||||
check logIn.get().getText() == "Log in"
|
||||
|
||||
test "is empty":
|
||||
let thread = session.findElement("tr > td.thread-title")
|
||||
check thread.isNone()
|
||||
check thread.isNone()
|
||||
|
||||
# Logging in
|
||||
test "can login":
|
||||
let logIn = session.findElement("#login-btn").get()
|
||||
logIn.click()
|
||||
|
||||
let usernameField = session.findElement(
|
||||
"#login-form input[name='username']"
|
||||
)
|
||||
check usernameField.isSome()
|
||||
let passwordField = session.findElement(
|
||||
"#login-form input[name='password']"
|
||||
)
|
||||
check passwordField.isSome()
|
||||
|
||||
usernameField.get().sendKeys("admin")
|
||||
passwordField.get().sendKeys("admin")
|
||||
passwordField.get().click() # Focus field.
|
||||
session.press(Key.Enter)
|
||||
|
||||
waitForLoad(session, 5000)
|
||||
|
||||
# Verify that the user menu has been initialised properly.
|
||||
let profileButton = session.findElement(
|
||||
"#main-navbar figure.avatar"
|
||||
).get()
|
||||
profileButton.click()
|
||||
|
||||
let profileName = session.findElement(
|
||||
"#main-navbar .menu-right div.tile-content"
|
||||
).get()
|
||||
|
||||
check profileName.getText() == "admin"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue