mirror of
https://github.com/mattermost/mattermost.git
synced 2026-09-01 15:00:08 +08:00
MM-69003 Mostly share ESLint config between web app and E2E tests (#36767)
* Switch Cypress to use shared ESLint config * Run --fix in Cypress * Manually fix remaining lint issues in Cypress * Switch Playwright to use shared ESLint config * Run --fix in Playwright * Manually fix remaining lint issues in Playwright * Install and cache web app deps during Cypress CI builds This also caches the types and client package. That isn't needed currently since it uses prepackaged versions of those, but I imagine we might change that at some point. * Run e2e-tests-check when ESLint plugin is updated * Change E2E test GHA caching to cache all of web app node_modules * Fix mismatch between cache save and restore * Try bumping cache keys * Copy step to install dependencies to server.run_cypress.sh I don't know how this must've worked before, but if this fixes the issue, it seems like neither Cypress nor Playwright actually use the cached depenendencies. * Try disabling caching entirely for Cypress tests * Try bypassing makefile? * Try also manually building dependencies in run_specs.sh I don't know why this appears to duplicate run_cypress.sh and run_playwright.sh, both of which are called run_test.sh which might not be used any more as best I can tell. * Try installing the web app dependencies in yet another place * Disable the extra steps in server.prepare.sh specifically for Cypress * Revert changes to update cache key and disable web app depenedency cache on Cypress builds
This commit is contained in:
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- "e2e-tests/**"
|
||||
- "webapp/platform/client/**"
|
||||
- "webapp/platform/eslint-plugin/**"
|
||||
- "webapp/platform/types/**"
|
||||
- ".github/workflows/e2e-*.yml"
|
||||
|
||||
@@ -38,6 +39,11 @@ jobs:
|
||||
# failures in npm's cacache writer.
|
||||
run: npm cache verify
|
||||
|
||||
# Set up web app subpackages and eslint plugin
|
||||
- name: ci/get-webapp-node-modules
|
||||
working-directory: webapp
|
||||
run: make node_modules
|
||||
|
||||
# Cypress check
|
||||
- name: ci/cypress/npm-install
|
||||
working-directory: e2e-tests/cypress
|
||||
@@ -47,9 +53,6 @@ jobs:
|
||||
run: npm run check
|
||||
|
||||
# Playwright check
|
||||
- name: ci/get-webapp-node-modules
|
||||
working-directory: webapp
|
||||
run: make node_modules
|
||||
- name: ci/playwright/npm-install
|
||||
working-directory: e2e-tests/playwright
|
||||
run: npm ci
|
||||
|
||||
@@ -216,6 +216,25 @@ jobs:
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
- name: ci/cache-platform-pkgs
|
||||
# `webapp/node_modules/@mattermost/{client,types}` are the workspace
|
||||
# symlinks Node walks up to find when platform/client requires
|
||||
# @mattermost/types. Without them, module resolution fails inside
|
||||
# the slim slice.
|
||||
id: cache-platform-pkgs
|
||||
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||
with:
|
||||
path: |
|
||||
webapp/**/node_modules
|
||||
webapp/platform/client/lib
|
||||
webapp/platform/types/lib
|
||||
key: e2e-platform-pkgs-${{ runner.os }}-${{ hashFiles('webapp/package-lock.json', 'webapp/platform/client/src/**', 'webapp/platform/client/tsconfig*.json', 'webapp/platform/types/src/**', 'webapp/platform/types/tsconfig*.json') }}
|
||||
- name: ci/build-platform-pkgs
|
||||
# Full webapp install is needed for tsc + workspace linking; the
|
||||
# postinstall builds platform/{client,types}/lib. We only cache those.
|
||||
if: steps.cache-platform-pkgs.outputs.cache-hit != 'true'
|
||||
working-directory: webapp
|
||||
run: make node_modules
|
||||
- name: ci/cache-cypress-deps
|
||||
# node_modules + the cypress binary (downloaded to ~/.cache/Cypress by
|
||||
# cypress's postinstall, not into node_modules). Both must be cached;
|
||||
@@ -317,6 +336,17 @@ jobs:
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
- name: ci/restore-platform-pkgs
|
||||
# Built lib/ for @mattermost/client and @mattermost/types, plus the
|
||||
# webapp workspace symlinks under webapp/node_modules/@mattermost/.
|
||||
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||
with:
|
||||
path: |
|
||||
webapp/**/node_modules
|
||||
webapp/platform/client/lib
|
||||
webapp/platform/types/lib
|
||||
key: e2e-platform-pkgs-${{ runner.os }}-${{ hashFiles('webapp/package-lock.json', 'webapp/platform/client/src/**', 'webapp/platform/client/tsconfig*.json', 'webapp/platform/types/src/**', 'webapp/platform/types/tsconfig*.json') }}
|
||||
fail-on-cache-miss: true
|
||||
- name: ci/restore-cypress-deps
|
||||
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||
with:
|
||||
|
||||
@@ -222,6 +222,14 @@ jobs:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: npm
|
||||
cache-dependency-path: "e2e-tests/cypress/package-lock.json"
|
||||
- name: ci/npm-cache-verify
|
||||
# Heal any partial/dangling entries left in the restored ~/.npm cache
|
||||
# before running `npm ci`. Avoids the intermittent EEXIST/ENOENT
|
||||
# failures in npm's cacache writer.
|
||||
run: npm cache verify
|
||||
- name: ci/get-webapp-node-modules
|
||||
working-directory: webapp
|
||||
run: make node_modules
|
||||
- name: ci/run-tests
|
||||
run: |
|
||||
make cloud-init
|
||||
|
||||
@@ -192,12 +192,9 @@ jobs:
|
||||
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||
with:
|
||||
path: |
|
||||
webapp/node_modules/@mattermost/client
|
||||
webapp/node_modules/@mattermost/types
|
||||
webapp/**/node_modules
|
||||
webapp/platform/client/lib
|
||||
webapp/platform/client/node_modules
|
||||
webapp/platform/types/lib
|
||||
webapp/platform/types/node_modules
|
||||
key: e2e-platform-pkgs-${{ runner.os }}-${{ hashFiles('webapp/package-lock.json', 'webapp/platform/client/src/**', 'webapp/platform/client/tsconfig*.json', 'webapp/platform/types/src/**', 'webapp/platform/types/tsconfig*.json') }}
|
||||
- name: ci/build-platform-pkgs
|
||||
# Full webapp install is needed for tsc + workspace linking; the
|
||||
@@ -319,12 +316,9 @@ jobs:
|
||||
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||
with:
|
||||
path: |
|
||||
webapp/node_modules/@mattermost/client
|
||||
webapp/node_modules/@mattermost/types
|
||||
webapp/**/node_modules
|
||||
webapp/platform/client/lib
|
||||
webapp/platform/client/node_modules
|
||||
webapp/platform/types/lib
|
||||
webapp/platform/types/node_modules
|
||||
key: e2e-platform-pkgs-${{ runner.os }}-${{ hashFiles('webapp/package-lock.json', 'webapp/platform/client/src/**', 'webapp/platform/client/tsconfig*.json', 'webapp/platform/types/src/**', 'webapp/platform/types/tsconfig*.json') }}
|
||||
fail-on-cache-miss: true
|
||||
- name: ci/restore-playwright-deps
|
||||
|
||||
@@ -20,34 +20,34 @@ if [ -n "${MM_LICENSE:-}" ]; then
|
||||
${MME2E_DC_SERVER} exec -T -- server mmctl --local license upload-string "$MM_LICENSE"
|
||||
fi
|
||||
|
||||
if [ "$TEST" = "cypress" ]; then
|
||||
mme2e_log "Prepare Cypress: install dependencies"
|
||||
# Create user in Cypress container and work around the node image's assumption that the app files are owned by user 1000
|
||||
mme2e_log "Creating user for Cypress container"
|
||||
${MME2E_DC_SERVER} exec -T -u 0 -- cypress bash -c "id $MME2E_UID || useradd -u $MME2E_UID -m nodeci"
|
||||
${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress npm i
|
||||
${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress cypress install
|
||||
mme2e_log "Prepare Cypress: populating fixtures"
|
||||
${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress tee tests/fixtures/keycloak.crt >/dev/null <../../server/build/docker/keycloak/keycloak.crt
|
||||
# Download plugins using wget in the Cypress container
|
||||
for PLUGIN_URL in \
|
||||
"https://github.com/mattermost/mattermost-plugin-gitlab/releases/download/v1.3.0/com.github.manland.mattermost-plugin-gitlab-1.3.0.tar.gz" \
|
||||
"https://github.com/mattermost/mattermost-plugin-demo/releases/download/v0.9.0/com.mattermost.demo-plugin-0.9.0.tar.gz" \
|
||||
"https://github.com/mattermost/mattermost-plugin-demo/releases/download/v0.8.0/com.mattermost.demo-plugin-0.8.0.tar.gz"; do
|
||||
PLUGIN_NAME="${PLUGIN_URL##*/}"
|
||||
PLUGIN_PATH="tests/fixtures/$PLUGIN_NAME"
|
||||
# if [ "$TEST" = "cypress" ]; then
|
||||
# mme2e_log "Prepare Cypress: install dependencies"
|
||||
# # Create user in Cypress container and work around the node image's assumption that the app files are owned by user 1000
|
||||
# mme2e_log "Creating user for Cypress container"
|
||||
# ${MME2E_DC_SERVER} exec -T -u 0 -- cypress bash -c "id $MME2E_UID || useradd -u $MME2E_UID -m nodeci"
|
||||
# ${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress npm i
|
||||
# ${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress cypress install
|
||||
# mme2e_log "Prepare Cypress: populating fixtures"
|
||||
# ${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress tee tests/fixtures/keycloak.crt >/dev/null <../../server/build/docker/keycloak/keycloak.crt
|
||||
# # Download plugins using wget in the Cypress container
|
||||
# for PLUGIN_URL in \
|
||||
# "https://github.com/mattermost/mattermost-plugin-gitlab/releases/download/v1.3.0/com.github.manland.mattermost-plugin-gitlab-1.3.0.tar.gz" \
|
||||
# "https://github.com/mattermost/mattermost-plugin-demo/releases/download/v0.9.0/com.mattermost.demo-plugin-0.9.0.tar.gz" \
|
||||
# "https://github.com/mattermost/mattermost-plugin-demo/releases/download/v0.8.0/com.mattermost.demo-plugin-0.8.0.tar.gz"; do
|
||||
# PLUGIN_NAME="${PLUGIN_URL##*/}"
|
||||
# PLUGIN_PATH="tests/fixtures/$PLUGIN_NAME"
|
||||
|
||||
# Check if file exists
|
||||
if ${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress test -f "$PLUGIN_PATH"; then
|
||||
mme2e_log "Skipping installation of plugin $PLUGIN_NAME: file exists"
|
||||
continue
|
||||
fi
|
||||
# # Check if file exists
|
||||
# if ${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress test -f "$PLUGIN_PATH"; then
|
||||
# mme2e_log "Skipping installation of plugin $PLUGIN_NAME: file exists"
|
||||
# continue
|
||||
# fi
|
||||
|
||||
# Use wget in the Cypress container instead of curl in server (for distroless compatibility)
|
||||
mme2e_log "Downloading $PLUGIN_NAME to fixtures directory"
|
||||
${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress wget -q -O "/cypress/$PLUGIN_PATH" "$PLUGIN_URL"
|
||||
done
|
||||
fi
|
||||
# # Use wget in the Cypress container instead of curl in server (for distroless compatibility)
|
||||
# mme2e_log "Downloading $PLUGIN_NAME to fixtures directory"
|
||||
# ${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress wget -q -O "/cypress/$PLUGIN_PATH" "$PLUGIN_URL"
|
||||
# done
|
||||
# fi
|
||||
|
||||
# Run service-specific initialization steps
|
||||
for SERVICE in $ENABLED_DOCKER_SERVICES; do
|
||||
|
||||
@@ -18,6 +18,14 @@ firefox: $(firefox --version || true)
|
||||
INNEREOF
|
||||
EOF
|
||||
|
||||
mme2e_log "Prepare Cypress: install dependencies"
|
||||
${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress bash <<EOF
|
||||
cd webapp/
|
||||
npm install --cache /tmp/empty-cache
|
||||
cd ../e2e-tests/cypress
|
||||
npm install --cache /tmp/empty-cache
|
||||
EOF
|
||||
|
||||
# Initialize cypress report directory
|
||||
mme2e_log "Prepare Cypress: clean and initialize report and logs directory"
|
||||
${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress bash <<EOF
|
||||
|
||||
@@ -26,6 +26,15 @@ mkdir -p results/junit
|
||||
mkdir -p results/mochawesome-report/json/tests
|
||||
touch results/junit/empty.xml
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>' > results/junit/empty.xml
|
||||
EOF
|
||||
|
||||
# Install dependencies
|
||||
mme2e_log "Prepare Cypress: install dependencies"
|
||||
${MME2E_DC_SERVER} exec -T -u "$MME2E_UID" -- cypress bash <<EOF
|
||||
cd webapp/
|
||||
npm install --cache /tmp/empty-cache
|
||||
cd ../e2e-tests/cypress
|
||||
npm install --cache /tmp/empty-cache
|
||||
EOF
|
||||
|
||||
# Run cypress with specific spec files and mochawesome reporter
|
||||
|
||||
@@ -1,50 +1,31 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
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 headers from 'eslint-plugin-headers';
|
||||
import pluginCypress from 'eslint-plugin-cypress';
|
||||
import noOnlyTest from 'eslint-plugin-no-only-tests';
|
||||
import globals from 'globals';
|
||||
|
||||
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,
|
||||
});
|
||||
import eslintPlugin from '@mattermost/eslint-plugin';
|
||||
|
||||
export default [
|
||||
{
|
||||
ignores: ['**/node_modules', '**/logs', '**/results'],
|
||||
},
|
||||
...compat
|
||||
.extends('eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:import/recommended')
|
||||
.map((config) => ({
|
||||
...config,
|
||||
files: ['**/*.ts', '**/*.js'],
|
||||
})),
|
||||
...eslintPlugin.configs.base,
|
||||
{
|
||||
files: ['**/*.ts', '**/*.js'],
|
||||
plugins: {
|
||||
'@typescript-eslint': typescriptEslint,
|
||||
headers,
|
||||
cypress: pluginCypress,
|
||||
'no-only-tests': noOnlyTest,
|
||||
},
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.chai,
|
||||
...globals.node,
|
||||
...globals.mocha,
|
||||
Cypress: 'readonly',
|
||||
cy: 'readonly',
|
||||
},
|
||||
parser: tsParser,
|
||||
ecmaVersion: 5,
|
||||
sourceType: 'module',
|
||||
},
|
||||
settings: {
|
||||
'import/resolver': {
|
||||
@@ -60,14 +41,17 @@ export default [
|
||||
'cypress/no-unnecessary-waiting': 0,
|
||||
'cypress/unsafe-to-chain-command': 0,
|
||||
'func-names': 0,
|
||||
'import/no-unresolved': 0,
|
||||
'global-require': 0,
|
||||
'lines-around-comment': 0,
|
||||
'max-nested-callbacks': 0,
|
||||
'no-await-in-loop': 0,
|
||||
'no-loop-func': 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-only-tests/no-only-tests': ['error', {focus: ['only']}],
|
||||
'no-console': 'error',
|
||||
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
||||
'@typescript-eslint/no-explicit-any': 'off',
|
||||
@@ -92,7 +76,7 @@ export default [
|
||||
},
|
||||
],
|
||||
'import/no-unresolved': 'off',
|
||||
'max-lines': ['warn', {'max': 800, 'skipBlankLines': true, 'skipComments': true}],
|
||||
'max-lines': ['warn', {max: 800, skipBlankLines: true, skipComments: true}],
|
||||
'eol-last': ['error', 'always'],
|
||||
'no-trailing-spaces': 'error',
|
||||
},
|
||||
|
||||
Generated
+31
-1838
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@
|
||||
"@cypress/webpack-preprocessor": "7.1.0",
|
||||
"@eslint/js": "9.39.3",
|
||||
"@mattermost/client": "11.5.0",
|
||||
"@mattermost/eslint-plugin": "file:../../webapp/platform/eslint-plugin",
|
||||
"@mattermost/types": "11.5.0",
|
||||
"@testing-library/cypress": "10.1.0",
|
||||
"@types/async": "3.2.25",
|
||||
@@ -42,13 +43,8 @@
|
||||
"deepmerge": "4.3.1",
|
||||
"dotenv": "17.4.2",
|
||||
"eslint": "9.39.3",
|
||||
"eslint-import-resolver-webpack": "0.13.11",
|
||||
"eslint-plugin-cypress": "6.3.1",
|
||||
"eslint-plugin-headers": "^1.3.4",
|
||||
"eslint-plugin-import": "2.32.0",
|
||||
"eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#5b0c972eacf19286e4c66221b39113bf8728a99e",
|
||||
"eslint-plugin-no-only-tests": "3.3.0",
|
||||
"eslint-plugin-react": "7.37.5",
|
||||
"express": "5.2.1",
|
||||
"extract-zip": "2.0.1",
|
||||
"globals": "17.5.0",
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
|
||||
// Group: @channels @enterprise @ldap @saml @keycloak
|
||||
|
||||
import {LdapUser} from '@/support/ldap_server_commands';
|
||||
import type {LdapUser} from '@/support/ldap_server_commands';
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
import {getRandomId} from '@/utils';
|
||||
import {getKeycloakServerSettings} from '@/utils/config';
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
// Group: @channels @enterprise @ldap @saml @keycloak
|
||||
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
import {generateLDAPUser, LdapUser} from '@/support/ldap_server_commands';
|
||||
import type {LdapUser} from '@/support/ldap_server_commands';
|
||||
import {generateLDAPUser} from '@/support/ldap_server_commands';
|
||||
import {getKeycloakServerSettings} from '@/utils/config';
|
||||
|
||||
describe('AD / LDAP', () => {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
// Group: @channels @enterprise @ldap @saml @keycloak
|
||||
|
||||
import {LdapUser} from '@/support/ldap_server_commands';
|
||||
import type {LdapUser} from '@/support/ldap_server_commands';
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
import {getRandomId} from '@/utils';
|
||||
import {getKeycloakServerSettings} from '@/utils/config';
|
||||
|
||||
-1
@@ -14,7 +14,6 @@ import {createArchivedChannel} from './helpers';
|
||||
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
describe('archive channel search tests', () => {
|
||||
let testTeam: Cypress.Team;
|
||||
let testChannel: Cypress.Channel;
|
||||
|
||||
@@ -7,10 +7,12 @@
|
||||
// - Use element ID when selecting an element. Create one if none.
|
||||
// ***************************************************************
|
||||
|
||||
import type {
|
||||
SimpleUser,
|
||||
} from './helpers';
|
||||
import {
|
||||
getPostTextboxInput,
|
||||
getQuickChannelSwitcherInput,
|
||||
SimpleUser,
|
||||
startAtMention,
|
||||
verifySuggestionAtChannelSwitcher,
|
||||
verifySuggestionAtPostTextbox,
|
||||
|
||||
+2
-1
@@ -11,7 +11,8 @@
|
||||
// Group: @channels @autocomplete
|
||||
|
||||
import {doTestQuickChannelSwitcher} from '../common_test';
|
||||
import {createSearchData, SimpleUser} from '../helpers';
|
||||
import type {SimpleUser} from '../helpers';
|
||||
import {createSearchData} from '../helpers';
|
||||
|
||||
import {getRandomLetter} from '@/utils';
|
||||
|
||||
|
||||
+2
-1
@@ -11,7 +11,8 @@
|
||||
// Group: @channels @autocomplete
|
||||
|
||||
import {doTestPostextbox} from '../common_test';
|
||||
import {createSearchData, SimpleUser} from '../helpers';
|
||||
import type {SimpleUser} from '../helpers';
|
||||
import {createSearchData} from '../helpers';
|
||||
|
||||
import {getRandomLetter} from '@/utils';
|
||||
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
// Group: @channels @autocomplete
|
||||
|
||||
import {doTestDMChannelSidebar, doTestUserChannelSection} from '../common_test';
|
||||
import {createSearchData, SimpleUser} from '../helpers';
|
||||
import type {SimpleUser} from '../helpers';
|
||||
import {createSearchData} from '../helpers';
|
||||
|
||||
import {getRandomLetter} from '@/utils';
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts @mfa
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts @mfa
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @not_cloud @bot_accounts
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
import {Bot} from '@mattermost/types/bots';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Bot} from '@mattermost/types/bots';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import {createBotPatch} from '@/support/api/bots';
|
||||
|
||||
|
||||
@@ -10,13 +10,12 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @not_cloud @bot_accounts
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import {createBotInteractive} from './helpers';
|
||||
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
describe('Bot accounts - CRUD Testing', () => {
|
||||
let newTeam: Team;
|
||||
|
||||
|
||||
@@ -10,14 +10,13 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
import {Bot} from '@mattermost/types/bots';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Bot} from '@mattermost/types/bots';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import {createBotInteractive} from './helpers';
|
||||
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
describe('Bot accounts - CRUD Testing', () => {
|
||||
let newTeam: Team;
|
||||
let testBot: Bot & {fullDisplayName: string};
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
describe('Bot display name', () => {
|
||||
let offTopicChannel: Channel;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import * as MESSAGES from '@/fixtures/messages';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
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 type {Bot} from '@mattermost/types/bots';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {createBotPatch} from '@/support/api/bots';
|
||||
import {generateRandomUser} from '@/support/api/user';
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
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 type {Bot} from '@mattermost/types/bots';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {createBotPatch} from '@/support/api/bots';
|
||||
import {generateRandomUser} from '@/support/api/user';
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
|
||||
import {createBotPatch} from '@/support/api/bots';
|
||||
import {createChannelPatch} from '@/support/api/channel';
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts @plugin @not_cloud
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {matterpollPlugin} from '@/utils/plugins';
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import {createBotPatch} from '@/support/api/bots';
|
||||
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts @not_cloud
|
||||
|
||||
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 type {Bot} from '@mattermost/types/bots';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {createBotPatch} from '@/support/api/bots';
|
||||
import {generateRandomUser} from '@/support/api/user';
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @bot_accounts
|
||||
|
||||
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 type {Bot} from '@mattermost/types/bots';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {createBotPatch} from '@/support/api/bots';
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel
|
||||
|
||||
import {Channel, ServerChannel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel, ServerChannel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
@@ -10,15 +10,14 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {createPrivateChannel} from '../enterprise/elasticsearch_autocomplete/helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
const channelType = {
|
||||
all: 'Channel Type: All',
|
||||
public: 'Channel Type: Public',
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// Group: @channels @channel @channel_bookmarks
|
||||
// node run_tests.js --group='@channel'
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getRandomId, stubClipboard} from '@/utils';
|
||||
@@ -20,7 +20,6 @@ import {getRandomId, stubClipboard} from '@/utils';
|
||||
describe('Channel Bookmarks', () => {
|
||||
let testTeam: Team;
|
||||
|
||||
|
||||
let user1: UserProfile;
|
||||
let admin: UserProfile;
|
||||
let publicChannel: Channel;
|
||||
@@ -471,7 +470,6 @@ describe('Channel Bookmarks', () => {
|
||||
|
||||
cy.makeClient().then(async (client) => {
|
||||
for (let i = 1; i <= OVERFLOW_COUNT; i++) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await client.createChannelBookmark(overflowChannel.id, {
|
||||
type: 'link',
|
||||
display_name: `OvBm ${String(i).padStart(2, '0')}`,
|
||||
@@ -530,20 +528,20 @@ describe('Channel Bookmarks', () => {
|
||||
|
||||
// # Select first item with Space, move down, confirm with Space
|
||||
cy.get('#channelBookmarksBarMenuDropdown').within(() => {
|
||||
cy.contains('[data-bookmark-id]', firstName).focus()
|
||||
.trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).focus().
|
||||
trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
});
|
||||
cy.wait(TIMEOUTS.HALF_SEC);
|
||||
|
||||
cy.get('#channelBookmarksBarMenuDropdown').within(() => {
|
||||
cy.contains('[data-bookmark-id]', firstName)
|
||||
.trigger('keydown', {key: 'ArrowDown', code: 'ArrowDown', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).
|
||||
trigger('keydown', {key: 'ArrowDown', code: 'ArrowDown', bubbles: true});
|
||||
});
|
||||
cy.wait(TIMEOUTS.HALF_SEC);
|
||||
|
||||
cy.get('#channelBookmarksBarMenuDropdown').within(() => {
|
||||
cy.contains('[data-bookmark-id]', firstName)
|
||||
.trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).
|
||||
trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
});
|
||||
cy.wait(TIMEOUTS.ONE_SEC);
|
||||
|
||||
@@ -565,20 +563,20 @@ describe('Channel Bookmarks', () => {
|
||||
|
||||
// # Select, move, then Escape to cancel
|
||||
cy.get('#channelBookmarksBarMenuDropdown').within(() => {
|
||||
cy.contains('[data-bookmark-id]', firstName).focus()
|
||||
.trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).focus().
|
||||
trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
});
|
||||
cy.wait(TIMEOUTS.HALF_SEC);
|
||||
|
||||
cy.get('#channelBookmarksBarMenuDropdown').within(() => {
|
||||
cy.contains('[data-bookmark-id]', firstName)
|
||||
.trigger('keydown', {key: 'ArrowDown', code: 'ArrowDown', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).
|
||||
trigger('keydown', {key: 'ArrowDown', code: 'ArrowDown', bubbles: true});
|
||||
});
|
||||
cy.wait(TIMEOUTS.HALF_SEC);
|
||||
|
||||
cy.get('#channelBookmarksBarMenuDropdown').within(() => {
|
||||
cy.contains('[data-bookmark-id]', firstName)
|
||||
.trigger('keydown', {key: 'Escape', code: 'Escape', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).
|
||||
trigger('keydown', {key: 'Escape', code: 'Escape', bubbles: true});
|
||||
});
|
||||
cy.wait(TIMEOUTS.ONE_SEC);
|
||||
|
||||
@@ -719,8 +717,8 @@ describe('Channel Bookmarks', () => {
|
||||
const lastName = text.trim();
|
||||
|
||||
// # Start reorder, move right to cross into overflow, confirm
|
||||
cy.findByRole('link', {name: lastName}).focus()
|
||||
.trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.findByRole('link', {name: lastName}).focus().
|
||||
trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.focused().trigger('keydown', {key: 'ArrowRight', code: 'ArrowRight', bubbles: true});
|
||||
cy.focused().trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
|
||||
@@ -733,10 +731,10 @@ describe('Channel Bookmarks', () => {
|
||||
|
||||
// * Verify DOM: item is present in the open overflow menu (menu stays
|
||||
// open after confirm when item ends in overflow)
|
||||
cy.get('#channelBookmarksBarMenuDropdown')
|
||||
.should('be.visible')
|
||||
.contains(lastName)
|
||||
.should('be.visible');
|
||||
cy.get('#channelBookmarksBarMenuDropdown').
|
||||
should('be.visible').
|
||||
contains(lastName).
|
||||
should('be.visible');
|
||||
|
||||
// # Close menu to remove MUI backdrop covering the bar
|
||||
dismissMenu();
|
||||
@@ -760,10 +758,10 @@ describe('Channel Bookmarks', () => {
|
||||
const firstOverflowName = text.trim();
|
||||
|
||||
cy.get('#channelBookmarksBarMenuDropdown').within(() => {
|
||||
cy.contains('[data-bookmark-id]', firstOverflowName).focus()
|
||||
.trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstOverflowName)
|
||||
.trigger('keydown', {key: 'ArrowUp', code: 'ArrowUp', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstOverflowName).focus().
|
||||
trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstOverflowName).
|
||||
trigger('keydown', {key: 'ArrowUp', code: 'ArrowUp', bubbles: true});
|
||||
});
|
||||
|
||||
// * Verify overflow menu closed (transitioned to bar)
|
||||
@@ -814,12 +812,12 @@ describe('Channel Bookmarks', () => {
|
||||
|
||||
// # Space to select, ArrowDown to move, Space to confirm
|
||||
cy.get('#channelBookmarksBarMenuDropdown').within(() => {
|
||||
cy.contains('[data-bookmark-id]', firstName).focus()
|
||||
.trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName)
|
||||
.trigger('keydown', {key: 'ArrowDown', code: 'ArrowDown', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName)
|
||||
.trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).focus().
|
||||
trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).
|
||||
trigger('keydown', {key: 'ArrowDown', code: 'ArrowDown', bubbles: true});
|
||||
cy.contains('[data-bookmark-id]', firstName).
|
||||
trigger('keydown', {key: ' ', code: 'Space', bubbles: true});
|
||||
});
|
||||
|
||||
// * Verify we did NOT navigate (URL unchanged, no new tab)
|
||||
@@ -896,8 +894,8 @@ describe('Channel Bookmarks', () => {
|
||||
|
||||
// # Press Enter on "Open" menu item — the keydown + ButtonBase synthetic click
|
||||
// used to fire onClick twice. handledRef guard ensures single dispatch.
|
||||
cy.findByRole('menuitem', {name: 'Open'}).should('exist').focus()
|
||||
.trigger('keydown', {key: 'Enter', code: 'Enter', bubbles: true});
|
||||
cy.findByRole('menuitem', {name: 'Open'}).should('exist').focus().
|
||||
trigger('keydown', {key: 'Enter', code: 'Enter', bubbles: true});
|
||||
|
||||
// * Verify window.open called exactly once (no Menu.Item double-fire)
|
||||
cy.get('@windowOpen').should('have.been.calledOnce');
|
||||
@@ -1125,8 +1123,8 @@ function dismissMenu() {
|
||||
* mode. force:true bypasses the visibility check.
|
||||
*/
|
||||
function clickOverflowDotMenu(item: Cypress.Chainable) {
|
||||
item.scrollIntoView()
|
||||
.find('.channelBookmarksDotMenuButton--overflow').click({force: true});
|
||||
item.scrollIntoView().
|
||||
find('.channelBookmarksDotMenuButton--overflow').click({force: true});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel @rhs @channel_info
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {stubClipboard} from '@/utils';
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
const {generateRandomUser} = require('../../../support/api/user');
|
||||
|
||||
@@ -144,7 +144,6 @@ describe('Channel members RHS', () => {
|
||||
cy.uiCloseRHS();
|
||||
|
||||
for (let i = 0; i < 20; i++) {
|
||||
|
||||
cy.apiCreateUser().then(({user: newUser}) => {
|
||||
cy.apiAddUserToTeam(testTeam.id, newUser.id).then(() => {
|
||||
cy.apiAddUserToChannel(channel.id, newUser.id);
|
||||
@@ -291,7 +290,6 @@ 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++) {
|
||||
|
||||
cy.apiCreateUser().then(({user: newUser}) => {
|
||||
cy.apiAddUserToTeam(testTeam.id, newUser.id).then(() => {
|
||||
cy.apiAddUserToChannel(channel.id, newUser.id);
|
||||
|
||||
+3
-3
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel @not_cloud
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
|
||||
+3
-3
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel @channel_settings @permissions
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
describe('Channel Settings Menu Permissions', () => {
|
||||
let testTeam: Team;
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel @channel_settings
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
describe('Channel Settings Modal', () => {
|
||||
let testTeam: Team;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel @channel_settings
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import {
|
||||
beMuted,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {ChainableT} from '@/types';
|
||||
import type {ChainableT} from '@/types';
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
|
||||
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team, TeamMembership} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team, TeamMembership} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @channel
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
|
||||
// Group: @channels @channel
|
||||
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
// Group: @channels @channel_settings
|
||||
// node run_tests.js --group='@channel_settings'
|
||||
|
||||
import {ChannelType} from '@mattermost/types/channels';
|
||||
import type {ChannelType} from '@mattermost/types/channels';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
@@ -15,7 +15,6 @@ import {clickCategoryMenuItem} from './helpers';
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
describe('Category muting', () => {
|
||||
let testTeam: Cypress.Team;
|
||||
let testUser: Cypress.UserProfile;
|
||||
|
||||
-1
@@ -15,7 +15,6 @@ import {clickSortCategoryMenuItem} from './helpers';
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
let testTeam: Cypress.Team;
|
||||
let testUser: Cypress.UserProfile;
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ import {clickCategoryMenuItem} from './helpers';
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
describe('Channel sidebar', () => {
|
||||
before(() => {
|
||||
// # Login as test user and visit town-square
|
||||
|
||||
-1
@@ -5,7 +5,6 @@ import {clickCategoryMenuItem} from './helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
// - [*] indicates an assertion (e.g. * Check the title)
|
||||
|
||||
+3
-3
@@ -9,10 +9,10 @@
|
||||
|
||||
// Group: @channels @collapsed_reply_threads
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {PostMessageResp} from '@/support/task_commands';
|
||||
import type {PostMessageResp} from '@/support/task_commands';
|
||||
import {spyNotificationAs} from '@/support/notification';
|
||||
|
||||
describe('CRT Desktop notifications', () => {
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
|
||||
+3
-3
@@ -10,9 +10,9 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @collapsed_reply_threads @not_cloud
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {interceptFileUpload} from '../files_and_attachments/helpers';
|
||||
|
||||
|
||||
@@ -10,15 +10,14 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @collapsed_reply_threads
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {waitUntilUploadComplete, interceptFileUpload} from '../files_and_attachments/helpers';
|
||||
|
||||
import * as MESSAGES from '@/fixtures/messages';
|
||||
|
||||
|
||||
describe('Collapsed Reply Threads', () => {
|
||||
let testTeam: Team;
|
||||
let testChannel: Channel;
|
||||
|
||||
+4
-4
@@ -9,13 +9,13 @@
|
||||
|
||||
// Group: @channels @collapsed_reply_threads
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {isMac} from '@/utils';
|
||||
import {ChainableT} from '@/types';
|
||||
import type {ChainableT} from '@/types';
|
||||
|
||||
describe('Collapsed Reply Threads', () => {
|
||||
let testTeam: Team;
|
||||
|
||||
+4
-4
@@ -9,11 +9,11 @@
|
||||
|
||||
// Group: @channels @collapsed_reply_threads
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {PostMessageResp} from '@/support/task_commands';
|
||||
import type {PostMessageResp} from '@/support/task_commands';
|
||||
|
||||
describe('Collapsed Reply Threads', () => {
|
||||
let testTeam: Team;
|
||||
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
|
||||
+4
-4
@@ -10,11 +10,11 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @collapsed_reply_threads
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {PostMessageResp} from '@/support/task_commands';
|
||||
import type {PostMessageResp} from '@/support/task_commands';
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
describe('Collapsed Reply Threads', () => {
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
|
||||
// Group: @channels @collapsed_reply_threads
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ import {getCustomEmoji, verifyLastPostedEmoji} from './helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
describe('Custom emojis', () => {
|
||||
let testTeam: Cypress.Team;
|
||||
let testUser: Cypress.UserProfile;
|
||||
|
||||
@@ -14,7 +14,6 @@ import {getCustomEmoji} from './helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
describe('Custom emojis', () => {
|
||||
let testTeam: Cypress.Team;
|
||||
let testUser: Cypress.UserProfile;
|
||||
|
||||
@@ -13,7 +13,6 @@ import {getCustomEmoji, verifyLastPostedEmoji} from './helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
describe('Custom emojis', () => {
|
||||
let testTeam: Cypress.Team;
|
||||
let testUser: Cypress.UserProfile;
|
||||
|
||||
@@ -14,7 +14,6 @@ import {getCustomEmoji} from './helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
describe('Custom emojis', () => {
|
||||
let testTeam: Cypress.Team;
|
||||
let testUser: Cypress.UserProfile;
|
||||
|
||||
@@ -17,8 +17,6 @@ import {getCustomEmoji} from './helpers';
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import * as MESSAGES from '@/fixtures/messages';
|
||||
|
||||
|
||||
|
||||
describe('Custom emojis', () => {
|
||||
let testTeam: Cypress.Team;
|
||||
let testUser: Cypress.UserProfile;
|
||||
|
||||
@@ -15,7 +15,6 @@ import {getCustomEmoji} from './helpers';
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import * as MESSAGES from '@/fixtures/messages';
|
||||
|
||||
|
||||
describe('Recent Emoji', () => {
|
||||
const largeEmojiFile = 'gif-image-file.gif';
|
||||
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @accessibility
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
+3
-3
@@ -9,9 +9,9 @@
|
||||
|
||||
// Group: @channels @enterprise @accessibility
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @system_console @authentication
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getRandomId, newTestPassword} from '@/utils';
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
|
||||
// Group: @channels @enterprise @system_console @authentication @mfa
|
||||
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
import * as authenticator from 'authenticator';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
+2
-3
@@ -10,8 +10,8 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {
|
||||
createPrivateChannel,
|
||||
@@ -22,7 +22,6 @@ import {
|
||||
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
|
||||
|
||||
describe('Autocomplete with Elasticsearch - Channel', () => {
|
||||
let testTeam: Team;
|
||||
let testUser: UserProfile;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
|
||||
import {
|
||||
enableElasticSearch,
|
||||
|
||||
+3
-3
@@ -1,14 +1,14 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
|
||||
import {SimpleUser} from '../../autocomplete/helpers';
|
||||
import type {SimpleUser} from '../../autocomplete/helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {getAdminAccount} from '@/support/env';
|
||||
import {newTestPassword} from '@/utils';
|
||||
import {ChainableT} from '@/types';
|
||||
import type {ChainableT} from '@/types';
|
||||
|
||||
const admin = getAdminAccount();
|
||||
|
||||
|
||||
+2
-3
@@ -10,8 +10,8 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {
|
||||
enableElasticSearch,
|
||||
@@ -21,7 +21,6 @@ import {
|
||||
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
describe('Autocomplete with Elasticsearch - Renaming', () => {
|
||||
let testUser: UserProfile;
|
||||
let testChannel: Channel;
|
||||
|
||||
+2
-3
@@ -10,8 +10,8 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
|
||||
|
||||
import {Channel} from '@mattermost/types/channels';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {Channel} from '@mattermost/types/channels';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {
|
||||
enableElasticSearch,
|
||||
@@ -21,7 +21,6 @@ import {
|
||||
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
describe('Autocomplete with Elasticsearch - Renaming Team', () => {
|
||||
const randomId = getRandomId();
|
||||
let testUser: UserProfile;
|
||||
|
||||
+2
-1
@@ -11,7 +11,8 @@
|
||||
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
|
||||
|
||||
import {doTestQuickChannelSwitcher} from '../../autocomplete/common_test';
|
||||
import {createSearchData, SimpleUser} from '../../autocomplete/helpers';
|
||||
import type {SimpleUser} from '../../autocomplete/helpers';
|
||||
import {createSearchData} from '../../autocomplete/helpers';
|
||||
|
||||
import {enableElasticSearch} from './helpers';
|
||||
|
||||
|
||||
+2
-1
@@ -11,7 +11,8 @@
|
||||
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
|
||||
|
||||
import {doTestPostextbox} from '../../autocomplete/common_test';
|
||||
import {createSearchData, SimpleUser} from '../../autocomplete/helpers';
|
||||
import type {SimpleUser} from '../../autocomplete/helpers';
|
||||
import {createSearchData} from '../../autocomplete/helpers';
|
||||
|
||||
import {enableElasticSearch} from './helpers';
|
||||
|
||||
|
||||
+3
-2
@@ -10,10 +10,11 @@
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud
|
||||
|
||||
import {Team} from '@mattermost/types/teams';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
|
||||
import {doTestDMChannelSidebar, doTestUserChannelSection} from '../../autocomplete/common_test';
|
||||
import {createSearchData, SimpleUser} from '../../autocomplete/helpers';
|
||||
import type {SimpleUser} from '../../autocomplete/helpers';
|
||||
import {createSearchData} from '../../autocomplete/helpers';
|
||||
|
||||
import {enableElasticSearch} from './helpers';
|
||||
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
|
||||
// Group: @channels @enterprise @not_cloud @extend_session
|
||||
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {verifyExtendedSession, verifyNotExtendedSession} from './helpers';
|
||||
|
||||
|
||||
+1
-2
@@ -9,13 +9,12 @@
|
||||
|
||||
// Group: @channels @enterprise @not_cloud @extend_session @ldap
|
||||
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {verifyExtendedSession, verifyNotExtendedSession} from './helpers';
|
||||
|
||||
import ldapUsers from '@/fixtures/ldap_users.json';
|
||||
|
||||
|
||||
describe('Extended Session Length', () => {
|
||||
const sessionLengthInHours = 1;
|
||||
const setting = {
|
||||
|
||||
+2
-3
@@ -14,14 +14,13 @@
|
||||
|
||||
// Group: @channels @enterprise @not_cloud @extend_session @ldap @saml @keycloak
|
||||
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {verifyExtendedSession, verifyNotExtendedSession} from './helpers';
|
||||
|
||||
import {LdapUser} from '@/support/ldap_server_commands';
|
||||
import type {LdapUser} from '@/support/ldap_server_commands';
|
||||
import {getKeycloakServerSettings} from '@/utils/config';
|
||||
|
||||
|
||||
describe('Extended Session Length', () => {
|
||||
const sessionLengthInDays = 1;
|
||||
const samlConfig = getKeycloakServerSettings();
|
||||
|
||||
+3
-5
@@ -9,9 +9,9 @@
|
||||
|
||||
// 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 type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
import type {Group} from '@mattermost/types/groups';
|
||||
|
||||
import {
|
||||
disablePermission,
|
||||
@@ -23,8 +23,6 @@ import {enableGroupMention} from './helpers';
|
||||
import ldapUsers from '@/fixtures/ldap_users.json';
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
|
||||
describe('Group Mentions', () => {
|
||||
let groupID: string;
|
||||
let boardUser: Cypress.UserProfile;
|
||||
|
||||
+3
-4
@@ -9,16 +9,15 @@
|
||||
|
||||
// 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 type {UserProfile} from '@mattermost/types/users';
|
||||
import type {Team} from '@mattermost/types/teams';
|
||||
import type {Group} from '@mattermost/types/groups';
|
||||
|
||||
import {enableGroupMention} from './helpers';
|
||||
|
||||
import ldapUsers from '@/fixtures/ldap_users.json';
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
describe('Group Mentions', () => {
|
||||
let groupID1: string;
|
||||
let groupID2: string;
|
||||
|
||||
+3
-4
@@ -9,10 +9,9 @@
|
||||
|
||||
// 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 type {Team} from '@mattermost/types/teams';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
import type {Group} from '@mattermost/types/groups';
|
||||
|
||||
import {
|
||||
disablePermission,
|
||||
|
||||
-1
@@ -18,7 +18,6 @@ import {createPrivateChannel} from '../elasticsearch_autocomplete/helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
describe('Guest Account - Guest User Experience', () => {
|
||||
let guestUser: Cypress.UserProfile;
|
||||
let privateChannel: Cypress.Channel;
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
|
||||
import authenticator from 'authenticator';
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
import {
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* (email retrieval), so it is restricted to non-cloud editions.
|
||||
*/
|
||||
|
||||
import {UserProfile} from '@mattermost/types/users';
|
||||
import type {UserProfile} from '@mattermost/types/users';
|
||||
|
||||
import {
|
||||
changeGuestFeatureSettings,
|
||||
|
||||
-1
@@ -22,7 +22,6 @@ import {
|
||||
|
||||
import {getRandomId} from '@/utils';
|
||||
|
||||
|
||||
describe('Guest Account - Guest User Invitation Flow', () => {
|
||||
let testTeam: Cypress.Team;
|
||||
let newUser: Cypress.UserProfile;
|
||||
|
||||
-1
@@ -14,7 +14,6 @@ import {verifyGuest} from './helpers';
|
||||
|
||||
import * as TIMEOUTS from '@/fixtures/timeouts';
|
||||
|
||||
|
||||
describe('Guest Account - Verify Manage Guest Users', () => {
|
||||
let guestUser: Cypress.UserProfile;
|
||||
let testTeam: Cypress.Team;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user