E2E/Cypress: Upgrade dependencies (#33665)

* upgrade cypress and other dependecies

* fix eslint

* remove axios-retry and update eslint

* fix tests

* fix lint on trailing spaces

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
This commit is contained in:
sabril 2025-09-01 14:14:13 +08:00 committed by GitHub
parent bb979f6f9f
commit 8bf422d6e2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
145 changed files with 6425 additions and 13380 deletions

View file

@ -221,9 +221,7 @@ $(if mme2e_is_token_in_list "keycloak" "$ENABLED_DOCKER_SERVICES"; then
$(if mme2e_is_token_in_list "cypress" "$ENABLED_DOCKER_SERVICES"; then
echo '
cypress:
image: "cypress/browsers:node-18.16.1-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1"
### Temporarily disabling this image, until both the amd64 and arm64 version are mirrored
# image: "mattermostdevelopment/mirrored-cypress-browsers-public:node-18.16.1-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1"
image: "cypress/browsers:node-22.18.0-chrome-139.0.7258.66-1-ff-141.0.3-edge-138.0.3351.121-1"
entrypoint: ["/bin/bash", "-c"]
command: ["until [ -f /var/run/mm_terminate ]; do sleep 5; done"]
env_file:

View file

@ -1 +0,0 @@
node_modules

View file

@ -1,130 +0,0 @@
{
"extends": [
"plugin:mattermost/react",
"plugin:cypress/recommended"
],
"plugins": [
"@babel/eslint-plugin",
"mattermost",
"import",
"no-only-tests",
"@typescript-eslint",
"cypress"
],
"parser": "@typescript-eslint/parser",
"env": {
"cypress/globals": true
},
"settings": {
"react": {
"pragma": "React",
"version": "detect"
}
},
"rules": {
"header/header": [
2,
"line",
" Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n See LICENSE.txt for license information.",
2
],
"cypress/assertion-before-screenshot": "warn",
"cypress/no-assigning-return-values": "error",
"cypress/no-force": "warn",
"cypress/no-async-tests": "error",
"cypress/no-pause": "error",
"cypress/no-unnecessary-waiting": 0,
"cypress/unsafe-to-chain-command": 0,
"func-names": 0,
"import/no-unresolved": 0,
"max-nested-callbacks": 0,
"no-unused-expressions": 0,
"no-process-env": 0,
"no-duplicate-imports": 0,
"no-undefined": 0,
"no-use-before-define": 0,
"import/no-duplicates": 2,
"mattermost/use-external-link": 2,
"eol-last": ["error", "always"],
"import/order": [
0,
{
"newlines-between": "always-and-inside-groups",
"groups": [
"builtin",
"external",
[
"internal",
"parent"
],
"sibling",
"index"
]
}
],
"no-only-tests/no-only-tests": ["error", {"focus": ["only"]}],
"max-lines": ["warn", {"max": 800, "skipBlankLines": true, "skipComments": true}]
},
"overrides": [
{
"files": ["**/*.ts"],
"extends": [
"plugin:@typescript-eslint/recommended"
],
"rules": {
"camelcase": 0,
"no-shadow": 0,
"import/no-unresolved": 0, // ts handles this better
"@typescript-eslint/naming-convention": [
2,
{
"selector": "function",
"format": ["camelCase", "PascalCase"]
},
{
"selector": "variable",
"format": ["camelCase", "PascalCase", "UPPER_CASE"]
},
{
"selector": "parameter",
"format": ["camelCase", "PascalCase"],
"leadingUnderscore": "allow"
},
{
"selector": "typeLike",
"format": ["PascalCase"]
}
],
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-non-null-assertion": 0,
"@typescript-eslint/no-unused-vars": [
2,
{
"vars": "all",
"args": "after-used"
}
],
"@typescript-eslint/no-var-requires": 0,
"@typescript-eslint/no-empty-function": 0,
"@typescript-eslint/prefer-interface": 0,
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/explicit-module-boundary-types": 0,
"@typescript-eslint/indent": [
2,
4,
{
"SwitchCase": 0
}
],
"@typescript-eslint/no-use-before-define": [
2,
{
"classes": false,
"functions": false,
"variables": false
}
]
}
}
]
}

View file

@ -59,7 +59,7 @@ export default defineConfig({
},
e2e: {
setupNodeEvents(on, config) {
return require('./tests/plugins/index.js')(on, config); // eslint-disable-line global-require
return require('./tests/plugins/index.js')(on, config);
},
baseUrl: process.env.MM_SERVICESETTINGS_SITEURL || 'http://localhost:8065',
excludeSpecPattern: '**/node_modules/**/*',

View file

@ -0,0 +1,96 @@
import typescriptEslint from '@typescript-eslint/eslint-plugin';
import globals from 'globals';
import tsParser from '@typescript-eslint/parser';
import path from 'node:path';
import {fileURLToPath} from 'node:url';
import js from '@eslint/js';
import {FlatCompat} from '@eslint/eslintrc';
import eslintPluginHeader from 'eslint-plugin-header';
import pluginCypress from 'eslint-plugin-cypress';
import noOnlyTest from 'eslint-plugin-no-only-tests';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});
eslintPluginHeader.rules.header.meta.schema = false;
export default [
{
ignores: ['**/node_modules', '**/logs', '**/results'],
},
...compat
.extends('eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:import/recommended')
.map((config) => ({
...config,
files: ['**/*.ts', '**/*.js'],
})),
{
files: ['**/*.ts', '**/*.js'],
plugins: {
'@typescript-eslint': typescriptEslint,
header: eslintPluginHeader,
cypress: pluginCypress,
'no-only-tests': noOnlyTest,
},
languageOptions: {
globals: {
...globals.node,
},
parser: tsParser,
ecmaVersion: 5,
sourceType: 'module',
},
settings: {
'import/resolver': {
node: true,
},
},
rules: {
'cypress/assertion-before-screenshot': 'warn',
'cypress/no-assigning-return-values': 'error',
'cypress/no-force': 'off',
'cypress/no-async-tests': 'error',
'cypress/no-pause': 'error',
'cypress/no-unnecessary-waiting': 0,
'cypress/unsafe-to-chain-command': 0,
'func-names': 0,
'import/no-unresolved': 0,
'max-nested-callbacks': 0,
'no-unused-expressions': 0,
'no-process-env': 0,
'no-duplicate-imports': 0,
'no-undefined': 0,
'no-use-before-define': 0,
'no-only-tests/no-only-tests': ['error', {'focus': ['only']}],
'no-console': 'error',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-require-imports': 'off',
'@typescript-eslint/no-unused-expressions': 'off',
'@typescript-eslint/no-var-requires': 'off',
'header/header': [
'error',
'line',
' Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n See LICENSE.txt for license information.',
2,
],
'import/no-duplicates': 2,
'import/order': [
'error',
{
'newlines-between': 'always',
groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
},
],
'import/no-unresolved': 'off',
'max-lines': ['warn', {'max': 800, 'skipBlankLines': true, 'skipComments': true}],
'eol-last': ['error', 'always'],
'no-trailing-spaces': 'error',
},
},
];

View file

@ -1,7 +1,7 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
/* eslint-disable no-await-in-loop, no-console */
/* eslint-disable no-console */
/*
* This command, which is normally used in CI, generates test cycle in full or partial

File diff suppressed because it is too large Load diff

View file

@ -1,81 +1,84 @@
{
"name": "cypress",
"devDependencies": {
"@aws-sdk/client-s3": "3.554.0",
"@aws-sdk/lib-storage": "3.554.0",
"@babel/eslint-parser": "7.24.1",
"@babel/eslint-plugin": "7.23.5",
"@cypress/request": "3.0.1",
"@mattermost/client": "10.2.0",
"@mattermost/types": "10.2.0",
"@testing-library/cypress": "10.0.1",
"@types/async": "3.2.24",
"@aws-sdk/client-s3": "3.864.0",
"@aws-sdk/lib-storage": "3.864.0",
"@babel/eslint-parser": "7.28.0",
"@babel/eslint-plugin": "7.27.1",
"@cypress/request": "3.0.9",
"@eslint/js": "9.34.0",
"@mattermost/client": "10.9.0",
"@mattermost/types": "10.9.0",
"@testing-library/cypress": "10.0.3",
"@types/async": "3.2.25",
"@types/authenticator": "1.1.4",
"@types/express": "4.17.21",
"@types/express": "5.0.3",
"@types/fs-extra": "11.0.4",
"@types/lodash": "4.17.0",
"@types/lodash": "4.17.20",
"@types/lodash.intersection": "4.4.9",
"@types/lodash.mapkeys": "4.6.9",
"@types/lodash.without": "4.4.9",
"@types/mime-types": "2.1.4",
"@types/mime-types": "3.0.1",
"@types/mochawesome": "6.2.4",
"@types/pdf-parse": "1.1.4",
"@types/pdf-parse": "1.1.5",
"@types/recursive-readdir": "2.2.4",
"@types/shelljs": "0.8.15",
"@types/uuid": "9.0.8",
"@typescript-eslint/eslint-plugin": "6.21.0",
"@typescript-eslint/parser": "6.21.0",
"async": "3.2.5",
"@types/shelljs": "0.8.17",
"@types/uuid": "10.0.0",
"@typescript-eslint/eslint-plugin": "8.39.1",
"@typescript-eslint/parser": "8.39.1",
"async": "3.2.6",
"authenticator": "1.1.5",
"axios": "1.6.8",
"axios-retry": "3.8.0",
"chai": "5.1.0",
"axios": "1.11.0",
"chai": "5.2.1",
"chalk": "4.1.2",
"client-oauth2": "github:larkox/js-client-oauth2#e24e2eb5dfcbbbb3a59d095e831dbe0012b0ac49",
"cross-env": "7.0.3",
"cypress": "13.13.2",
"cross-env": "10.0.0",
"cypress": "14.5.4",
"cypress-file-upload": "5.0.8",
"cypress-multi-reporters": "1.6.4",
"cypress-multi-reporters": "2.0.5",
"cypress-plugin-tab": "1.0.5",
"cypress-real-events": "1.14.0",
"cypress-wait-until": "3.0.1",
"dayjs": "1.11.10",
"cypress-wait-until": "3.0.2",
"dayjs": "1.11.13",
"deepmerge": "4.3.1",
"dotenv": "16.4.5",
"eslint": "8.56.0",
"eslint-import-resolver-webpack": "0.13.8",
"eslint-plugin-cypress": "2.15.2",
"dotenv": "17.2.1",
"eslint": "9.33.0",
"eslint-import-resolver-webpack": "0.13.10",
"eslint-plugin-cypress": "5.1.0",
"eslint-plugin-header": "3.1.1",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-import": "2.32.0",
"eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#5b0c972eacf19286e4c66221b39113bf8728a99e",
"eslint-plugin-no-only-tests": "3.1.0",
"eslint-plugin-react": "7.34.1",
"express": "4.19.2",
"eslint-plugin-no-only-tests": "3.3.0",
"eslint-plugin-react": "7.37.5",
"express": "5.1.0",
"extract-zip": "2.0.1",
"globals": "16.3.0",
"jiti": "2.5.1",
"knex": "3.1.0",
"localforage": "1.10.0",
"lodash.intersection": "4.4.0",
"lodash.mapkeys": "4.6.0",
"lodash.without": "4.4.0",
"lodash.xor": "4.5.0",
"mime": "4.0.1",
"mime-types": "2.1.35",
"mocha": "10.4.0",
"mime": "4.0.7",
"mime-types": "3.0.1",
"mocha": "11.7.1",
"mocha-junit-reporter": "2.2.1",
"mocha-multi-reporters": "1.5.1",
"mochawesome": "7.1.3",
"mochawesome-merge": "4.3.0",
"mochawesome-merge": "4.4.1",
"mochawesome-report-generator": "6.2.0",
"moment-timezone": "0.5.45",
"moment-timezone": "0.6.0",
"mysql": "2.18.1",
"path": "0.12.7",
"pdf-parse": "1.1.1",
"pg": "8.11.5",
"pg": "8.16.3",
"recursive-readdir": "2.2.3",
"shelljs": "0.8.5",
"timezones.json": "1.7.1",
"typescript": "5.4.5",
"uuid": "9.0.1",
"shelljs": "0.10.0",
"timezones.json": "1.7.2",
"typescript": "5.9.2",
"typescript-eslint": "8.41.0",
"uuid": "11.1.0",
"yargs": "17.7.2"
},
"overrides": {
@ -100,7 +103,7 @@
"test": "cross-env TZ=Etc/UTC cypress run",
"test:ci": "node run_tests.js",
"uniq-meta": "grep -r \"^// $META:\" cypress | grep -ow '@\\w*' | sort | uniq",
"check": "eslint --ext .js,.ts . --quiet --cache",
"fix": "eslint --ext .js,.ts . --quiet --fix --cache"
"check": "eslint .",
"fix": "eslint . --quiet --fix --cache"
}
}

View file

@ -1,7 +1,7 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
/* eslint-disable no-await-in-loop, no-console */
/* eslint-disable no-console */
/*
* This command, which is normally used in CI, runs Cypress test in full or partial
@ -24,8 +24,6 @@
* - will run all the specs available from the Automation dashboard
*/
const axios = require('axios');
const axiosRetry = require('axios-retry');
const chalk = require('chalk');
const cypress = require('cypress');
@ -39,10 +37,6 @@ const {writeJsonToFile} = require('./utils/report');
const {MOCHAWESOME_REPORT_DIR, RESULTS_DIR} = require('./utils/constants');
require('dotenv').config();
axiosRetry(axios, {
retries: 5,
retryDelay: axiosRetry.exponentialDelay,
});
const {
BRANCH,

View file

@ -1,7 +1,7 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
/* eslint-disable no-await-in-loop, no-console */
/* eslint-disable no-console */
/*
* This command, which normally use in CI, runs Cypress test in full or partial
@ -107,7 +107,7 @@ async function runTests() {
printMessage(sortedFiles, i, j + 1, count);
const testFile = sortedFiles[i];
var testFileAttempt = 1;
let testFileAttempt = 1;
if (testFile in testPasses === false) {
testPasses[testFile] = {attempt: 1};
} else {
@ -154,8 +154,8 @@ async function runTests() {
},
});
for (var testCase of result.runs[0].tests) {
var testCaseTitle = testCase.title.join(' - ');
for (const testCase of result.runs[0].tests) {
const testCaseTitle = testCase.title.join(' - ');
if (testCaseTitle in testPasses[testFile] === false) {
testPasses[testFile][testCaseTitle] = 0;
}

View file

@ -4,7 +4,7 @@
/*global chrome*/
var HEADERS_TO_STRIP_LOWERCASE = [
const HEADERS_TO_STRIP_LOWERCASE = [
'content-security-policy',
'x-frame-options',
];

View file

@ -15,7 +15,7 @@ let previousEmoji = 'grinning';
function verifyArrowKeysEmojiNavigation(arrowKey, count) {
for (let index = 0; index < count; index++) {
cy.get('body').type(arrowKey);
// eslint-disable-next-line no-loop-func
cy.get('.emoji-picker__preview-name').invoke('text').then((selectedEmoji) => {
expect(selectedEmoji).not.equal(previousEmoji);
previousEmoji = selectedEmoji;

View file

@ -15,6 +15,7 @@
// Group: @channels @enterprise @ldap @saml @keycloak
import {LdapUser} from 'tests/support/ldap_server_commands';
import {getAdminAccount} from '../../../support/env';
import {getRandomId} from '../../../utils';
import {getKeycloakServerSettings} from '../../../utils/config';

View file

@ -15,6 +15,7 @@
// Group: @channels @enterprise @ldap @saml @keycloak
import {LdapUser} from 'tests/support/ldap_server_commands';
import {getAdminAccount} from '../../../support/env';
import {getRandomId} from '../../../utils';
import {getKeycloakServerSettings} from '../../../utils/config';

View file

@ -11,7 +11,6 @@
// Group: @channels @system_console @authentication @mfa
import * as TIMEOUTS from '../../../fixtures/timeouts';
import {getRandomId} from '../../../utils';
describe('Authentication', () => {

View file

@ -195,6 +195,9 @@ describe('Authentication', () => {
TeamSettings: {
EnableUserCreation: false,
},
LdapSettings: {
Enable: false,
},
});
cy.apiLogout();
@ -203,22 +206,17 @@ describe('Authentication', () => {
cy.visit('/login');
// * Assert that create account button is visible
cy.findByText('Don\'t have an account?', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible');
cy.findByText('Don\'t have an account?', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').click();
// * Verify redirection to access problem page since account creation is disabled
cy.url().should('include', '/access_problem');
cy.findByText('Contact your workspace admin');
// # Go to sign up with email page
cy.visit('/signup_user_complete');
cy.get('#input_email', {timeout: TIMEOUTS.ONE_MIN}).type(`test-${getRandomId()}@example.com`);
cy.get('#input_password-input').type('Test123456!');
cy.get('#input_name').clear().type(`Test${getRandomId()}`);
cy.findByText('Create Account').click();
// * Make sure account was not created successfully and we are on the team joining page
cy.get('.AlertBanner__title').scrollIntoView().should('be.visible');
cy.findByText('User sign-up with email is disabled.').should('be.visible').and('exist');
// * No sign up methods enabled
cy.findByText('This server doesnt have any sign-in methods enabled').should('be.visible').and('exist');
});
it('MM-T1754 - Restrict Domains - Account creation link on signin page', () => {

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
describe('Bot accounts ownership and API', () => {

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
describe('Bot accounts ownership and API', () => {

View file

@ -11,6 +11,7 @@
// Group: @channels @not_cloud @bot_accounts
import {Team} from '@mattermost/types/teams';
import * as TIMEOUTS from '../../../fixtures/timeouts';
describe('Bot accounts ownership and API', () => {

View file

@ -12,6 +12,7 @@
import {Bot} from '@mattermost/types/bots';
import {Team} from '@mattermost/types/teams';
import {createBotPatch} from '../../../support/api/bots';
describe('Bot channel intro and avatar', () => {

View file

@ -11,6 +11,7 @@
// Group: @channels @bot_accounts
import {Team} from '@mattermost/types/teams';
import * as MESSAGES from '../../../fixtures/messages';
import {getRandomId} from '../../../utils';

View file

@ -11,6 +11,7 @@
// Group: @channels @bot_accounts
import {Team} from '@mattermost/types/teams';
import * as TIMEOUTS from '../../../fixtures/timeouts';
import {getRandomId} from '../../../utils';

View file

@ -2,6 +2,7 @@
// See LICENSE.txt for license information.
import {Team} from '@mattermost/types/teams';
import {getRandomId} from '../../../utils';
import * as TIMEOUTS from '../../../fixtures/timeouts';

View file

@ -14,6 +14,7 @@ import {Bot} from '@mattermost/types/bots';
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {createBotPatch} from '../../../support/api/bots';
import {generateRandomUser} from '../../../support/api/user';
import * as TIMEOUTS from '../../../fixtures/timeouts';

View file

@ -13,6 +13,7 @@ import {Bot} from '@mattermost/types/bots';
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {createBotPatch} from '../../../support/api/bots';
import {generateRandomUser} from '../../../support/api/user';

View file

@ -11,9 +11,10 @@
// Group: @channels @bot_accounts
import {Team} from '@mattermost/types/teams';
import {Channel} from '@mattermost/types/channels';
import {createBotPatch} from '../../../support/api/bots';
import {createChannelPatch} from '../../../support/api/channel';
import {Channel} from '@mattermost/types/channels';
describe('Managing bots in Teams and Channels', () => {
let team: Team;

View file

@ -11,6 +11,7 @@
// Group: @channels @bot_accounts @plugin @not_cloud
import {Team} from '@mattermost/types/teams';
import * as TIMEOUTS from '../../../fixtures/timeouts';
import {matterpollPlugin} from '../../../utils/plugins';

View file

@ -11,6 +11,7 @@
// Group: @channels @bot_accounts
import {Team} from '@mattermost/types/teams';
import * as TIMEOUTS from '../../../fixtures/timeouts';
import {getRandomId} from '../../../utils';

View file

@ -11,6 +11,7 @@
// Group: @channels @bot_accounts
import {Team} from '@mattermost/types/teams';
import {createBotPatch} from '../../../support/api/bots';
describe('Managing bots in Teams and Channels', () => {

View file

@ -14,6 +14,7 @@ import {Bot} from '@mattermost/types/bots';
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {createBotPatch} from '../../../support/api/bots';
import {generateRandomUser} from '../../../support/api/user';

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {createBotPatch} from '../../../support/api/bots';
import * as TIMEOUTS from '../../../fixtures/timeouts';

View file

@ -12,6 +12,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {getRandomId} from '../../../utils';
describe('Leave an archived channel', () => {

View file

@ -13,6 +13,7 @@
import {Channel, ServerChannel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {getAdminAccount} from '../../../support/env';
import {getRandomId} from '../../../utils';

View file

@ -13,8 +13,8 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
import * as TIMEOUTS from '../../../fixtures/timeouts';
import {createPrivateChannel} from '../enterprise/elasticsearch_autocomplete/helpers';
const channelType = {

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {getRandomId} from '../../../utils';
import * as TIMEOUTS from '../../../fixtures/timeouts';
@ -22,7 +23,7 @@ describe('Channel Bookmarks', () => {
let testTeam: Team;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
let user1: UserProfile;
let admin: UserProfile;
let publicChannel: Channel;

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {stubClipboard} from '../../../utils';
describe('Channel Info RHS', () => {

View file

@ -144,7 +144,7 @@ describe('Channel members RHS', () => {
cy.uiCloseRHS();
for (let i = 0; i < 20; i++) {
// eslint-disable-next-line no-loop-func
cy.apiCreateUser().then(({user: newUser}) => {
cy.apiAddUserToTeam(testTeam.id, newUser.id).then(() => {
cy.apiAddUserToChannel(channel.id, newUser.id);
@ -243,7 +243,7 @@ describe('Channel members RHS', () => {
// the user line is going to be removed and re-added in another category,
// cypress struggle to realize this so we have to wait a few ms
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(500);
// * Can see the user with his new admin role, and change it back
@ -291,7 +291,7 @@ describe('Channel members RHS', () => {
cy.apiCreateChannel(testTeam.id, 'big-search-test-channel', 'Big Search Test Channel', 'O').then(({channel}) => {
// # create 100 random users
for (let i = 0; i < 100; i++) {
// eslint-disable-next-line no-loop-func
cy.apiCreateUser().then(({user: newUser}) => {
cy.apiAddUserToTeam(testTeam.id, newUser.id).then(() => {
cy.apiAddUserToChannel(channel.id, newUser.id);

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
describe('Channel', () => {

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
const timestamp = Date.now();

View file

@ -11,6 +11,7 @@
// Group: @channels @channel @channel_settings
import {Team} from '@mattermost/types/teams';
import {
beMuted,
beUnmuted,

View file

@ -4,6 +4,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {ChainableT} from '../../../types';
// ***************************************************************

View file

@ -4,6 +4,7 @@
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {Channel} from '@mattermost/types/channels';
import {getAdminAccount} from '../../../support/env';
// ***************************************************************

View file

@ -129,7 +129,6 @@ describe('Group Message Conversion To Private Channel', () => {
cy.apiCreateTeam('gmconversionteam3', 'GM Conversion Team 3').then(({team}) => {
testTeam3 = team;
console.log(testTeam3);
const teamMembers = [{
team_id: testTeam3.id,
@ -156,8 +155,6 @@ describe('Group Message Conversion To Private Channel', () => {
cy.apiCreateGroupChannel([testUser1.id, testUser2.id, testUser3.id]).then(({channel}) => {
gm = channel;
console.log(gm.name);
// Open the GM
cy.visit(`/${testTeam1.name}/messages/${gm.name}`);

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
describe('Leave channel', () => {
@ -69,7 +70,7 @@ describe('Leave channel', () => {
// # Archive the channel
cy.uiLeaveChannel();
cy.wait(TIMEOUTS.TWO_SEC); // eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.TWO_SEC);
// * RHS should not be visible
cy.get('#rhsContainer').should('not.exist');
@ -107,7 +108,7 @@ describe('Leave channel', () => {
// # Archive the channel
cy.uiLeaveChannel();
cy.wait(TIMEOUTS.TWO_SEC); // eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.TWO_SEC);
// * RHS should not be visible
cy.get('#rhsContainer').should('not.exist');

View file

@ -10,6 +10,7 @@
// Group: @channels @channel
import {UserProfile} from '@mattermost/types/users';
import {getAdminAccount} from '../../../support/env';
const demoteToChannelMember = (user, channelId, admin) => {

View file

@ -12,6 +12,7 @@
// node run_tests.js --group='@channel_settings'
import {ChannelType} from '@mattermost/types/channels';
import {getRandomId} from '../../../utils';
import * as TIMEOUTS from '../../../fixtures/timeouts';

View file

@ -105,7 +105,7 @@ describe('Channel sidebar', () => {
// Wait for state to settle
// This is necessary since we have no observable way of finding out when the state actually settles so that it persists on reload
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.FIVE_SEC);
// # Reload the page and wait
@ -122,7 +122,7 @@ describe('Channel sidebar', () => {
cy.get('.SidebarChannelGroupHeader:contains(CHANNELS) i').should('not.have.class', 'icon-rotate-minus-90');
// Wait for state to settle
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.FIVE_SEC);
// # Reload the page and wait

View file

@ -16,7 +16,6 @@ import {
beUnread,
} from '../../../support/assertions';
import {getAdminAccount} from '../../../support/env';
import {getRandomId, stubClipboard} from '../../../utils';
describe('Sidebar channel menu', () => {

View file

@ -16,7 +16,6 @@ import {
beUnread,
} from '../../../support/assertions';
import {getAdminAccount} from '../../../support/env';
import * as TIMEOUTS from '../../../fixtures/timeouts';
import {getRandomId} from '../../../utils';

View file

@ -11,6 +11,7 @@
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {PostMessageResp} from '../../../support/task_commands';
import {spyNotificationAs} from '../../../support/notification';

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as MESSAGES from '../../../fixtures/messages';
import {matterpollPlugin} from '../../../utils/plugins';
import {interceptFileUpload} from '../files_and_attachments/helpers';

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as MESSAGES from '../../../fixtures/messages';
import {waitUntilUploadComplete, interceptFileUpload} from '../files_and_attachments/helpers';

View file

@ -12,6 +12,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
import {isMac} from '../../../utils';
import {ChainableT} from '../../../types';

View file

@ -4,6 +4,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
// ***************************************************************

View file

@ -14,6 +14,7 @@ import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {PostMessageResp} from 'tests/support/task_commands';
import * as TIMEOUTS from '../../../fixtures/timeouts';
describe('Collapsed Reply Threads', () => {

View file

@ -12,6 +12,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../fixtures/timeouts';
describe('Collapsed Reply Threads', () => {

View file

@ -32,7 +32,7 @@ describe('Leave Channel Command', () => {
// # Post /leave command in center channel
cy.postMessage('/leave ');
cy.wait(TIMEOUTS.TWO_SEC); // eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.TWO_SEC);
// * Assert that user is redirected to townsquare
cy.url().should('include', '/channels/town-square');

View file

@ -12,6 +12,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
describe('Verify Accessibility Support in different input fields', () => {
@ -71,7 +72,7 @@ describe('Verify Accessibility Support in different input fields', () => {
it('MM-T1457 Verify Accessibility Support in Search Autocomplete', () => {
// # Adding at least five other users in the channel
for (let i = 0; i < 5; i++) {
cy.apiCreateUser().then(({user}) => { // eslint-disable-line
cy.apiCreateUser().then(({user}) => {
cy.apiAddUserToTeam(testTeam.id, user.id).then(() => {
cy.apiAddUserToChannel(testChannel.id, user.id);
});

View file

@ -12,6 +12,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
describe('Verify Accessibility Support in Modals & Dialogs', () => {

View file

@ -13,6 +13,7 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
describe('Verify Accessibility Support in Modals & Dialogs', () => {
@ -140,7 +141,7 @@ describe('Verify Accessibility Support in Modals & Dialogs', () => {
it('MM-T1468 Accessibility Support in Add people to Channel Dialog screen', () => {
// # Add atleast 5 users
for (let i = 0; i < 5; i++) {
cy.apiCreateUser().then(({user}) => { // eslint-disable-line
cy.apiCreateUser().then(({user}) => {
cy.apiAddUserToTeam(testTeam.id, user.id);
});
}

View file

@ -11,8 +11,8 @@
// Group: @channels @enterprise @system_console @authentication
import {Team} from '@mattermost/types/teams';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {getRandomId} from '../../../../utils';
describe('Authentication', () => {

View file

@ -11,6 +11,7 @@
import {UserProfile} from '@mattermost/types/users';
import * as authenticator from 'authenticator';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
describe('Authentication', () => {

View file

@ -12,6 +12,7 @@
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {getAdminAccount} from '../../../../support/env';
import {

View file

@ -11,6 +11,7 @@
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
import {Channel} from '@mattermost/types/channels';
import {
enableElasticSearch,
searchAndVerifyChannel,

View file

@ -3,6 +3,7 @@
import {Channel} from '@mattermost/types/channels';
import {ChainableT} from 'tests/types';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {getAdminAccount} from '../../../../support/env';
import {SimpleUser} from '../../autocomplete/helpers';

View file

@ -12,6 +12,7 @@
import {Channel} from '@mattermost/types/channels';
import {UserProfile} from '@mattermost/types/users';
import {getRandomId} from '../../../../utils';
import {

View file

@ -12,6 +12,7 @@
import {Channel} from '@mattermost/types/channels';
import {UserProfile} from '@mattermost/types/users';
import {getRandomId} from '../../../../utils';
import {

View file

@ -13,6 +13,7 @@
import {getRandomLetter} from '../../../../utils';
import {doTestQuickChannelSwitcher} from '../../autocomplete/common_test';
import {createSearchData, SimpleUser} from '../../autocomplete/helpers';
import {enableElasticSearch} from './helpers';
describe('Autocomplete with Elasticsearch - Users', () => {

View file

@ -13,6 +13,7 @@
import {getRandomLetter} from '../../../../utils';
import {doTestPostextbox} from '../../autocomplete/common_test';
import {createSearchData, SimpleUser} from '../../autocomplete/helpers';
import {enableElasticSearch} from './helpers';
describe('Autocomplete with Elasticsearch - Users', () => {

View file

@ -11,9 +11,11 @@
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
import {Team} from '@mattermost/types/teams';
import {getRandomLetter} from '../../../../utils';
import {doTestDMChannelSidebar, doTestUserChannelSection} from '../../autocomplete/common_test';
import {createSearchData, SimpleUser} from '../../autocomplete/helpers';
import {enableElasticSearch} from './helpers';
describe('Autocomplete with Elasticsearch - Users', () => {

View file

@ -10,6 +10,7 @@
// Group: @channels @enterprise @not_cloud @extend_session
import {UserProfile} from '@mattermost/types/users';
import {verifyExtendedSession, verifyNotExtendedSession} from './helpers';
describe('Extended Session Length', () => {

View file

@ -10,6 +10,7 @@
// Group: @channels @enterprise @not_cloud @extend_session @ldap
import {UserProfile} from '@mattermost/types/users';
import ldapUsers from '../../../../../fixtures/ldap_users.json';
import {verifyExtendedSession, verifyNotExtendedSession} from './helpers';

View file

@ -15,10 +15,11 @@
// Group: @channels @enterprise @not_cloud @extend_session @ldap @saml @keycloak
import {UserProfile} from '@mattermost/types/users';
import {LdapUser} from 'tests/support/ldap_server_commands';
import {getKeycloakServerSettings} from '../../../../../utils/config';
import {verifyExtendedSession, verifyNotExtendedSession} from './helpers';
import {LdapUser} from 'tests/support/ldap_server_commands';
describe('Extended Session Length', () => {
const sessionLengthInDays = 1;

View file

@ -10,17 +10,17 @@
// Group: @channels @enterprise @system_console @group_mentions
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {Group} from '@mattermost/types/groups';
import ldapUsers from '../../../../fixtures/ldap_users.json';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {
disablePermission,
enablePermission,
} from '../system_console/channel_moderation/helpers';
import {enableGroupMention} from './helpers';
import {UserProfile} from '@mattermost/types/users';
import {Group} from '@mattermost/types/groups';
describe('Group Mentions', () => {
let groupID: string;
@ -277,7 +277,7 @@ describe('Group Mentions', () => {
// # Create a new channel as a sysadmin
cy.apiCreateChannel(testTeam.id, 'group-mention', 'Group Mentions').then(({channel}) => {
cy.apiCreateUser().then(({user}) => { // eslint-disable-line
cy.apiCreateUser().then(({user}) => {
// # Add user to the team and channel
cy.apiAddUserToTeam(testTeam.id, user.id).then(() => {
cy.apiAddUserToChannel(channel.id, user.id);

View file

@ -10,12 +10,13 @@
// Group: @channels @enterprise @system_console @group_mentions
import {UserProfile} from '@mattermost/types/users';
import {Team} from '@mattermost/types/teams';
import {Group} from '@mattermost/types/groups';
import ldapUsers from '../../../../fixtures/ldap_users.json';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {enableGroupMention} from './helpers';
import {Team} from '@mattermost/types/teams';
import {Group} from '@mattermost/types/groups';
describe('Group Mentions', () => {
let groupID1: string;

View file

@ -9,9 +9,12 @@
// Group: @channels @enterprise @system_console @group_mentions
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {Group} from '@mattermost/types/groups';
import ldapUsers from '../../../../fixtures/ldap_users.json';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {
disablePermission,
enablePermission,
@ -21,9 +24,6 @@ import {
import {checkboxesTitleToIdMap} from '../system_console/channel_moderation/constants';
import {enableGroupMention} from './helpers';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {Group} from '@mattermost/types/groups';
describe('Group Mentions', () => {
let groupID: string;
@ -134,7 +134,7 @@ describe('Group Mentions', () => {
// # Create a new team and channel as a sysadmin
cy.apiCreateTeam('team', 'Test NoMember').then(({team}) => {
cy.apiCreateChannel(team.id, 'group-mention', 'Group Mentions').then(({channel}) => {
cy.apiCreateUser().then(({user}) => { // eslint-disable-line
cy.apiCreateUser().then(({user}) => {
// # Add user to the team and channel
cy.apiAddUserToTeam(team.id, user.id).then(() => {
cy.apiAddUserToChannel(channel.id, user.id);
@ -178,7 +178,7 @@ describe('Group Mentions', () => {
// # Create a new channel as a sysadmin
cy.apiCreateChannel(testTeam.id, 'group-mention', 'Group Mentions').then(({channel}) => {
cy.apiCreateUser().then(({user}) => { // eslint-disable-line
cy.apiCreateUser().then(({user}) => {
// # Add user to the team and channel
cy.apiAddUserToTeam(testTeam.id, user.id).then(() => {
cy.apiAddUserToChannel(channel.id, user.id);

View file

@ -14,6 +14,7 @@
*/
import authenticator from 'authenticator';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {
@ -22,7 +23,6 @@ import {
reUrl,
verifyEmailBody,
} from '../../../../utils';
import {UserProfile} from '@mattermost/types/users';
describe('Guest Accounts', () => {
let sysadmin: Cypress.UserProfile;

View file

@ -14,6 +14,7 @@ import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {AdminConfig} from '@mattermost/types/config';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
function setLDAPTestSettings(config: AdminConfig) {
@ -84,7 +85,7 @@ context('ldap', () => {
// # Link 2 groups to testChannel
cy.visit(`/admin_console/user_management/channels/${testChannel.id}`);
cy.get('.admin-console__header', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').and('have.text', 'Channel Configuration');
cy.wait(TIMEOUTS.TWO_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.TWO_SEC);
// # Link first group
cy.get('#addGroupsToChannelToggle').click();
@ -128,7 +129,7 @@ context('ldap', () => {
// # Add board-one to test team
cy.visit(`/admin_console/user_management/teams/${testTeam.id}`);
cy.get('.admin-console__header', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').and('have.text', 'Team Configuration');
cy.wait(TIMEOUTS.TWO_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.TWO_SEC);
// # Turn on sync group members
cy.findByTestId('syncGroupSwitch').
@ -170,7 +171,7 @@ context('ldap', () => {
// # Go to testTeam config page
cy.visit(`/admin_console/user_management/teams/${testTeam.id}`);
cy.get('.admin-console__header', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').and('have.text', 'Team Configuration');
cy.wait(TIMEOUTS.TWO_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.TWO_SEC);
// # Make the team so anyone can join it
cy.findByTestId('allowAllToggleSwitch').scrollIntoView().click();
@ -208,7 +209,7 @@ context('ldap', () => {
// # Add board-one to test team
cy.visit(`/admin_console/user_management/channels/${testChannel.id}`);
cy.get('.admin-console__header', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').and('have.text', 'Channel Configuration');
cy.wait(TIMEOUTS.TWO_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.TWO_SEC);
// Make it private and then cancel
cy.findByTestId('allow-all-toggle').click();
@ -264,7 +265,7 @@ context('ldap', () => {
// Reload
cy.visit(`/admin_console/user_management/channels/${privateChannel.id}`);
cy.get('.admin-console__header', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').and('have.text', 'Channel Configuration');
cy.wait(TIMEOUTS.THREE_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.THREE_SEC);
// Make it public and save
// * Ensure it still showing the channel as private
@ -296,7 +297,7 @@ context('ldap', () => {
cy.get('.DataGrid_searchBar').within(() => {
cy.findByPlaceholderText('Search').should('be.visible').type('Town Square');
});
cy.wait(TIMEOUTS.FIVE_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.FIVE_SEC);
cy.findAllByTestId('town-squareedit').then((elements) => {
elements[0].click();

View file

@ -10,11 +10,12 @@
// Stage: @prod
// Group: @channels @enterprise @ldap
import {UserProfile} from '@mattermost/types/users';
import ldapUsers from '../../../../fixtures/ldap_users.json';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {getAdminAccount} from '../../../../support/env';
import {getRandomId} from '../../../../utils';
import {UserProfile} from '@mattermost/types/users';
// assumes that E20 license is uploaded
// for setup with AWS: Follow the instructions mentioned in the mattermost/platform-private/config/ldap-test-setup.txt file

View file

@ -10,6 +10,7 @@
// Group: @channels @enterprise @ldap
import {UserProfile} from '@mattermost/types/users';
import ldapUsers from '../../../../fixtures/ldap_users.json';
import {getRandomId} from '../../../../utils';

View file

@ -93,7 +93,7 @@ describe('LDAP Group Sync', () => {
});
// # Wait until the groups retrieved and show up
cy.wait(TIMEOUTS.HALF_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.HALF_SEC);
// # Add the first team in the group list then save
cy.get('#add_team_or_channel').click();
@ -108,7 +108,7 @@ describe('LDAP Group Sync', () => {
cy.uiGetButton('Add').click();
// # Wait until the groups retrieved and show up
cy.wait(TIMEOUTS.HALF_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.HALF_SEC);
cy.get('#team_and_channel_membership_table').then((el) => {
// * Ensure that the text in the roles column is Member as default text for each row

View file

@ -11,7 +11,6 @@
import {getRandomId} from '../../../../utils';
import {checkboxesTitleToIdMap} from '../system_console/channel_moderation/constants';
import {enablePermission, goToSystemScheme, saveConfigForScheme} from '../system_console/channel_moderation/helpers';
describe('Integrations page', () => {

View file

@ -12,6 +12,7 @@
// Skip: @headless @electron @firefox // run on Chrome (headed) only
import {UserCollection} from 'tests/support/okta_commands';
import users from '../../../../fixtures/saml_users.json';
//Manual Setup required: Follow the instructions mentioned in the mattermost/platform-private/config/saml-okta-setup.txt file

View file

@ -12,6 +12,7 @@
// Skip: @headless @electron @firefox // run on Chrome (headed) only
import {UserCollection} from 'tests/support/okta_commands';
import users from '../../../../fixtures/saml_users.json';
//Manual Setup required: Follow the instructions mentioned in the mattermost/platform-private/config/saml-okta-setup.txt file

View file

@ -21,6 +21,7 @@
// * e.g. see (https://github.com/mattermost/mattermost-server/pull/16778/files)
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../../fixtures/timeouts';
function verifyPurchaseModal() {
@ -183,7 +184,7 @@ describe('Self hosted Purchase', () => {
// The waits for these fetches is usually enough. Add a little wait
// for all the selectors to be updated and rerenders to happen
// so that we do not accidentally hit the air-gapped modal
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(50);
// # Click the upgrade button to open the modal
@ -258,7 +259,7 @@ describe('Self hosted Purchase', () => {
cy.contains(todayPadded);
cy.contains('Self-Hosted Professional');
// eslint-disable-next-line new-cap
const dollarUSLocale = Intl.NumberFormat('en-US', {style: 'currency', currency: 'USD', minimumFractionDigits: 2});
// * Verify payment matches what the user was told they would pay
@ -327,7 +328,7 @@ describe('Self hosted Purchase', () => {
// The waits for these fetches is usually enough. Add a little wait
// for all the selectors to be updated and rerenders to happen
// so that we do not accidentally hit the air-gapped modal
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(50);
// # Click the upgrade button to open the modal
@ -374,7 +375,7 @@ describe('Self hosted Purchase', () => {
// The waits for these fetches is usually enough. Add a little wait
// for all the selectors to be updated and rerenders to happen
// so that we do not accidentally hit the air-gapped modal
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(50);
// # Click the upgrade button to open the modal
@ -431,7 +432,7 @@ describe('Self hosted Purchase', () => {
// The waits for these fetches is usually enough. Add a little wait
// for all the selectors to be updated and rerenders to happen
// so that we do not accidentally hit the air-gapped modal
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(50);
// # Click the upgrade button to open the modal
@ -461,7 +462,7 @@ describe('Self hosted Purchase', () => {
cy.get('#UpgradeButton').should('exist').click();
cy.wait('@airGappedCheck');
cy.wait('@products');
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(50);
// # Click the upgrade button to open the modal

View file

@ -12,7 +12,6 @@
import * as TIMEOUTS from '../../../../../fixtures/timeouts';
import {getAdminAccount} from '../../../../../support/env';
import {promoteToChannelOrTeamAdmin} from '../channel_moderation/helpers.ts';
describe('System console', () => {

View file

@ -13,8 +13,8 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {checkboxesTitleToIdMap} from './constants';
import {checkboxesTitleToIdMap} from './constants';
import {
disablePermission,
enablePermission,

View file

@ -13,8 +13,8 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import {checkboxesTitleToIdMap} from './constants';
import {checkboxesTitleToIdMap} from './constants';
import {
disablePermission,
enablePermission,

View file

@ -2,12 +2,13 @@
// See LICENSE.txt for license information.
import {Channel} from '@mattermost/types/channels';
import {UserProfile} from '@mattermost/types/users';
import {Team} from '@mattermost/types/teams';
import * as TIMEOUTS from '../../../../../fixtures/timeouts';
import {getAdminAccount} from '../../../../../support/env';
import {checkBoxes} from './constants';
import {UserProfile} from '@mattermost/types/users';
import {Team} from '@mattermost/types/teams';
// # Visits the channel configuration for a channel with channelName
export const visitChannelConfigPage = (channel: Channel) => {

View file

@ -12,7 +12,6 @@
import {getRandomId} from '../../../../../utils';
import {checkboxesTitleToIdMap} from './constants';
import {
deleteOrEditTeamScheme,
demoteToChannelOrTeamMember,

View file

@ -13,11 +13,11 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../../../fixtures/timeouts';
import {getRandomId} from '../../../../../utils';
import {checkboxesTitleToIdMap} from './constants';
import {
deleteOrEditTeamScheme,
disablePermission,

View file

@ -12,12 +12,12 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../../../fixtures/timeouts';
import {getRandomId} from '../../../../../utils';
import {getAdminAccount} from '../../../../../support/env';
import {checkboxesTitleToIdMap} from './constants';
import {
deleteOrEditTeamScheme,
disablePermission,

View file

@ -13,10 +13,10 @@
import {Channel} from '@mattermost/types/channels';
import {Team} from '@mattermost/types/teams';
import {UserProfile} from '@mattermost/types/users';
import * as TIMEOUTS from '../../../../../fixtures/timeouts';
import {checkBoxes} from './constants';
import {
disableAllChannelModeratedPermissions,
enableAllChannelModeratedPermissions,

View file

@ -52,7 +52,8 @@ export function editLastPost(message) {
cy.get('#edit_textbox').should('be.visible');
// # Update the post message and type ENTER
cy.get('#edit_textbox').invoke('val', '').type(message).type('{enter}').wait(TIMEOUTS.HALF_SEC);
cy.get('#edit_textbox').invoke('val', '').type(message);
cy.get('#create_post').findByText('Save').should('be.visible').click();
// * Edit modal should not be visible
cy.get('#edit_textbox').should('not.exist');

View file

@ -63,7 +63,7 @@ describe('Team Scheme Guest Permissions Test', () => {
cy.get('#scheme-name').type(`TestScheme-${randomId}{enter}`);
// // # Wait until the groups retrieved and show up
cy.wait(TIMEOUTS.HALF_SEC); //eslint-disable-line cypress/no-unnecessary-waiting
cy.wait(TIMEOUTS.HALF_SEC);
// # Check all the boxes currently unchecked
enableAllGuestPermissions();

View file

@ -14,7 +14,6 @@
*/
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {
enablePermission,
goToSystemScheme,

View file

@ -10,7 +10,6 @@
// Group: @channels @outgoing_webhook
import * as TIMEOUTS from '../../../../fixtures/timeouts';
import {
enableUsernameAndIconOverrideInt,
enableUsernameAndIconOverride,

View file

@ -9,9 +9,10 @@
// Group: @channels @mark_as_unread
import {markAsUnreadFromPost, switchToChannel} from './helpers';
import * as TIMEOUTS from '../../../fixtures/timeouts';
import {markAsUnreadFromPost, switchToChannel} from './helpers';
describe('Verify unread toast appears after repeated manual marking post as unread', () => {
let firstPost;
let secondPost;

View file

@ -16,7 +16,7 @@ describe('Group Message', () => {
let testTeam;
let testUser;
let townsquareLink;
var users = [];
const users = [];
const groupUsersCount = 3;

View file

@ -55,7 +55,7 @@ describe('Messaging', () => {
// * Verify the header with the count of the file exists
cy.uiGetHeaderFilePreviewModal().contains('1 of 4');
for (var index = 2; index <= 4; index++) {
for (let index = 2; index <= 4; index++) {
// # click on right arrow to preview next attached image
cy.get('#previewArrowRight').should('be.visible').click();

Some files were not shown because too many files have changed in this diff Show more