76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
import { BasePage } from "./base-page";
|
|
const { faker } = require('@faker-js/faker');
|
|
const { expect } = require('@playwright/test');
|
|
|
|
export class AdminSetupPage extends BasePage {
|
|
path = '/installation';
|
|
|
|
/**
|
|
* @param {import('@playwright/test').Page} page
|
|
*/
|
|
constructor(page) {
|
|
super(page);
|
|
|
|
this.fullNameTextField = this.page.getByTestId('fullName-text-field');
|
|
this.emailTextField = this.page.getByTestId('email-text-field');
|
|
this.passwordTextField = this.page.getByTestId('password-text-field');
|
|
this.repeatPasswordTextField = this.page.getByTestId('repeat-password-text-field');
|
|
this.createAdminButton = this.page.getByTestId('signUp-button');
|
|
this.invalidFields = this.page.locator('p.Mui-error');
|
|
this.successAlert = this.page.getByTestId('success-alert');
|
|
}
|
|
|
|
async open() {
|
|
return await this.page.goto(this.path);
|
|
}
|
|
|
|
async fillValidUserData() {
|
|
await this.fullNameTextField.fill(process.env.LOGIN_EMAIL);
|
|
await this.emailTextField.fill(process.env.LOGIN_EMAIL);
|
|
await this.passwordTextField.fill(process.env.LOGIN_PASSWORD);
|
|
await this.repeatPasswordTextField.fill(process.env.LOGIN_PASSWORD);
|
|
}
|
|
|
|
async fillInvalidUserData() {
|
|
await this.fullNameTextField.fill('');
|
|
await this.emailTextField.fill('abcde');
|
|
await this.passwordTextField.fill('');
|
|
await this.repeatPasswordTextField.fill('a');
|
|
}
|
|
|
|
async fillNotMatchingPasswordUserData() {
|
|
const testUser = this.generateUser();
|
|
await this.fullNameTextField.fill(testUser.fullName);
|
|
await this.emailTextField.fill(testUser.email);
|
|
await this.passwordTextField.fill(testUser.password);
|
|
await this.repeatPasswordTextField.fill(testUser.wronglyRepeatedPassword);
|
|
}
|
|
|
|
async submitAdminForm() {
|
|
await this.createAdminButton.click();
|
|
}
|
|
|
|
async expectInvalidFields(errorCount) {
|
|
await expect(await this.invalidFields.all()).toHaveLength(errorCount);
|
|
}
|
|
|
|
async expectSuccessAlertToBeVisible() {
|
|
await expect(await this.successAlert).toBeVisible();
|
|
}
|
|
|
|
async expectSuccessMessageToContainLoginLink() {
|
|
await expect(await this.successAlert.locator('a')).toHaveAttribute('href', '/login');
|
|
}
|
|
|
|
generateUser() {
|
|
faker.seed(Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER));
|
|
|
|
return {
|
|
fullName: faker.person.fullName(),
|
|
email: faker.internet.email(),
|
|
password: faker.internet.password(),
|
|
wronglyRepeatedPassword: faker.internet.password()
|
|
};
|
|
}
|
|
};
|