filebrowser/frontend/tests/acceptance/pageObject/LoginPage.js

34 lines
1008 B
JavaScript

export class LoginPage {
constructor() {
this.usernameSelector = '//input[@type="text"]';
this.passwordSelector = '//input[@type="password"]';
this.loginButton = '//input[@type="submit"]';
this.wrongCredentialsDivSelector = '//div[@class="wrong"]';
this.baseURL = "http://localhost:8080/";
}
async navigateToLoginPage() {
await global.page.goto(this.baseURL + "login");
}
async loginWithUsernameAndPassword(username, password) {
await global.page.fill(this.usernameSelector, username);
await global.page.fill(this.passwordSelector, password);
await global.page.click(this.loginButton);
}
async loginBasedOnRole(role) {
this.navigateToLoginPage();
switch (role) {
case "admin":
await this.loginWithUsernameAndPassword("admin", "admin");
break;
case "user":
await this.loginWithUsernameAndPassword("user", "user");
break;
default:
throw new Error(`Invalid role ${role} passed`);
}
}
}