diff --git a/e2e/cypress/tests/integration/enterprise/elasticsearch_autocomplete/helpers/index.js b/e2e/cypress/tests/integration/enterprise/elasticsearch_autocomplete/helpers/index.js index a3deb9aa578c..5376bd57e57e 100644 --- a/e2e/cypress/tests/integration/enterprise/elasticsearch_autocomplete/helpers/index.js +++ b/e2e/cypress/tests/integration/enterprise/elasticsearch_autocomplete/helpers/index.js @@ -73,6 +73,11 @@ function createChannel(channelType, teamId, userToAdd = null) { }); } +export function createPrivateChannel(teamId, userToAdd = null) { + // # Create a private channel as sysadmin + return createChannel('P', teamId, userToAdd); +} + module.exports = { withTimestamp, createEmail, diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_add_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_add_spec.ts similarity index 93% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_add_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_add_spec.ts index 981826cefddb..b9badf19a0c3 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_add_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_add_spec.ts @@ -13,14 +13,17 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {Channel} from '@mattermost/types/lib/channels'; +import {Team} from '@mattermost/types/lib/teams'; +import {UserProfile} from '@mattermost/types/lib/users'; import {createPrivateChannel} from '../elasticsearch_autocomplete/helpers'; import * as TIMEOUTS from '../../../fixtures/timeouts'; describe('Guest Account - Guest User Experience', () => { - let guestUser; - let privateChannel; - let testTeam; + let guestUser: UserProfile; + let privateChannel: Channel; + let testTeam: Team; before(() => { // * Check if server has license for Guest Accounts diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_experience_ui_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_experience_ui_spec.ts similarity index 98% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_experience_ui_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_experience_ui_spec.ts index 247ac58c0145..98c45099db7a 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_experience_ui_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_experience_ui_spec.ts @@ -13,6 +13,8 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {UserProfile} from '@mattermost/types/lib/users'; + import * as TIMEOUTS from '../../../fixtures/timeouts'; function demoteGuestUser(guestUser) { @@ -26,7 +28,7 @@ function demoteGuestUser(guestUser) { } describe('Guest Account - Guest User Experience', () => { - let guestUser; + let guestUser: UserProfile; before(() => { // * Check if server has license for Guest Accounts diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_feature_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_feature_spec.ts similarity index 94% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_feature_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_feature_spec.ts index d3eea8388574..16c194e0e679 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_feature_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_feature_spec.ts @@ -1,6 +1,8 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import {UserProfile} from '@mattermost/types/lib/users'; + // *************************************************************** // - [#] indicates a test step (e.g. #. Go to a page) // - [*] indicates an assertion (e.g. * Check the title) @@ -15,12 +17,12 @@ */ describe('Guest Accounts', () => { - let guestUser; + let guestUser: UserProfile; before(() => { cy.apiRequireLicenseForFeature('GuestAccounts'); - cy.apiCreateGuestUser().then(({guest}) => { + cy.apiCreateGuestUser().then((guest) => { guestUser = guest; }); }); @@ -35,7 +37,7 @@ describe('Guest Accounts', () => { // # Click "Save". cy.get('#saveSetting').then((btn) => { if (btn.is(':enabled')) { - btn.on('click'); + btn.on('click', () => {}); cy.waitUntil(() => cy.get('#saveSetting').then((el) => { return el[0].innerText === 'Save'; diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_spec.ts similarity index 94% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_spec.ts index 4f6cd78c1af1..2df2d8bad986 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_spec.ts @@ -13,6 +13,9 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {Channel} from '@mattermost/types/lib/channels'; +import {Team} from '@mattermost/types/lib/teams'; +import {UserProfile} from '@mattermost/types/lib/users'; import authenticator from 'authenticator'; @@ -25,10 +28,10 @@ import { } from '../../../utils'; describe('Guest Accounts', () => { - let sysadmin; - let testTeam; - let testChannel; - let adminMFASecret; + let sysadmin: UserProfile; + let testTeam: Team; + let testChannel: Channel; + let adminMFASecret: string; const username = 'g' + getRandomId(); // username has to start with a letter. before(() => { @@ -41,8 +44,8 @@ describe('Guest Accounts', () => { }); // # Log in as a team admin. - cy.apiAdminLogin().then((res) => { - sysadmin = res.user; + cy.apiAdminLogin().then((adminUser) => { + sysadmin = adminUser; }); }); diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts similarity index 91% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts index 331c761bbb72..f8f16ac3c934 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts @@ -10,11 +10,14 @@ // Stage: @prod // Group: @enterprise @guest_account @not_cloud +import {Channel} from '@mattermost/types/lib/channels'; +import {UserProfile} from '@mattermost/types/lib/users'; + import * as TIMEOUTS from '../../../fixtures/timeouts'; describe('Verify Guest User Identification in different screens', () => { - let guest; - let testChannel; + let guest: UserProfile; + let testChannel: Channel; before(() => { cy.shouldNotRunOnCloudEdition(); @@ -35,7 +38,7 @@ describe('Verify Guest User Identification in different screens', () => { cy.apiInitSetup().then(({team, channel, user}) => { testChannel = channel; - cy.apiCreateGuestUser().then(({guest: guestUser}) => { + cy.apiCreateGuestUser().then((guestUser) => { guest = guestUser; cy.apiAddUserToTeam(team.id, guest.id).then(() => { cy.apiAddUserToChannel(channel.id, guest.id); diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_spec.ts similarity index 93% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_spec.ts index 695735b01ca8..eea1ae1f8497 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_identification_ui_spec.ts @@ -13,15 +13,20 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {Channel} from '@mattermost/types/lib/channels'; +import {Team} from '@mattermost/types/lib/teams'; +import {UserProfile} from '@mattermost/types/lib/users'; +import dayjs from 'dayjs'; + import * as TIMEOUTS from '../../../fixtures/timeouts'; import {getAdminAccount} from '../../../support/env'; describe('Verify Guest User Identification in different screens', () => { const admin = getAdminAccount(); - let regularUser; - let guest; - let testTeam; - let testChannel; + let regularUser: UserProfile; + let guest: UserProfile; + let testTeam: Team; + let testChannel: Channel; before(() => { // * Check if server has license for Guest Accounts @@ -42,7 +47,7 @@ describe('Verify Guest User Identification in different screens', () => { testTeam = team; testChannel = channel; - cy.apiCreateGuestUser().then(({guest: guestUser}) => { + cy.apiCreateGuestUser().then((guestUser) => { guest = guestUser; cy.apiAddUserToTeam(testTeam.id, guest.id).then(() => { cy.apiAddUserToChannel(testChannel.id, guest.id); @@ -87,7 +92,7 @@ describe('Verify Guest User Identification in different screens', () => { cy.visit(`/${testTeam.name}/channels/${testChannel.name}`); // # Get yesterdays date in UTC - const yesterdaysDate = Cypress.dayjs().subtract(1, 'days').valueOf(); + const yesterdaysDate = dayjs().subtract(1, 'days').valueOf(); // # Post a day old message cy.postMessageAs({sender: guest, message: 'Hello from yesterday', channelId: testChannel.id, createAt: yesterdaysDate}). @@ -113,7 +118,8 @@ describe('Verify Guest User Identification in different screens', () => { // # Open RHS comment menu cy.get('@yesterdaysPost').then((postId) => { - cy.clickPostCommentIcon(postId); + // need to check the JS version in order to see how this works originally. + cy.clickPostCommentIcon(postId.toString()); // * Verify Guest Badge in RHS cy.get(`#rhsPost_${postId}`).within(($el) => { diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_more_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts similarity index 96% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_more_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts index e62c30537606..10dbfd67c9a8 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_more_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts @@ -13,6 +13,8 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {Team} from '@mattermost/types/lib/teams'; + import {getRandomId} from '../../../utils'; import * as TIMEOUTS from '../../../fixtures/timeouts'; @@ -24,7 +26,7 @@ import { } from './helpers'; describe('Guest Account - Guest User Invitation Flow', () => { - let testTeam; + let testTeam: Team; before(() => { // * Check if server has license for Guest Accounts @@ -59,7 +61,7 @@ describe('Guest Account - Guest User Invitation Flow', () => { }); it('MM-T1337 Invite Guests - Existing Team Guest', () => { - cy.apiCreateGuestUser().then(({guest}) => { + cy.apiCreateGuestUser().then((guest) => { cy.apiAddUserToTeam(testTeam.id, guest.id).then(() => { // # Search and add an existing guest by first name, who is part of the team but not channel invitePeople(guest.first_name, 1, guest.username, 'Off-Topic'); @@ -88,7 +90,7 @@ describe('Guest Account - Guest User Invitation Flow', () => { it('MM-T1339 Invite Guests - Existing Guest not on the team', () => { // # Search and add an existing guest by email, who is not part of the team - cy.apiCreateGuestUser().then(({guest}) => { + cy.apiCreateGuestUser().then((guest) => { invitePeople(guest.email, 1, guest.username); verifyInvitationSuccess(guest.username, testTeam, 'This guest has been added to the team and channel.', true); @@ -121,7 +123,7 @@ describe('Guest Account - Guest User Invitation Flow', () => { verifyInvitationError(email, testTeam, expectedError); // # From System Console try to update email of guest user - cy.apiCreateGuestUser().then(({guest}) => { + cy.apiCreateGuestUser().then((guest) => { // # Navigate to System Console Users listing page cy.visit('/admin_console/user_management/users'); diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_spec.ts similarity index 98% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_spec.ts index aa8a59956155..ae51eafdf610 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_invitation_ui_spec.ts @@ -13,6 +13,9 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {Team} from '@mattermost/types/lib/teams'; +import {UserProfile} from '@mattermost/types/lib/users'; + import {getRandomId} from '../../../utils'; import { @@ -22,8 +25,8 @@ import { } from './helpers'; describe('Guest Account - Guest User Invitation Flow', () => { - let testTeam; - let newUser; + let testTeam: Team; + let newUser: UserProfile; before(() => { // * Check if server has license for Guest Accounts diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_popover_ui_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_popover_ui_spec.ts similarity index 85% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_popover_ui_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_popover_ui_spec.ts index 238de488601d..97b2bee43fd2 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_popover_ui_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_popover_ui_spec.ts @@ -13,13 +13,17 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {Channel} from '@mattermost/types/lib/channels'; +import {Team} from '@mattermost/types/lib/teams'; +import {UserProfile} from '@mattermost/types/lib/users'; + import * as TIMEOUTS from '../../../fixtures/timeouts'; describe('Guest Account - Guest User Badge and Popover', () => { - let regularUser; - let guest; - let testTeam; - let testChannel; + let regularUser: UserProfile; + let guest: UserProfile; + let testTeam: Team; + let testChannel: Channel; before(() => { // * Check if server has license for Guest Accounts @@ -40,10 +44,10 @@ describe('Guest Account - Guest User Badge and Popover', () => { testTeam = team; testChannel = channel; - cy.apiCreateGuestUser().then(({guest: guestUser}) => { + cy.apiCreateGuestUser().then((guestUser) => { guest = guestUser; cy.log(`Guest Id: ${guest.id}`); - cy.log(`Gurest Username ${guest.username}`); + cy.log(`Guest Username ${guest.username}`); cy.apiAddUserToTeam(testTeam.id, guest.id).then(() => { cy.apiAddUserToChannel(testChannel.id, guest.id); }); diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_removal_ui_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_removal_ui_spec.ts similarity index 94% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/guest_removal_ui_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/guest_removal_ui_spec.ts index adb6133a2205..a8a1cc65238a 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_removal_ui_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/guest_removal_ui_spec.ts @@ -13,6 +13,9 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {Team} from '@mattermost/types/lib/teams'; +import {UserProfile} from '@mattermost/types/lib/users'; + import * as TIMEOUTS from '../../../fixtures/timeouts'; function removeUserFromAllChannels(verifyAlert, user) { @@ -38,22 +41,19 @@ function removeUserFromAllChannels(verifyAlert, user) { } describe('Guest Account - Guest User Removal Experience', () => { - let team1; - let team2; - let guest; + let team1: Team; + let team2: Team; + let guest: UserProfile; before(() => { // * Check if server has license for Guest Accounts cy.apiRequireLicenseForFeature('GuestAccounts'); - cy.apiInitSetup().then(({team}) => { - team1 = team; - + cy.apiInitSetup().then(({team: team1}) => { // # Create new team and visit its URL - cy.apiCreateTeam('test-team2', 'Test Team2').then(({team: teamTwo}) => { + cy.apiCreateTeam('test-team2', 'Test Team2').then(({team: team2}) => { cy.apiCreateUser().then(({user}) => { guest = user; - team2 = teamTwo; cy.apiAddUserToTeam(team1.id, guest.id); cy.apiAddUserToTeam(team2.id, guest.id).then(() => { cy.apiLogin(guest); diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/helpers.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/helpers.ts similarity index 90% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/helpers.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/helpers.ts index 04fedc9fa580..f1379b8abb78 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/helpers.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/helpers.ts @@ -1,6 +1,8 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import {Team} from '@mattermost/types/lib/teams'; + export function changeGuestFeatureSettings(featureFlag = true, emailInvitation = true, whitelistedDomains = '') { // # Update Guest Accounts, Email Invitations, and Whitelisted Domains cy.apiUpdateConfig({ @@ -14,7 +16,7 @@ export function changeGuestFeatureSettings(featureFlag = true, emailInvitation = }); } -export function invitePeople(typeText, resultsCount, verifyText, channelName = 'Town Square', clickInvite = true) { +export function invitePeople(typeText: string, resultsCount: number, verifyText: string, channelName = 'Town Square', clickInvite = true) { // # Open team menu and click 'Invite People' cy.uiOpenTeamMenu('Invite People'); @@ -42,7 +44,7 @@ export function invitePeople(typeText, resultsCount, verifyText, channelName = ' } } -export function verifyInvitationError(user, team, errorText, verifyGuestBadge = false) { +export function verifyInvitationError(user: string, team: Team, errorText: string, verifyGuestBadge = false) { // * Verify the content and error message in the Invitation Modal cy.findByTestId('invitationModal').within(() => { cy.get('h1').should('have.text', `Guests invited to ${team.display_name}`); @@ -64,7 +66,7 @@ export function verifyInvitationError(user, team, errorText, verifyGuestBadge = cy.get('.InvitationModal').should('not.exist'); } -export function verifyInvitationSuccess(user, team, successText, verifyGuestBadge = false) { +export function verifyInvitationSuccess(user: string, team: Team, successText: string, verifyGuestBadge = false) { // * Verify the content and success message in the Invitation Modal cy.findByTestId('invitationModal').within(() => { cy.get('h1').should('have.text', `Guests invited to ${team.display_name}`); diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/member_invitation_ui_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/member_invitation_ui_spec.ts similarity index 97% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/member_invitation_ui_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/member_invitation_ui_spec.ts index 1c265f04603f..787567294b0d 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/member_invitation_ui_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/member_invitation_ui_spec.ts @@ -13,14 +13,17 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {Team} from '@mattermost/types/lib/teams'; +import {UserProfile} from 'mattermost-redux/types/users'; + import {getRandomId, stubClipboard} from '../../../utils'; import {getAdminAccount} from '../../../support/env'; import * as TIMEOUTS from '../../../fixtures/timeouts'; describe('Guest Account - Member Invitation Flow', () => { const sysadmin = getAdminAccount(); - let testTeam; - let testUser; + let testTeam: Team; + let testUser: UserProfile; beforeEach(() => { // # Login as sysadmin @@ -155,7 +158,7 @@ describe('Guest Account - Member Invitation Flow', () => { }); it('MM-T1326 Verify Invite Members - Existing Team Member', () => { - cy.apiCreateTeam('team', 'Team').then(({team}) => { + cy.apiCreateTeam('team', 'Team').then((team) => { // # Login as new user loginAsNewUser(team); @@ -168,7 +171,7 @@ describe('Guest Account - Member Invitation Flow', () => { }); it('MM-T1328 Invite Members - Existing Member not on the team', () => { - cy.apiCreateTeam('team', 'Team').then(({team}) => { + cy.apiCreateTeam('team', 'Team').then((team) => { // # Login as new user loginAsNewUser(team); @@ -181,7 +184,7 @@ describe('Guest Account - Member Invitation Flow', () => { }); it('MM-T1329 Invite Members - Invite People - Existing Guest not on the team', () => { - cy.apiCreateTeam('team', 'Team').then(({team}) => { + cy.apiCreateTeam('team', 'Team').then((team) => { // # Login as new user loginAsNewUser(team); diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_guest_access_ui_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_guest_access_ui_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts similarity index 92% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts index 5676eb7e6909..c7614a852d77 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts @@ -10,14 +10,18 @@ // Stage: @prod // Group: @enterprise @guest_account @not_cloud +import {Channel} from '@mattermost/types/lib/channels'; +import {Team} from '@mattermost/types/lib/teams'; +import {UserProfile} from '@mattermost/types/lib/users'; + import * as TIMEOUTS from '../../../fixtures/timeouts'; import {verifyGuest} from './helpers'; describe('Guest Account - Verify Manage Guest Users', () => { - let guestUser; - let testTeam; - let testChannel; + let guestUser: UserProfile; + let testTeam: Team; + let testChannel: Channel; before(() => { cy.shouldNotRunOnCloudEdition(); @@ -37,7 +41,7 @@ describe('Guest Account - Verify Manage Guest Users', () => { testTeam = team; testChannel = channel; - cy.apiCreateGuestUser().then(({guest}) => { + cy.apiCreateGuestUser().then((guest) => { guestUser = guest; cy.apiAddUserToTeam(testTeam.id, guestUser.id).then(() => { diff --git a/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_spec.js b/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_spec.ts similarity index 92% rename from e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_spec.js rename to e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_spec.ts index 69e789058fa8..db0efc084289 100644 --- a/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_spec.js +++ b/e2e/cypress/tests/integration/enterprise/guest_accounts/system_console_manage_guest_spec.ts @@ -13,6 +13,10 @@ /** * Note: This test requires Enterprise license to be uploaded */ +import {UserProfile} from '@mattermost/types/lib/users'; +import {Team} from '@mattermost/types/lib/teams'; +import {Channel} from '@mattermost/types/lib/channels'; + import * as TIMEOUTS from '../../../fixtures/timeouts'; import {getRandomId} from '../../../utils'; import {getAdminAccount} from '../../../support/env'; @@ -21,9 +25,9 @@ import {verifyGuest} from './helpers'; describe('Guest Account - Verify Manage Guest Users', () => { const admin = getAdminAccount(); - let guestUser; - let testTeam; - let testChannel; + let guestUser: UserProfile; + let testTeam: Team; + let testChannel: Channel; before(() => { // * Check if server has license for Guest Accounts @@ -41,7 +45,7 @@ describe('Guest Account - Verify Manage Guest Users', () => { testTeam = team; testChannel = channel; - cy.apiCreateGuestUser().then(({guest}) => { + cy.apiCreateGuestUser().then((guest) => { guestUser = guest; cy.apiAddUserToTeam(testTeam.id, guestUser.id).then(() => { @@ -125,8 +129,7 @@ describe('Guest Account - Verify Manage Guest Users', () => { cy.get(`#sidebarItem_${testChannel.name}`).click({force: true}); // # Issue a Request to Revoke All Sessions as SysAdmin - const baseUrl = Cypress.config('baseUrl'); - cy.externalRequest({user: admin, method: 'post', baseUrl, path: `users/${guestUser.id}/sessions/revoke/all`}).then(() => { + cy.externalRequest({user: admin, method: 'post', path: `users/${guestUser.id}/sessions/revoke/all`}).then(() => { // # Initiate browser activity like visit on test channel cy.visit(`/${testTeam.name}/channels/${testChannel.name}`); diff --git a/e2e/cypress/tests/support/api/user.d.ts b/e2e/cypress/tests/support/api/user.d.ts index 9bc31c5e0386..14af1de6e120 100644 --- a/e2e/cypress/tests/support/api/user.d.ts +++ b/e2e/cypress/tests/support/api/user.d.ts @@ -17,7 +17,6 @@ declare namespace Cypress { interface Chainable { - /** * Login to server via API. * See https://api.mattermost.com/#tag/users/paths/~1users~1login/post @@ -41,7 +40,10 @@ declare namespace Cypress { * @example * cy.apiLoginWithMFA({username: 'sysadmin', password: 'secret', token: '123456'}); */ - apiLoginWithMFA(user: UserProfile, token: string): Chainable; + apiLoginWithMFA( + user: UserProfile, + token: string + ): Chainable; /** * Login as admin via API. @@ -62,7 +64,7 @@ declare namespace Cypress { * @example * cy.apiAdminLoginWithMFA(token); */ - apiAdminLoginWithMFA(): Chainable; + apiAdminLoginWithMFA(token: string): Chainable; /** * Logout a user's active session from server via API. @@ -110,7 +112,7 @@ declare namespace Cypress { * // do something with user * }); */ - apiGetUserByEmail(email: string): Chainable<{user: UserProfile}>; + apiGetUserByEmail(email: string): Chainable<{ user: UserProfile }>; /** * Get users by usernames. @@ -147,7 +149,10 @@ declare namespace Cypress { * // do something with user * }); */ - apiPatchUser(userId: string, userData: UserProfile): Chainable; + apiPatchUser( + userId: string, + userData: UserProfile + ): Chainable; /** * Convenient command to patch a current user. @@ -192,7 +197,10 @@ declare namespace Cypress { * * @returns {UserProfile} `out.sysadmin` as `UserProfile` object */ - apiCreateCustomAdmin(options: {loginAfter: boolean; hideAdminTrialModal: boolean}): Chainable<{sysadmin: UserProfile}>; + apiCreateCustomAdmin(options: { + loginAfter: boolean; + hideAdminTrialModal: boolean; + }): Chainable<{ sysadmin: UserProfile }>; /** * Create a new user with an options to set name prefix and be able to bypass tutorial steps. @@ -210,7 +218,7 @@ declare namespace Cypress { prefix?: string; bypassTutorial?: boolean; showOnboarding?: boolean; - }): Chainable<{user: UserProfile}>; + }): Chainable<{ user: UserProfile }>; /** * Create a new guest user with an options to set name prefix and be able to bypass tutorial steps. @@ -222,7 +230,9 @@ declare namespace Cypress { * @example * cy.apiCreateGuestUser(options); */ - apiCreateGuestUser(options: Record): Chainable; + apiCreateGuestUser( + options?: Record + ): Chainable; /** * Revoke all active sessions for a user. @@ -261,7 +271,9 @@ declare namespace Cypress { * // do something with users * }); */ - apiGetUsersNotInTeam(queryParams: Record): Chainable; + apiGetUsersNotInTeam( + queryParams: Record + ): Chainable; /** * Reactivate a user account. @@ -307,16 +319,16 @@ declare namespace Cypress { apiPromoteGuestToUser(userId: string): Chainable; /** - * Verifies a user's email via userId without having to go to the user's email inbox. - * See https://api.mattermost.com/#tag/users/paths/~1users~1{user_id}~1email~1verify~1member/post - * @param {string} userId - User ID - * @returns {UserProfile} out.user: `UserProfile` object - * - * @example - * cy.apiVerifyUserEmailById('user-id').then(({user}) => { - * // do something with user - * }); - */ + * Verifies a user's email via userId without having to go to the user's email inbox. + * See https://api.mattermost.com/#tag/users/paths/~1users~1{user_id}~1email~1verify~1member/post + * @param {string} userId - User ID + * @returns {UserProfile} out.user: `UserProfile` object + * + * @example + * cy.apiVerifyUserEmailById('user-id').then(({user}) => { + * // do something with user + * }); + */ apiVerifyUserEmailById(userId: string): Chainable; /** @@ -328,7 +340,11 @@ declare namespace Cypress { * @example * cy.apiActivateUserMFA('user-id', activate: false); */ - apiActivateUserMFA(userId: string, activate: boolean, token: string): Chainable; + apiActivateUserMFA( + userId: string, + activate: boolean, + token: string + ): Chainable; /** * Create a user access token @@ -338,7 +354,10 @@ declare namespace Cypress { * @example * cy.apiAccessToken('user-id', 'token for cypress tests'); */ - apiAccessToken(userId: string, description: string): Chainable; + apiAccessToken( + userId: string, + description: string + ): Chainable; /** * Revoke a user access token @@ -359,7 +378,12 @@ declare namespace Cypress { * @example * cy.apiUpdateUserAuth('user-id', 'auth-data', 'password', 'auth-service'); */ - apiUpdateUserAuth(userId: string, authData: string, password: string, authService: string): Chainable; + apiUpdateUserAuth( + userId: string, + authData: string, + password: string, + authService: string + ): Chainable; /** * Get total count of users in the system diff --git a/e2e/cypress/tests/support/email.d.ts b/e2e/cypress/tests/support/email.d.ts new file mode 100644 index 000000000000..5b29fa911f37 --- /dev/null +++ b/e2e/cypress/tests/support/email.d.ts @@ -0,0 +1,22 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +/// + +declare namespace Cypress { + interface Chainable { + + /** + * getRecentEmail is a task to get an email sent to a user + * from the email service provider + * @param options.username - username of the user + * @param options.email - email of the user + * + * @example + * cy.getRecentEmail().then((data) => { + * // do something with the email data/content + * }); + */ + getRecentEmail(options: Pick): Chainable; + } +} diff --git a/e2e/cypress/tests/support/extended_commands.d.ts b/e2e/cypress/tests/support/extended_commands.d.ts index 82c4d2e043ec..d79f15d3aece 100644 --- a/e2e/cypress/tests/support/extended_commands.d.ts +++ b/e2e/cypress/tests/support/extended_commands.d.ts @@ -15,7 +15,11 @@ declare namespace Cypress { * @example * cy.reload(); */ - reload(forceReload: boolean, options?: Partial, duration?: number): Chainable; + reload( + forceReload: boolean, + options?: Partial, + duration?: number + ): Chainable; /** * Visit the given url, same as cy.visit but extended with explicit wait to allow page to load freely @@ -26,7 +30,11 @@ declare namespace Cypress { * @example * cy.visit('url'); */ - visit(url: string, options?: Partial, duration?: number): Chainable; + visit( + url: string, + options?: Partial, + duration?: number + ): Chainable; /** * types the given string with `TypeOption.force` set to true diff --git a/e2e/cypress/tests/support/ui/common.d.ts b/e2e/cypress/tests/support/ui/common.d.ts index fc8bfdf77954..91a453ee975e 100644 --- a/e2e/cypress/tests/support/ui/common.d.ts +++ b/e2e/cypress/tests/support/ui/common.d.ts @@ -52,6 +52,8 @@ declare namespace Cypress { /** * Get a button by its text using "cy.findByRole" * + * @param {String} label - Button text + * * @example * cy.uiGetButton('Save'); */ diff --git a/e2e/cypress/tests/support/ui/sidebar_left.ts b/e2e/cypress/tests/support/ui/sidebar_left.ts index fdc03678d639..36aceea477a7 100644 --- a/e2e/cypress/tests/support/ui/sidebar_left.ts +++ b/e2e/cypress/tests/support/ui/sidebar_left.ts @@ -176,7 +176,7 @@ declare global { * @example * cy.uiOpenTeamMenu(); */ - uiOpenTeamMenu(item: string): Chainable; + uiOpenTeamMenu(item?: string): Chainable; /** * Get LHS add channel button diff --git a/e2e/cypress/tests/support/ui_commands.ts b/e2e/cypress/tests/support/ui_commands.ts index 8e73c26f499a..fad62243da87 100644 --- a/e2e/cypress/tests/support/ui_commands.ts +++ b/e2e/cypress/tests/support/ui_commands.ts @@ -716,7 +716,7 @@ declare global { * @param {String} postId - Post ID * @param {String} location - as 'CENTER', 'SEARCH' */ - clickPostCommentIcon(postId: string, location: string): ChainableT; + clickPostCommentIcon(postId: string, location?: string): ChainableT; createNewTeam(teamName: string, teamURL: string): ChainableT;