test: update snackbar with variant and data-test attributes

This commit is contained in:
QAComet
2023-10-26 15:43:42 -06:00
committed by Ali BARIN
parent bf7ab475ee
commit 1a55cc8604
18 changed files with 95 additions and 62 deletions

View File

@@ -14,11 +14,12 @@ export class BasePage {
*/
constructor(page) {
this.page = page;
this.snackbar = this.page.locator('.notistack-MuiContent');
this.snackbar = page.locator('*[data-test^="snackbar"]');
}
/**
* Finds the latest snackbar message and extracts relevant data
* @param {string | undefined} testId
* @returns {(
* null | {
* variant: SnackbarVariant,
@@ -27,25 +28,13 @@ export class BasePage {
* }
* )}
*/
async getSnackbarData () {
if (await this.snackbar.count() === 0) {
return null;
}
const snack = this.snackbar.first(); // uses flex: column-reverse
const classList = await snack.evaluate(node => Array.from(node.classList));
/** @type SnackbarVariant */
let variant = 'default';
if (classList.includes('notistack-MuiContent-success')) {
variant = 'success'
} else if (classList.includes('notistack-MuiContent-warning')) {
variant = 'warning'
} else if (classList.includes('notistack-MuiContent-error')) {
variant = 'error'
} else if (classList.includes('notistack-MuiContent-info')) {
variant = 'info'
async getSnackbarData (testId) {
if (!testId) {
testId = 'snackbar';
}
const snack = this.page.getByTestId(testId);
return {
variant,
variant: await snack.getAttribute('data-snackbar-variant'),
text: await snack.evaluate(node => node.innerText),
dataset: await snack.evaluate(node => {
function getChildren (n) {

View File

@@ -35,10 +35,9 @@ test.describe('User management page', () => {
'option', { name: 'Admin' }
).click();
await adminCreateUserPage.createButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-create-user-success'
);
await expect(snackbar.variant).toBe('success');
await adminUsersPage.closeSnackbar();
}
@@ -65,10 +64,9 @@ test.describe('User management page', () => {
await adminEditUserPage.fullNameInput.fill(newUserInfo.fullName);
await adminEditUserPage.updateButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-edit-user-success'
);
await expect(snackbar.variant).toBe('success');
await adminUsersPage.closeSnackbar();
@@ -86,10 +84,10 @@ test.describe('User management page', () => {
await adminUsersPage.clickDeleteUser(userRow);
const modal = adminUsersPage.deleteUserModal;
await modal.deleteButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-delete-user-success'
);
await expect(snackbar.variant).toBe('success');
await adminUsersPage.closeSnackbar();
await expect(userRow).not.toBeVisible(false);
@@ -115,10 +113,9 @@ test.describe('User management page', () => {
'option', { name: 'Admin' }
).click();
await adminCreateUserPage.createButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-create-user-success'
);
await expect(snackbar.variant).toBe('success');
await adminUsersPage.closeSnackbar();
}
@@ -132,10 +129,9 @@ test.describe('User management page', () => {
await adminUsersPage.clickDeleteUser(userRow);
const modal = adminUsersPage.deleteUserModal;
await modal.deleteButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-delete-user-success'
);
await expect(snackbar).not.toBeNull();
await expect(snackbar.variant).toBe('success');
await adminUsersPage.closeSnackbar();
@@ -163,6 +159,7 @@ test.describe('User management page', () => {
happen here, i.e. if this should create a new user, stay the
same, un-delete the user, or something else
*/
// await adminUsersPage.getSnackbarData('snackbar-error');
await adminUsersPage.closeSnackbar();
}
);
@@ -187,10 +184,9 @@ test.describe('User management page', () => {
'option', { name: 'Admin' }
).click();
await adminCreateUserPage.createButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-create-user-success'
);
await expect(snackbar.variant).toBe('success');
await adminUsersPage.closeSnackbar();
}
@@ -209,11 +205,9 @@ test.describe('User management page', () => {
'option', { name: 'Admin' }
).click();
await adminCreateUserPage.createButton.click();
await adminCreateUserPage.snackbar.waitFor({
state: 'attached'
});
await expect(page.url()).toBe(createUserPageUrl);
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData('snackbar-error');
await expect(snackbar.variant).toBe('error');
await adminUsersPage.closeSnackbar();
}
@@ -241,10 +235,9 @@ test.describe('User management page', () => {
'option', { name: 'Admin' }
).click();
await adminCreateUserPage.createButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-create-user-success'
);
await expect(snackbar.variant).toBe('success');
await adminUsersPage.closeSnackbar();
}
@@ -262,10 +255,9 @@ test.describe('User management page', () => {
'option', { name: 'Admin' }
).click();
await adminCreateUserPage.createButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-create-user-success'
);
await expect(snackbar.variant).toBe('success');
await adminUsersPage.closeSnackbar();
}
@@ -282,10 +274,9 @@ test.describe('User management page', () => {
const editPageUrl = page.url();
await adminEditUserPage.updateButton.click();
await adminUsersPage.snackbar.waitFor({
state: 'attached'
});
const snackbar = await adminUsersPage.getSnackbarData();
const snackbar = await adminUsersPage.getSnackbarData(
'snackbar-error'
);
await expect(snackbar.variant).toBe('error');
await adminUsersPage.closeSnackbar();
await expect(page.url()).toBe(editPageUrl);