MM-63669 E2E/Playwright: Move "e2e-tests/playwright/test" to "e2e-tests/playwright" folder (#30647)
* move "e2e-tests/playwright/test" to "e2e-tests/playwright/test" and expose "ensurePluginsLoaded" * add test setup, and expose ensurePluginsLoaded and ensureServerDeployment to pw
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
62753a1481
Коммит
a35a6d7a3a
@@ -0,0 +1,51 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Page} from '@playwright/test';
|
||||
|
||||
import {expect, test} from '@mattermost/playwright-lib';
|
||||
|
||||
// Helper function to intercept API request and modify the response
|
||||
async function interceptConfigWithLandingPage(page: Page, enabled: boolean) {
|
||||
const apiUrl = '**/api/v4/config/client?format=old**';
|
||||
await page.route(apiUrl, (route) => {
|
||||
route.fulfill({
|
||||
status: 200,
|
||||
body: JSON.stringify({
|
||||
EnableDesktopLandingPage: enabled,
|
||||
EnableSignInWithUsername: 'true',
|
||||
}),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
test('MM-T5640_1 should not see landing page ', async ({pw, page}) => {
|
||||
await interceptConfigWithLandingPage(page, false);
|
||||
|
||||
// Navigate to your starting URL
|
||||
await page.goto('/');
|
||||
|
||||
// Wait until the URL contains '/login'
|
||||
await page.waitForURL(/.*\/login.*/);
|
||||
|
||||
// At this point, the URL should contain '/login'
|
||||
expect(page.url()).toContain('/login');
|
||||
|
||||
// Verify the login page is visible
|
||||
await pw.loginPage.toBeVisible();
|
||||
});
|
||||
|
||||
test('MM-T5640_2 should see landing page', async ({pw, page}) => {
|
||||
// Navigate to your starting URL
|
||||
await page.goto('/');
|
||||
|
||||
// Wait until the URL contains '/landing'
|
||||
await page.waitForURL(/.*\/landing.*/, {timeout: pw.duration.ten_sec});
|
||||
|
||||
// At this point, the URL should contain '/landing'
|
||||
expect(page.url()).toContain('/landing');
|
||||
|
||||
// Verify the landing page is visible
|
||||
await pw.landingLoginPage.toBeVisible();
|
||||
});
|
||||
@@ -0,0 +1,125 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {expect, test} from '@mattermost/playwright-lib';
|
||||
|
||||
test('should be able to enable mobile security settings when licensed', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
const license = await adminClient.getClientLicenseOld();
|
||||
|
||||
test.skip(license.SkuShortName !== 'enterprise', 'Skipping test - server has no enterprise license');
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Mobile Security section
|
||||
await systemConsolePage.sidebar.goToItem('Mobile Security');
|
||||
await systemConsolePage.mobileSecurity.toBeVisible();
|
||||
|
||||
// # Enable Biometric Authentication
|
||||
await systemConsolePage.mobileSecurity.clickEnableBiometricAuthenticationToggleTrue();
|
||||
|
||||
// * Verify only Biometric Authentication is enabled
|
||||
expect(await systemConsolePage.mobileSecurity.enableBiometricAuthenticationToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.preventScreenCaptureToggleTrue.isChecked()).toBe(false);
|
||||
expect(await systemConsolePage.mobileSecurity.jailbreakProtectionToggleTrue.isChecked()).toBe(false);
|
||||
|
||||
// # Save settings
|
||||
await systemConsolePage.mobileSecurity.clickSaveButton();
|
||||
// # Wait until the save button has settled
|
||||
await pw.waitUntil(async () => (await systemConsolePage.mobileSecurity.saveButton.textContent()) === 'Save');
|
||||
|
||||
// # Go to any other section and come back to Mobile Security
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
await systemConsolePage.sidebar.goToItem('Mobile Security');
|
||||
|
||||
// * Verify Biometric Authentication is still enabled
|
||||
expect(await systemConsolePage.mobileSecurity.enableBiometricAuthenticationToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.preventScreenCaptureToggleTrue.isChecked()).toBe(false);
|
||||
expect(await systemConsolePage.mobileSecurity.jailbreakProtectionToggleTrue.isChecked()).toBe(false);
|
||||
|
||||
// # Enable Prevent Screen Capture
|
||||
await systemConsolePage.mobileSecurity.clickPreventScreenCaptureToggleTrue();
|
||||
|
||||
// * Verify only Biometric Authentication and Prevent Screen Capture are enabled
|
||||
expect(await systemConsolePage.mobileSecurity.enableBiometricAuthenticationToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.preventScreenCaptureToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.jailbreakProtectionToggleTrue.isChecked()).toBe(false);
|
||||
|
||||
// # Save settings
|
||||
await systemConsolePage.mobileSecurity.clickSaveButton();
|
||||
// # Wait until the save button has settled
|
||||
await pw.waitUntil(async () => (await systemConsolePage.mobileSecurity.saveButton.textContent()) === 'Save');
|
||||
|
||||
// # Go to any other section and come back to Mobile Security
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
await systemConsolePage.sidebar.goToItem('Mobile Security');
|
||||
|
||||
// * Verify Biometric Authentication and Prevent Screen Capture are still enabled
|
||||
expect(await systemConsolePage.mobileSecurity.enableBiometricAuthenticationToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.preventScreenCaptureToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.jailbreakProtectionToggleTrue.isChecked()).toBe(false);
|
||||
|
||||
// # Enable Jailbreak Protection
|
||||
await systemConsolePage.mobileSecurity.clickJailbreakProtectionToggleTrue();
|
||||
|
||||
// * Verify all toggles are enabled
|
||||
expect(await systemConsolePage.mobileSecurity.enableBiometricAuthenticationToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.preventScreenCaptureToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.jailbreakProtectionToggleTrue.isChecked()).toBe(true);
|
||||
|
||||
// # Save settings
|
||||
await systemConsolePage.mobileSecurity.clickSaveButton();
|
||||
// # Wait until the save button has settled
|
||||
await pw.waitUntil(async () => (await systemConsolePage.mobileSecurity.saveButton.textContent()) === 'Save');
|
||||
|
||||
// # Go to any other section and come back to Mobile Security
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
await systemConsolePage.sidebar.goToItem('Mobile Security');
|
||||
|
||||
// * Verify all toggles are still enabled
|
||||
expect(await systemConsolePage.mobileSecurity.enableBiometricAuthenticationToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.preventScreenCaptureToggleTrue.isChecked()).toBe(true);
|
||||
expect(await systemConsolePage.mobileSecurity.jailbreakProtectionToggleTrue.isChecked()).toBe(true);
|
||||
});
|
||||
|
||||
test('should show mobile security upsell when not licensed', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
const license = await adminClient.getClientLicenseOld();
|
||||
|
||||
test.skip(license.SkuShortName === 'enterprise', 'Skipping test - server has enterprise license');
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Mobile Security section
|
||||
await systemConsolePage.sidebar.goToItem('Mobile Security');
|
||||
await systemConsolePage.featureDiscovery.toBeVisible();
|
||||
|
||||
// * Verify title is correct
|
||||
await systemConsolePage.featureDiscovery.toHaveTitle('Enhance mobile app security with Mattermost Enterprise');
|
||||
});
|
||||
@@ -0,0 +1,202 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {type PlaywrightExtended, expect, test} from '@mattermost/playwright-lib';
|
||||
|
||||
/**
|
||||
* Setup a new random user, and search for it such that it's the first row in the list
|
||||
* @param pw
|
||||
* @param pages
|
||||
* @returns A function to get the refreshed user, and the System Console page for navigation
|
||||
*/
|
||||
async function setupAndGetRandomUser(pw: PlaywrightExtended) {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create a random user to edit for
|
||||
const user = await adminClient.createUser(pw.random.user(), '', '');
|
||||
const team = await adminClient.createTeam(pw.random.team());
|
||||
await adminClient.addToTeam(team.id, user.id);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Search for user-1
|
||||
await systemConsolePage.systemUsers.enterSearchText(user.email);
|
||||
const userRow = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
await userRow.getByText(user.email).waitFor();
|
||||
const innerText = await userRow.innerText();
|
||||
expect(innerText).toContain(user.email);
|
||||
|
||||
return {getUser: () => adminClient.getUser(user.id), systemConsolePage};
|
||||
}
|
||||
|
||||
test('MM-T5520-1 should activate and deactivate users', async ({pw}) => {
|
||||
const {getUser, systemConsolePage} = await setupAndGetRandomUser(pw);
|
||||
|
||||
// # Open menu and deactivate the user
|
||||
await systemConsolePage.systemUsers.actionMenuButtons[0].click();
|
||||
const deactivate = await systemConsolePage.systemUsersActionMenus[0].getMenuItem('Deactivate');
|
||||
await deactivate.click();
|
||||
|
||||
// # Press confirm on the modal
|
||||
await systemConsolePage.confirmModal.confirm();
|
||||
|
||||
// * Verify user is deactivated
|
||||
const firstRow = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
await firstRow.getByText('Deactivated').waitFor();
|
||||
expect(await firstRow.innerText()).toContain('Deactivated');
|
||||
expect((await getUser()).delete_at).toBeGreaterThan(0);
|
||||
|
||||
// # Open menu and reactivate the user
|
||||
await systemConsolePage.systemUsers.actionMenuButtons[0].click();
|
||||
const activate = await systemConsolePage.systemUsersActionMenus[0].getMenuItem('Activate');
|
||||
await activate.click();
|
||||
|
||||
// * Verify user is activated
|
||||
await firstRow.getByText('Member').waitFor();
|
||||
expect(await firstRow.innerText()).toContain('Member');
|
||||
});
|
||||
|
||||
test('MM-T5520-2 should change user roles', async ({pw}) => {
|
||||
const {getUser, systemConsolePage} = await setupAndGetRandomUser(pw);
|
||||
|
||||
// # Open menu and click Manage roles
|
||||
await systemConsolePage.systemUsers.actionMenuButtons[0].click();
|
||||
let manageRoles = await systemConsolePage.systemUsersActionMenus[0].getMenuItem('Manage roles');
|
||||
await manageRoles.click();
|
||||
|
||||
// # Change to System Admin and click Save
|
||||
const systemAdmin = systemConsolePage.page.locator('input[name="systemadmin"]');
|
||||
await systemAdmin.waitFor();
|
||||
await systemAdmin.click();
|
||||
systemConsolePage.saveRoleChange();
|
||||
|
||||
// * Verify that the modal closed and no error showed
|
||||
await systemAdmin.waitFor({state: 'detached'});
|
||||
|
||||
// * Verify that the role was updated
|
||||
const firstRow = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
expect(await firstRow.innerText()).toContain('System Admin');
|
||||
expect((await getUser()).roles).toContain('system_admin');
|
||||
|
||||
// # Open menu and click Manage roles
|
||||
await systemConsolePage.systemUsers.actionMenuButtons[0].click();
|
||||
manageRoles = await systemConsolePage.systemUsersActionMenus[0].getMenuItem('Manage roles');
|
||||
await manageRoles.click();
|
||||
|
||||
// # Change to Member and click Save
|
||||
const systemMember = systemConsolePage.page.locator('input[name="systemmember"]');
|
||||
await systemMember.waitFor();
|
||||
await systemMember.click();
|
||||
await systemConsolePage.saveRoleChange();
|
||||
|
||||
// * Verify that the modal closed and no error showed
|
||||
await systemMember.waitFor({state: 'detached'});
|
||||
|
||||
// * Verify that the role was updated
|
||||
expect(await firstRow.innerText()).toContain('Member');
|
||||
expect((await getUser()).roles).toContain('system_user');
|
||||
});
|
||||
|
||||
test('MM-T5520-3 should be able to manage teams', async ({pw}) => {
|
||||
const {systemConsolePage} = await setupAndGetRandomUser(pw);
|
||||
|
||||
// # Open menu and click Manage teams
|
||||
await systemConsolePage.systemUsers.actionMenuButtons[0].click();
|
||||
const manageTeams = await systemConsolePage.systemUsersActionMenus[0].getMenuItem('Manage teams');
|
||||
await manageTeams.click();
|
||||
|
||||
// # Click Make Team Admin
|
||||
const team = systemConsolePage.page.locator('div.manage-teams__team');
|
||||
const teamDropdown = team.locator('div.MenuWrapper');
|
||||
await teamDropdown.click();
|
||||
const makeTeamAdmin = teamDropdown.getByText('Make Team Admin');
|
||||
await makeTeamAdmin.click();
|
||||
|
||||
// * Verify role is updated
|
||||
expect(await team.innerText()).toContain('Team Admin');
|
||||
|
||||
// # Change back to Team Member
|
||||
await teamDropdown.click();
|
||||
const makeTeamMember = teamDropdown.getByText('Make Team Member');
|
||||
await makeTeamMember.click();
|
||||
|
||||
// * Verify role is updated
|
||||
expect(await team.innerText()).toContain('Team Member');
|
||||
|
||||
// # Click Remove From Team
|
||||
await teamDropdown.click();
|
||||
const removeFromTeam = teamDropdown.getByText('Remove From Team');
|
||||
await removeFromTeam.click();
|
||||
|
||||
// * The team should be detached
|
||||
await team.waitFor({state: 'detached'});
|
||||
expect(team).not.toBeVisible();
|
||||
});
|
||||
|
||||
test('MM-T5520-4 should reset the users password', async ({pw}) => {
|
||||
const {systemConsolePage} = await setupAndGetRandomUser(pw);
|
||||
|
||||
// # Open menu and click Reset Password
|
||||
await systemConsolePage.systemUsers.actionMenuButtons[0].click();
|
||||
const resetPassword = await systemConsolePage.systemUsersActionMenus[0].getMenuItem('Reset password');
|
||||
await resetPassword.click();
|
||||
|
||||
// # Enter a random password and click Save
|
||||
const passwordInput = systemConsolePage.page.locator('input[type="password"]');
|
||||
await passwordInput.fill(pw.random.id());
|
||||
await systemConsolePage.clickResetButton();
|
||||
|
||||
// * Verify that the modal closed and no error showed
|
||||
await passwordInput.waitFor({state: 'detached'});
|
||||
});
|
||||
|
||||
test('MM-T5520-5 should change the users email', async ({pw}) => {
|
||||
const {getUser, systemConsolePage} = await setupAndGetRandomUser(pw);
|
||||
const newEmail = `${pw.random.id()}@example.com`;
|
||||
|
||||
// # Open menu and click Update Email
|
||||
await systemConsolePage.systemUsers.actionMenuButtons[0].click();
|
||||
const updateEmail = await systemConsolePage.systemUsersActionMenus[0].getMenuItem('Update email');
|
||||
await updateEmail.click();
|
||||
|
||||
// # Enter a random password and click Save
|
||||
const emailInput = await systemConsolePage.page.locator('input[type="email"]');
|
||||
await emailInput.fill(newEmail);
|
||||
await systemConsolePage.clickResetButton();
|
||||
|
||||
// * Verify that the modal closed
|
||||
await emailInput.waitFor({state: 'detached'});
|
||||
|
||||
// * Verify that the email updated
|
||||
const firstRow = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
expect(await firstRow.innerText()).toContain(newEmail);
|
||||
expect((await getUser()).email).toEqual(newEmail);
|
||||
});
|
||||
|
||||
test('MM-T5520-6 should revoke sessions', async ({pw}) => {
|
||||
const {systemConsolePage} = await setupAndGetRandomUser(pw);
|
||||
|
||||
// # Open menu and revoke sessions
|
||||
await systemConsolePage.systemUsers.actionMenuButtons[0].click();
|
||||
const removeSessions = await systemConsolePage.systemUsersActionMenus[0].getMenuItem('Remove sessions');
|
||||
await removeSessions.click();
|
||||
|
||||
// # Press confirm on the modal
|
||||
await systemConsolePage.confirmModal.confirm();
|
||||
|
||||
const firstRow = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
expect(await firstRow.innerHTML()).not.toContain('class="error"');
|
||||
});
|
||||
@@ -0,0 +1,91 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {expect, test} from '@mattermost/playwright-lib';
|
||||
|
||||
test('MM-T5523-1 Sortable columns should sort the list when clicked', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create 10 random users
|
||||
for (let i = 0; i < 10; i++) {
|
||||
await adminClient.createUser(pw.random.user(), '', '');
|
||||
}
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// * Verify that 'Email' column has aria-sort attribute
|
||||
const userDetailsColumnHeader = await systemConsolePage.systemUsers.getColumnHeader('Email');
|
||||
expect(await userDetailsColumnHeader.isVisible()).toBe(true);
|
||||
expect(userDetailsColumnHeader).toHaveAttribute('aria-sort');
|
||||
|
||||
// # Store the first row's email before sorting
|
||||
const firstRowWithoutSort = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
const firstRowEmailWithoutSort = await firstRowWithoutSort.getByText(pw.simpleEmailRe).allInnerTexts();
|
||||
|
||||
// # Click on the 'Email' column header to sort
|
||||
await systemConsolePage.systemUsers.clickSortOnColumn('Email');
|
||||
await systemConsolePage.systemUsers.isLoadingComplete();
|
||||
|
||||
// # Store the first row's email after sorting
|
||||
const firstRowWithSort = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
const firstRowEmailWithSort = await firstRowWithSort.getByText(pw.simpleEmailRe).allInnerTexts();
|
||||
|
||||
// * Verify that the first row is now different
|
||||
expect(firstRowEmailWithoutSort).not.toBe(firstRowEmailWithSort);
|
||||
});
|
||||
|
||||
test('MM-T5523-2 Non sortable columns should not sort the list when clicked', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create 10 random users
|
||||
for (let i = 0; i < 10; i++) {
|
||||
await adminClient.createUser(pw.random.user(), '', '');
|
||||
}
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// * Verify that 'Last login' column does not have aria-sort attribute
|
||||
const userDetailsColumnHeader = await systemConsolePage.systemUsers.getColumnHeader('Last login');
|
||||
expect(await userDetailsColumnHeader.isVisible()).toBe(true);
|
||||
expect(userDetailsColumnHeader).not.toHaveAttribute('aria-sort');
|
||||
|
||||
// # Store the first row's email without sorting
|
||||
const firstRowWithoutSort = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
const firstRowEmailWithoutSort = await firstRowWithoutSort.getByText(pw.simpleEmailRe).allInnerTexts();
|
||||
|
||||
// # Try to click on the 'Last login' column header to sort
|
||||
await systemConsolePage.systemUsers.clickSortOnColumn('Last login');
|
||||
|
||||
// # Store the first row's email after sorting
|
||||
const firstRowWithSort = await systemConsolePage.systemUsers.getNthRow(1);
|
||||
const firstRowEmailWithSort = await firstRowWithSort.getByText(pw.simpleEmailRe).allInnerTexts();
|
||||
|
||||
// * Verify that the first row's email is still the same
|
||||
expect(firstRowEmailWithoutSort).toEqual(firstRowEmailWithSort);
|
||||
});
|
||||
@@ -0,0 +1,129 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {expect, test} from '@mattermost/playwright-lib';
|
||||
|
||||
test('MM-T5523-3 Should list the column names with checkboxes in the correct order', async ({pw}) => {
|
||||
const {adminUser} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Open the column toggle menu
|
||||
await systemConsolePage.systemUsers.openColumnToggleMenu();
|
||||
await systemConsolePage.systemUsersColumnToggleMenu.toBeVisible();
|
||||
|
||||
// # Get all the menu items
|
||||
const menuItems = await systemConsolePage.systemUsersColumnToggleMenu.getAllMenuItems();
|
||||
const menuItemsTexts = await menuItems.allInnerTexts();
|
||||
|
||||
// * Verify menu items exists in the correct order
|
||||
expect(menuItemsTexts).toHaveLength(9);
|
||||
expect(menuItemsTexts).toEqual([
|
||||
'User details',
|
||||
'Email',
|
||||
'Member since',
|
||||
'Last login',
|
||||
'Last activity',
|
||||
'Last post',
|
||||
'Days active',
|
||||
'Messages posted',
|
||||
'Actions',
|
||||
]);
|
||||
});
|
||||
|
||||
test('MM-T5523-4 Should allow certain columns to be checked and others to be disabled', async ({pw}) => {
|
||||
const {adminUser} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Open the column toggle menu
|
||||
await systemConsolePage.systemUsers.openColumnToggleMenu();
|
||||
await systemConsolePage.systemUsersColumnToggleMenu.toBeVisible();
|
||||
|
||||
// * Verify that 'Display Name' is disabled
|
||||
const displayNameMenuItem = await systemConsolePage.systemUsersColumnToggleMenu.getMenuItem('User details');
|
||||
expect(displayNameMenuItem).toBeDisabled();
|
||||
|
||||
// * Verify that 'Actions' is disabled
|
||||
const actionsMenuItem = await systemConsolePage.systemUsersColumnToggleMenu.getMenuItem('Actions');
|
||||
expect(actionsMenuItem).toBeDisabled();
|
||||
|
||||
// * Verify that 'Email' however is enabled
|
||||
const emailMenuItem = await systemConsolePage.systemUsersColumnToggleMenu.getMenuItem('Email');
|
||||
expect(emailMenuItem).not.toBeDisabled();
|
||||
});
|
||||
|
||||
test('MM-T5523-5 Should show/hide the columns which are toggled on/off', async ({pw}) => {
|
||||
const {adminUser} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Open the column toggle menu
|
||||
await systemConsolePage.systemUsers.openColumnToggleMenu();
|
||||
await systemConsolePage.systemUsersColumnToggleMenu.toBeVisible();
|
||||
|
||||
// # Uncheck the Email and Last login columns to hide them
|
||||
await systemConsolePage.systemUsersColumnToggleMenu.clickMenuItem('Email');
|
||||
await systemConsolePage.systemUsersColumnToggleMenu.clickMenuItem('Last login');
|
||||
|
||||
// * Close the column toggle menu
|
||||
await systemConsolePage.systemUsersColumnToggleMenu.close();
|
||||
|
||||
// * Verify that Email column and Last login column are hidden
|
||||
expect(await systemConsolePage.systemUsers.doesColumnExist('Email')).toBe(false);
|
||||
expect(await systemConsolePage.systemUsers.doesColumnExist('Last login')).toBe(false);
|
||||
|
||||
// # Now open the column toggle menu again
|
||||
await systemConsolePage.systemUsers.openColumnToggleMenu();
|
||||
|
||||
// # Check the Email column to show it
|
||||
await systemConsolePage.systemUsersColumnToggleMenu.clickMenuItem('Email');
|
||||
|
||||
// * Close the column toggle menu
|
||||
await systemConsolePage.systemUsersColumnToggleMenu.close();
|
||||
|
||||
// * Verify that Email column is now shown
|
||||
expect(await systemConsolePage.systemUsers.doesColumnExist('Email')).toBe(true);
|
||||
|
||||
// * Verify that however Last login column is still hidden as we did not check it on
|
||||
expect(await systemConsolePage.systemUsers.doesColumnExist('Last login')).toBe(false);
|
||||
});
|
||||
@@ -0,0 +1,68 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {expect, test} from '@mattermost/playwright-lib';
|
||||
|
||||
test.fixme('MM-T5522 Should begin export of data when export button is pressed', async ({pw}) => {
|
||||
test.slow();
|
||||
|
||||
// # Skip test if no license
|
||||
await pw.skipIfNoLicense();
|
||||
|
||||
const {adminUser} = await pw.initSetup();
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {page, channelsPage, systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Change the export pw.duration to 30 days
|
||||
await systemConsolePage.systemUsers.dateRangeSelectorMenuButton.click();
|
||||
await systemConsolePage.systemUsersDateRangeMenu.clickMenuItem('All time');
|
||||
|
||||
// # Click Export button and confirm the modal
|
||||
await systemConsolePage.systemUsers.exportButton.click();
|
||||
await systemConsolePage.exportModal.confirm();
|
||||
|
||||
// # Change the export pw.duration to all time
|
||||
await systemConsolePage.systemUsers.dateRangeSelectorMenuButton.click();
|
||||
await systemConsolePage.systemUsersDateRangeMenu.clickMenuItem('Last 30 days');
|
||||
|
||||
// # Click Export button and confirm the modal
|
||||
await systemConsolePage.systemUsers.exportButton.click();
|
||||
await systemConsolePage.exportModal.confirm();
|
||||
|
||||
// # Click Export again button and confirm the modal
|
||||
await systemConsolePage.systemUsers.exportButton.click();
|
||||
await systemConsolePage.exportModal.confirm();
|
||||
|
||||
// * Verify that we are told that one is already running
|
||||
expect(page.getByText('Export is in progress')).toBeVisible();
|
||||
|
||||
// # Go back to Channels and open the system bot DM
|
||||
channelsPage.goto('ad-1/messages', '@system-bot');
|
||||
await channelsPage.centerView.toBeVisible();
|
||||
|
||||
// * Verify that we have started the export and that the second one is running second
|
||||
const lastPost = await channelsPage.centerView.getLastPost();
|
||||
const postText = await lastPost.body.innerText();
|
||||
expect(postText).toContain('export of user data for the last 30 days');
|
||||
|
||||
// * Wait until the first export finishes
|
||||
await channelsPage.centerView.waitUntilLastPostContains('contains user data for all time', pw.duration.half_min);
|
||||
|
||||
// * Wait until the second export finishes
|
||||
await channelsPage.centerView.waitUntilLastPostContains(
|
||||
'contains user data for the last 30 days',
|
||||
pw.duration.half_min,
|
||||
);
|
||||
});
|
||||
@@ -0,0 +1,162 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {test} from '@mattermost/playwright-lib';
|
||||
|
||||
test('MM-T5521-7 Should be able to filter users with team filter', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create a team with a user
|
||||
const team1 = await adminClient.createTeam(pw.random.team());
|
||||
const user1 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
await adminClient.addToTeam(team1.id, user1.id);
|
||||
|
||||
// # Create another team with a user
|
||||
const team2 = await adminClient.createTeam(pw.random.team());
|
||||
const user2 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
await adminClient.addToTeam(team2.id, user2.id);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Open the filter's popover
|
||||
await systemConsolePage.systemUsers.openFilterPopover();
|
||||
await systemConsolePage.systemUsersFilterPopover.toBeVisible();
|
||||
|
||||
// # Enter the team name of the first user and select it
|
||||
await systemConsolePage.systemUsersFilterPopover.searchInTeamMenu(team1.display_name);
|
||||
await systemConsolePage.systemUsersFilterPopover.teamMenuInput.press('Enter');
|
||||
|
||||
// # Save the filter and close the popover
|
||||
await systemConsolePage.systemUsersFilterPopover.save();
|
||||
await systemConsolePage.systemUsersFilterPopover.close();
|
||||
await systemConsolePage.systemUsers.isLoadingComplete();
|
||||
|
||||
// * Verify that the user corresponding to the first team is visible as team-1 filter was applied
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound(user1.email);
|
||||
|
||||
// * Verify that the user corresponding to the second team is not visible as team-2 filter was not applied
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsNotFound(user2.email);
|
||||
});
|
||||
|
||||
test('MM-T5521-8 Should be able to filter users with role filter', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create a guest user
|
||||
const guestUser = await adminClient.createUser(pw.random.user(), '', '');
|
||||
await adminClient.updateUserRoles(guestUser.id, 'system_guest');
|
||||
|
||||
// # Create a regular user
|
||||
const regularUser = await adminClient.createUser(pw.random.user(), '', '');
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Open the filter popover
|
||||
await systemConsolePage.systemUsers.openFilterPopover();
|
||||
await systemConsolePage.systemUsersFilterPopover.toBeVisible();
|
||||
|
||||
// # Open the role filter in the popover
|
||||
await systemConsolePage.systemUsersFilterPopover.openRoleMenu();
|
||||
await systemConsolePage.systemUsersRoleMenu.toBeVisible();
|
||||
|
||||
// # Select the Guest role from the role filter
|
||||
await systemConsolePage.systemUsersRoleMenu.clickMenuItem('Guest');
|
||||
await systemConsolePage.systemUsersRoleMenu.close();
|
||||
|
||||
// # Save the filter and close the popover
|
||||
await systemConsolePage.systemUsersFilterPopover.save();
|
||||
await systemConsolePage.systemUsersFilterPopover.close();
|
||||
await systemConsolePage.systemUsers.isLoadingComplete();
|
||||
|
||||
// # Search for the guest user with the filter already applied
|
||||
await systemConsolePage.systemUsers.enterSearchText(guestUser.email);
|
||||
|
||||
// * Verify that guest user is visible as a 'Guest' role filter was applied
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound(guestUser.email);
|
||||
|
||||
// # Search for the regular user with the filter already applied
|
||||
await systemConsolePage.systemUsers.enterSearchText(regularUser.email);
|
||||
|
||||
// * Verify that regular user is not visible as 'Guest' role filter was applied
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound('No data');
|
||||
});
|
||||
|
||||
test('MM-T5521-9 Should be able to filter users with status filter', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create a user and then deactivate it
|
||||
const deactivatedUser = await adminClient.createUser(pw.random.user(), '', '');
|
||||
await adminClient.updateUserActive(deactivatedUser.id, false);
|
||||
|
||||
// # Create a regular user
|
||||
const regularUser = await adminClient.createUser(pw.random.user(), '', '');
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Open the filter popover
|
||||
await systemConsolePage.systemUsers.openFilterPopover();
|
||||
await systemConsolePage.systemUsersFilterPopover.toBeVisible();
|
||||
|
||||
// # Open the status filter in the popover
|
||||
await systemConsolePage.systemUsersFilterPopover.openStatusMenu();
|
||||
await systemConsolePage.systemUsersStatusMenu.toBeVisible();
|
||||
await systemConsolePage.systemUsers.isLoadingComplete();
|
||||
|
||||
// # Select the Deactivated users from the status filter
|
||||
await systemConsolePage.systemUsersStatusMenu.clickMenuItem('Deactivated users');
|
||||
await systemConsolePage.systemUsersStatusMenu.close();
|
||||
|
||||
// # Save the filter and close the popover
|
||||
await systemConsolePage.systemUsersFilterPopover.save();
|
||||
await systemConsolePage.systemUsersFilterPopover.close();
|
||||
|
||||
// # Search for the deactivated user with the filter already applied
|
||||
await systemConsolePage.systemUsers.enterSearchText(deactivatedUser.email);
|
||||
|
||||
// * Verify that deactivated user is visible as a 'Deactivated' status filter was applied
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound(deactivatedUser.email);
|
||||
|
||||
// # Search for the regular user with the filter already applied
|
||||
await systemConsolePage.systemUsers.enterSearchText(regularUser.email);
|
||||
|
||||
// * Verify that regular user is not visible as 'Deactivated' status filter was applied
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound('No data');
|
||||
});
|
||||
@@ -0,0 +1,186 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {test} from '@mattermost/playwright-lib';
|
||||
|
||||
test('MM-T5521-1 Should be able to search users with their first names', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create 2 users
|
||||
const user1 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
const user2 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Enter the 'First Name' of the first user in the search box
|
||||
await systemConsolePage.systemUsers.enterSearchText(user1.first_name);
|
||||
|
||||
// * Verify that the searched user i.e first user is found in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound(user1.email);
|
||||
|
||||
// * Verify that the second user doesnt appear in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsNotFound(user2.email);
|
||||
});
|
||||
|
||||
test('MM-T5521-2 Should be able to search users with their last names', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create 2 users
|
||||
const user1 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
const user2 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Enter the 'Last Name' of the user in the search box
|
||||
await systemConsolePage.systemUsers.enterSearchText(user1.last_name);
|
||||
|
||||
// * Verify that the searched user i.e first user is found in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound(user1.email);
|
||||
|
||||
// * Verify that the second user doesnt appear in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsNotFound(user2.email);
|
||||
});
|
||||
|
||||
test('MM-T5521-3 Should be able to search users with their emails', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create 2 users
|
||||
const user1 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
const user2 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// * Enter the 'Email' of the first user in the search box
|
||||
await systemConsolePage.systemUsers.enterSearchText(user1.email);
|
||||
|
||||
// * Verify that the searched user i.e first user is found in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound(user1.email);
|
||||
|
||||
// * Verify that the second user doesnt appear in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsNotFound(user2.email);
|
||||
});
|
||||
|
||||
test('MM-T5521-4 Should be able to search users with their usernames', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create 2 users
|
||||
const user1 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
const user2 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
await systemConsolePage.systemUsers.toBeVisible();
|
||||
|
||||
// # Enter the 'Username' of the first user in the search box
|
||||
await systemConsolePage.systemUsers.enterSearchText(user1.username);
|
||||
|
||||
// * Verify that the searched user i.e first user is found in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound(user1.email);
|
||||
|
||||
// * Verify that the another user is not visible
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsNotFound(user2.email);
|
||||
});
|
||||
|
||||
test('MM-T5521-5 Should be able to search users with their nick names', async ({pw}) => {
|
||||
const {adminUser, adminClient} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Create 2 users
|
||||
const user1 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
const user2 = await adminClient.createUser(pw.random.user(), '', '');
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
|
||||
// # Enter the 'Nickname' of the first user in the search box
|
||||
await systemConsolePage.systemUsers.enterSearchText(user1.nickname);
|
||||
|
||||
// * Verify that the searched user i.e first user is found in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound(user1.email);
|
||||
|
||||
// * Verify that the second user doesnt appear in the list
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsNotFound(user2.email);
|
||||
});
|
||||
|
||||
test('MM-T5521-6 Should show no user is found when user doesnt exists', async ({pw}) => {
|
||||
const {adminUser} = await pw.initSetup();
|
||||
|
||||
if (!adminUser) {
|
||||
throw new Error('Failed to create admin user');
|
||||
}
|
||||
|
||||
// # Log in as admin
|
||||
const {systemConsolePage} = await pw.testBrowser.login(adminUser);
|
||||
|
||||
// # Visit system console
|
||||
await systemConsolePage.goto();
|
||||
await systemConsolePage.toBeVisible();
|
||||
|
||||
// # Go to Users section
|
||||
await systemConsolePage.sidebar.goToItem('Users');
|
||||
|
||||
// # Enter random text in the search box
|
||||
await systemConsolePage.systemUsers.enterSearchText(`!${pw.random.id(15)}_^^^_${pw.random.id(15)}!`);
|
||||
|
||||
await systemConsolePage.systemUsers.verifyRowWithTextIsFound('No data');
|
||||
});
|
||||
Ссылка в новой задаче
Block a user