Merge pull request #1744 from QAComet/QAComet/manage-users-roles-update
test: fix flakiness in manage roles and users tests
This commit is contained in:
@@ -9,7 +9,7 @@ export class AdminEditUserPage extends AuthenticatedPage {
|
|||||||
/**
|
/**
|
||||||
* @param {import('@playwright/test').Page} page
|
* @param {import('@playwright/test').Page} page
|
||||||
*/
|
*/
|
||||||
constructor (page) {
|
constructor(page) {
|
||||||
super(page);
|
super(page);
|
||||||
this.fullNameInput = page.getByTestId('full-name-input');
|
this.fullNameInput = page.getByTestId('full-name-input');
|
||||||
this.emailInput = page.getByTestId('email-input');
|
this.emailInput = page.getByTestId('email-input');
|
||||||
@@ -18,10 +18,20 @@ export class AdminEditUserPage extends AuthenticatedPage {
|
|||||||
this.pageTitle = page.getByTestId('edit-user-title');
|
this.pageTitle = page.getByTestId('edit-user-title');
|
||||||
}
|
}
|
||||||
|
|
||||||
generateUser () {
|
/**
|
||||||
|
* @param {string} fullName
|
||||||
|
*/
|
||||||
|
async waitForLoad(fullName) {
|
||||||
|
return await this.page.waitForFunction((fullName) => {
|
||||||
|
const el = document.querySelector("[data-test='full-name-input']");
|
||||||
|
return el && el.value === fullName;
|
||||||
|
}, fullName);
|
||||||
|
}
|
||||||
|
|
||||||
|
generateUser() {
|
||||||
return {
|
return {
|
||||||
fullName: faker.person.fullName(),
|
fullName: faker.person.fullName(),
|
||||||
email: faker.internet.email(),
|
email: faker.internet.email(),
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,7 @@ export class LoginPage extends BasePage {
|
|||||||
password = LoginPage.defaultPassword
|
password = LoginPage.defaultPassword
|
||||||
) {
|
) {
|
||||||
await this.page.goto(this.path);
|
await this.page.goto(this.path);
|
||||||
|
await this.emailTextField.waitFor({ state: 'visible' });
|
||||||
await this.emailTextField.fill(email);
|
await this.emailTextField.fill(email);
|
||||||
await this.passwordTextField.fill(password);
|
await this.passwordTextField.fill(password);
|
||||||
|
|
||||||
|
@@ -5,8 +5,7 @@ test.describe('Role management page', () => {
|
|||||||
test('Admin role is not deletable', async ({ adminRolesPage }) => {
|
test('Admin role is not deletable', async ({ adminRolesPage }) => {
|
||||||
await adminRolesPage.navigateTo();
|
await adminRolesPage.navigateTo();
|
||||||
const adminRow = await adminRolesPage.getRoleRowByName('Admin');
|
const adminRow = await adminRolesPage.getRoleRowByName('Admin');
|
||||||
const rowCount = await adminRow.count();
|
await expect(adminRow).toHaveCount(1);
|
||||||
await expect(rowCount).toBe(1);
|
|
||||||
const data = await adminRolesPage.getRowData(adminRow);
|
const data = await adminRolesPage.getRowData(adminRow);
|
||||||
await expect(data.role).toBe('Admin');
|
await expect(data.role).toBe('Admin');
|
||||||
await expect(data.canEdit).toBe(true);
|
await expect(data.canEdit).toBe(true);
|
||||||
@@ -42,8 +41,7 @@ test.describe('Role management page', () => {
|
|||||||
const roleRow = await adminRolesPage.getRoleRowByName(
|
const roleRow = await adminRolesPage.getRoleRowByName(
|
||||||
'Create Edit Test'
|
'Create Edit Test'
|
||||||
);
|
);
|
||||||
const rowCount = await roleRow.count();
|
await expect(roleRow).toHaveCount(1);
|
||||||
await expect(rowCount).toBe(1);
|
|
||||||
const roleData = await adminRolesPage.getRowData(roleRow);
|
const roleData = await adminRolesPage.getRowData(roleRow);
|
||||||
await expect(roleData.role).toBe('Create Edit Test');
|
await expect(roleData.role).toBe('Create Edit Test');
|
||||||
await expect(roleData.description).toBe('Test description');
|
await expect(roleData.description).toBe('Test description');
|
||||||
@@ -76,8 +74,7 @@ test.describe('Role management page', () => {
|
|||||||
const roleRow = await adminRolesPage.getRoleRowByName(
|
const roleRow = await adminRolesPage.getRoleRowByName(
|
||||||
'Create Update Test'
|
'Create Update Test'
|
||||||
);
|
);
|
||||||
const rowCount = await roleRow.count();
|
await expect(roleRow).toHaveCount(1);
|
||||||
await expect(rowCount).toBe(1);
|
|
||||||
const roleData = await adminRolesPage.getRowData(roleRow);
|
const roleData = await adminRolesPage.getRowData(roleRow);
|
||||||
await expect(roleData.role).toBe('Create Update Test');
|
await expect(roleData.role).toBe('Create Update Test');
|
||||||
await expect(roleData.description).toBe('Update test description');
|
await expect(roleData.description).toBe('Update test description');
|
||||||
@@ -105,8 +102,7 @@ test.describe('Role management page', () => {
|
|||||||
await deleteModal.modal.waitFor({
|
await deleteModal.modal.waitFor({
|
||||||
state: 'detached',
|
state: 'detached',
|
||||||
});
|
});
|
||||||
const rowCount = await roleRow.count();
|
await expect(roleRow).toHaveCount(0);
|
||||||
await expect(rowCount).toBe(0);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -468,7 +464,6 @@ test('Accessibility of role management page', async ({
|
|||||||
await deleteModal.modal.waitFor({
|
await deleteModal.modal.waitFor({
|
||||||
state: 'detached',
|
state: 'detached',
|
||||||
});
|
});
|
||||||
const rowCount = await roleRow.count();
|
await expect(roleRow).toHaveCount(0);
|
||||||
await expect(rowCount).toBe(0);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -60,6 +60,7 @@ test.describe('User management page', () => {
|
|||||||
|
|
||||||
let userRow = await adminUsersPage.getUserRowByEmail(user.email);
|
let userRow = await adminUsersPage.getUserRowByEmail(user.email);
|
||||||
await adminUsersPage.clickEditUser(userRow);
|
await adminUsersPage.clickEditUser(userRow);
|
||||||
|
await adminEditUserPage.waitForLoad(user.fullName);
|
||||||
const newUserInfo = adminEditUserPage.generateUser();
|
const newUserInfo = adminEditUserPage.generateUser();
|
||||||
await adminEditUserPage.fullNameInput.fill(newUserInfo.fullName);
|
await adminEditUserPage.fullNameInput.fill(newUserInfo.fullName);
|
||||||
await adminEditUserPage.updateButton.click();
|
await adminEditUserPage.updateButton.click();
|
||||||
@@ -269,7 +270,7 @@ test.describe('User management page', () => {
|
|||||||
await adminUsersPage.findUserPageWithEmail(user2.email);
|
await adminUsersPage.findUserPageWithEmail(user2.email);
|
||||||
let userRow = await adminUsersPage.getUserRowByEmail(user2.email);
|
let userRow = await adminUsersPage.getUserRowByEmail(user2.email);
|
||||||
await adminUsersPage.clickEditUser(userRow);
|
await adminUsersPage.clickEditUser(userRow);
|
||||||
|
await adminEditUserPage.waitForLoad(user2.fullName);
|
||||||
await adminEditUserPage.emailInput.fill(user1.email);
|
await adminEditUserPage.emailInput.fill(user1.email);
|
||||||
const editPageUrl = page.url();
|
const editPageUrl = page.url();
|
||||||
await adminEditUserPage.updateButton.click();
|
await adminEditUserPage.updateButton.click();
|
||||||
|
Reference in New Issue
Block a user