34 lines
1008 B
JavaScript
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`);
|
|
}
|
|
}
|
|
}
|