From 50a9b9bdfafc527374dafb023b18b021d3e20e9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Mondrag=C3=B3n?= <79058848+julmondragon@users.noreply.github.com> Date: Mon, 27 Mar 2023 12:54:30 -0500 Subject: [PATCH 01/11] MM-50976_Fix error on non-cloud initial start (#22692) --- webapp/channels/src/components/common/hooks/useOpenSalesLink.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/channels/src/components/common/hooks/useOpenSalesLink.ts b/webapp/channels/src/components/common/hooks/useOpenSalesLink.ts index 4dbe44d0ca..1bc2c87e31 100644 --- a/webapp/channels/src/components/common/hooks/useOpenSalesLink.ts +++ b/webapp/channels/src/components/common/hooks/useOpenSalesLink.ts @@ -26,7 +26,7 @@ export default function useOpenSalesLink(): [() => void, string] { companyName = customer.name || ''; utmMedium = 'in-product-cloud'; } else { - customerEmail = currentUser.email || ''; + customerEmail = currentUser?.email || ''; } const contactSalesLink = buildMMURL(LicenseLinks.CONTACT_SALES, firstName, lastName, companyName, customerEmail, utmSource, utmMedium); From 0140e94d77b1c7ee646a857ae1958b29bbea318e Mon Sep 17 00:00:00 2001 From: Allan Guwatudde Date: Mon, 27 Mar 2023 22:38:19 +0300 Subject: [PATCH 02/11] [MM-49751] - Turn off Inactive Server Email (#22648) * [MM-49751] - Turn off Inactive Server Email * remove unused var --------- Co-authored-by: Mattermost Build --- model/config.go | 5 - model/feature_flags.go | 3 - server/channels/app/email/email.go | 46 -- server/channels/app/email/email_test.go | 1 - .../app/email/mocks/ServiceInterface.go | 14 - server/channels/app/email/service.go | 1 - server/channels/app/server.go | 7 - server/channels/app/server_inactivity.go | 119 ---- .../opentracinglayer/opentracinglayer.go | 36 -- .../channels/store/retrylayer/retrylayer.go | 42 -- server/channels/store/sqlstore/post_store.go | 11 - .../channels/store/sqlstore/session_store.go | 11 - server/channels/store/store.go | 2 - .../store/storetest/mocks/PostStore.go | 21 - .../store/storetest/mocks/SessionStore.go | 21 - server/channels/store/storetest/post_store.go | 35 -- .../channels/store/storetest/session_store.go | 18 - .../channels/store/timerlayer/timerlayer.go | 32 - server/i18n/en.json | 48 -- .../platform/services/telemetry/telemetry.go | 1 - server/templates/inactivity_body.html | 548 ------------------ server/templates/inactivity_body.mjml | 65 --- server/tests/test-config.json | 1 - 23 files changed, 1088 deletions(-) delete mode 100644 server/channels/app/server_inactivity.go delete mode 100644 server/templates/inactivity_body.html delete mode 100644 server/templates/inactivity_body.mjml diff --git a/model/config.go b/model/config.go index b5272d5f1f..3e0f60c8c7 100644 --- a/model/config.go +++ b/model/config.go @@ -1624,7 +1624,6 @@ type EmailSettings struct { LoginButtonColor *string `access:"experimental_features"` LoginButtonBorderColor *string `access:"experimental_features"` LoginButtonTextColor *string `access:"experimental_features"` - EnableInactivityEmail *bool } func (s *EmailSettings) SetDefaults(isUpdate bool) { @@ -1767,10 +1766,6 @@ func (s *EmailSettings) SetDefaults(isUpdate bool) { if s.LoginButtonTextColor == nil { s.LoginButtonTextColor = NewString("#2389D7") } - - if s.EnableInactivityEmail == nil { - s.EnableInactivityEmail = NewBool(true) - } } type RateLimitSettings struct { diff --git a/model/feature_flags.go b/model/feature_flags.go index 86bb298e5b..ebe357d3d9 100644 --- a/model/feature_flags.go +++ b/model/feature_flags.go @@ -41,8 +41,6 @@ type FeatureFlags struct { NormalizeLdapDNs bool - EnableInactivityCheckJob bool - // Enable special onboarding flow for first admin UseCaseOnboarding bool @@ -92,7 +90,6 @@ func (f *FeatureFlags) SetDefaults() { f.BoardsFeatureFlags = "" f.BoardsDataRetention = false f.NormalizeLdapDNs = false - f.EnableInactivityCheckJob = true f.UseCaseOnboarding = true f.GraphQL = false f.InsightsEnabled = true diff --git a/server/channels/app/email/email.go b/server/channels/app/email/email.go index 4444f42e5d..bb64e6efd0 100644 --- a/server/channels/app/email/email.go +++ b/server/channels/app/email/email.go @@ -11,8 +11,6 @@ import ( "io" "net/http" "net/url" - "os" - "strconv" "strings" "github.com/pkg/errors" @@ -26,8 +24,6 @@ import ( "github.com/microcosm-cc/bluemonday" ) -const serverInactivityHours = 100 - // Returns category if enabled is true (default false) // If "" is returned when enabled is false, the category headers aren't attached to the email func getSendGridCategory(category string, enabled bool) string { @@ -948,48 +944,6 @@ func (es *Service) CreateVerifyEmailToken(userID string, newEmail string) (*mode return token, nil } -func (es *Service) SendLicenseInactivityEmail(email, name, locale, siteURL string) error { - T := i18n.GetUserTranslations(locale) - subject := T("api.templates.server_inactivity_subject") - data := es.NewEmailTemplateData(locale) - data.Props["SiteURL"] = siteURL - data.Props["Title"] = T("api.templates.server_inactivity_title") - data.Props["SubTitle"] = T("api.templates.server_inactivity_subtitle", map[string]any{"Name": name}) - data.Props["InfoBullet"] = T("api.templates.server_inactivity_info_bullet") - data.Props["InfoBullet1"] = T("api.templates.server_inactivity_info_bullet1") - data.Props["InfoBullet2"] = T("api.templates.server_inactivity_info_bullet2") - data.Props["Info"] = T("api.templates.server_inactivity_info") - data.Props["EmailUs"] = T("api.templates.email_us_anytime_at") - data.Props["QuestionTitle"] = T("api.templates.questions_footer.title") - data.Props["QuestionInfo"] = T("api.templates.questions_footer.info") - data.Props["Button"] = T("api.templates.server_inactivity_button") - data.Props["SupportEmail"] = "feedback@mattermost.com" - data.Props["ButtonURL"] = siteURL - data.Props["Channels"] = T("Channels") - data.Props["Playbooks"] = T("Playbooks") - data.Props["Boards"] = T("Boards") - - inactivityDurationHoursEnv := os.Getenv("MM_INACTIVITY_DURATION") - inactivityDurationHours, parseError := strconv.ParseFloat(inactivityDurationHoursEnv, 64) - if parseError != nil { - // default to 100 hours - inactivityDurationHours = serverInactivityHours - } - - data.Props["FooterDisclaimer"] = T("api.templates.server_inactivity_footer_disclaimer", map[string]any{"Hours": inactivityDurationHours}) - - body, err := es.templatesContainer.RenderToString("inactivity_body", data) - if err != nil { - return err - } - - if err := es.sendMail(email, subject, body, "LicenseInactivityEmail"); err != nil { - return err - } - - return nil -} - func (es *Service) SendLicenseUpForRenewalEmail(email, name, locale, siteURL, ctaTitle, ctaLink, ctaText string, daysToExpiration int) error { T := i18n.GetUserTranslations(locale) subject := T("api.templates.license_up_for_renewal_subject") diff --git a/server/channels/app/email/email_test.go b/server/channels/app/email/email_test.go index d8b22431fc..3fb2e09a7a 100644 --- a/server/channels/app/email/email_test.go +++ b/server/channels/app/email/email_test.go @@ -408,7 +408,6 @@ func TestMailServiceConfig(t *testing.T) { LoginButtonColor: new(string), LoginButtonBorderColor: new(string), LoginButtonTextColor: new(string), - EnableInactivityEmail: new(bool), }, } }, diff --git a/server/channels/app/email/mocks/ServiceInterface.go b/server/channels/app/email/mocks/ServiceInterface.go index b86365846a..e4d4011f45 100644 --- a/server/channels/app/email/mocks/ServiceInterface.go +++ b/server/channels/app/email/mocks/ServiceInterface.go @@ -344,20 +344,6 @@ func (_m *ServiceInterface) SendInviteEmailsToTeamAndChannels(team *model.Team, return r0, r1 } -// SendLicenseInactivityEmail provides a mock function with given fields: _a0, name, locale, siteURL -func (_m *ServiceInterface) SendLicenseInactivityEmail(_a0 string, name string, locale string, siteURL string) error { - ret := _m.Called(_a0, name, locale, siteURL) - - var r0 error - if rf, ok := ret.Get(0).(func(string, string, string, string) error); ok { - r0 = rf(_a0, name, locale, siteURL) - } else { - r0 = ret.Error(0) - } - - return r0 -} - // SendLicenseUpForRenewalEmail provides a mock function with given fields: _a0, name, locale, siteURL, ctaTitle, ctaLink, ctaText, daysToExpiration func (_m *ServiceInterface) SendLicenseUpForRenewalEmail(_a0 string, name string, locale string, siteURL string, ctaTitle string, ctaLink string, ctaText string, daysToExpiration int) error { ret := _m.Called(_a0, name, locale, siteURL, ctaTitle, ctaLink, ctaText, daysToExpiration) diff --git a/server/channels/app/email/service.go b/server/channels/app/email/service.go index f5f186c168..3aa0b658f4 100644 --- a/server/channels/app/email/service.go +++ b/server/channels/app/email/service.go @@ -163,7 +163,6 @@ type ServiceInterface interface { InitEmailBatching() SendChangeUsernameEmail(newUsername, email, locale, siteURL string) error CreateVerifyEmailToken(userID string, newEmail string) (*model.Token, error) - SendLicenseInactivityEmail(email, name, locale, siteURL string) error Stop() } diff --git a/server/channels/app/server.go b/server/channels/app/server.go index c416089792..6197c6c55b 100644 --- a/server/channels/app/server.go +++ b/server/channels/app/server.go @@ -484,7 +484,6 @@ func NewServer(options ...Option) (*Server, error) { s.Go(func() { appInstance := New(ServerConnector(s.Channels())) s.runLicenseExpirationCheckJob() - s.runInactivityCheckJob() runDNDStatusExpireJob(appInstance) runPostReminderJob(appInstance) }) @@ -1198,12 +1197,6 @@ func runConfigCleanupJob(s *Server) { }, time.Hour*24) } -func (s *Server) runInactivityCheckJob() { - model.CreateRecurringTask("Server inactivity Check", func() { - s.doInactivityCheck() - }, time.Hour*24) -} - func (s *Server) runLicenseExpirationCheckJob() { s.doLicenseExpirationCheck() model.CreateRecurringTask("License Expiration Check", func() { diff --git a/server/channels/app/server_inactivity.go b/server/channels/app/server_inactivity.go deleted file mode 100644 index a1693069fb..0000000000 --- a/server/channels/app/server_inactivity.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. -// See LICENSE.txt for license information. - -package app - -import ( - "os" - "strconv" - "time" - - "github.com/mattermost/mattermost-server/v6/model" - "github.com/mattermost/mattermost-server/v6/server/platform/shared/mlog" -) - -const serverInactivityHours = 100 -const inactivityEmailSent = "INACTIVITY" - -func (s *Server) doInactivityCheck() { - - if *s.platform.Config().ServiceSettings.EnableDeveloper { - mlog.Info("No activity check because developer mode is enabled") - return - } - - if !*s.platform.Config().EmailSettings.EnableInactivityEmail { - mlog.Info("No activity check because EnableInactivityEmail is false") - return - } - - if !s.platform.Config().FeatureFlags.EnableInactivityCheckJob { - mlog.Info("No activity check because EnableInactivityCheckJob feature flag is disabled") - return - } - - _, sysValErr := s.Store().System().GetByName(inactivityEmailSent) - // if there is no error which may include *store.ErrNotFound, it means this check was already flagged as done - if sysValErr == nil { - return - } - - inactivityDurationHoursEnv := os.Getenv("MM_INACTIVITY_DURATION") - inactivityDurationHours, parseError := strconv.ParseFloat(inactivityDurationHoursEnv, 64) - if parseError != nil { - // default to 100 hours - inactivityDurationHours = serverInactivityHours - } - - // The first time this job runs. We check if the user has not made any posts in last inactivityDurationHours - // and remind them to use the workspace. If no posts have been made. We check the last time - // they logged in (session) for the last inactivityDurationHours and send a reminder. - lastPostAt, _ := s.Store().Post().GetLastPostRowCreateAt() - if lastPostAt != 0 { - posT := time.Unix(lastPostAt/1000, 0) - timeForLastPost := time.Since(posT).Hours() - if timeForLastPost > inactivityDurationHours { - s.takeInactivityAction() - } - return - } - - lastSessionAt, _ := s.Store().Session().GetLastSessionRowCreateAt() - if lastSessionAt != 0 { - sesT := time.Unix(lastSessionAt/1000, 0) - timeForLastSession := time.Since(sesT).Hours() - if timeForLastSession > inactivityDurationHours { - s.takeInactivityAction() - } - return - } -} - -func (s *Server) takeInactivityAction() { - siteURL := *s.platform.Config().ServiceSettings.SiteURL - if siteURL == "" { - mlog.Warn("No SiteURL configured") - } - - properties := map[string]any{ - "SiteURL": siteURL, - } - s.GetTelemetryService().SendTelemetry("inactive_server", properties) - users, err := s.Store().User().GetSystemAdminProfiles() - if err != nil { - mlog.Error("Failed to get system admins for inactivity check from Mattermost.") - return - } - - for _, user := range users { - - // See https://go.dev/doc/faq#closures_and_goroutines for why we make this assignment - user := user - - if user.Email == "" { - mlog.Error("Invalid system admin email.", mlog.String("user_email", user.Email)) - continue - } - - name := user.FirstName - if name == "" { - name = user.Username - } - - mlog.Debug("Sending inactivity reminder email.", mlog.String("user_email", user.Email)) - s.Go(func() { - if err := s.EmailService.SendLicenseInactivityEmail(user.Email, name, user.Locale, siteURL); err != nil { - mlog.Error("Error while sending inactivity reminder email.", mlog.String("user_email", user.Email), mlog.Err(err)) - } - }) - } - - // Mark that we sent emails. - sysVar := &model.System{Name: inactivityEmailSent, Value: "true"} - if err := s.Store().System().SaveOrUpdate(sysVar); err != nil { - mlog.Error("Unable to save INACTIVITY", mlog.Err(err)) - } - - // do some telemetry about sending the email - s.GetTelemetryService().SendTelemetry("inactive_server_emails_sent", properties) -} diff --git a/server/channels/store/opentracinglayer/opentracinglayer.go b/server/channels/store/opentracinglayer/opentracinglayer.go index 1f7d408365..15d32a18e2 100644 --- a/server/channels/store/opentracinglayer/opentracinglayer.go +++ b/server/channels/store/opentracinglayer/opentracinglayer.go @@ -6057,24 +6057,6 @@ func (s *OpenTracingLayerPostStore) GetFlaggedPostsForTeam(userID string, teamID return result, err } -func (s *OpenTracingLayerPostStore) GetLastPostRowCreateAt() (int64, error) { - origCtx := s.Root.Store.Context() - span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetLastPostRowCreateAt") - s.Root.Store.SetContext(newCtx) - defer func() { - s.Root.Store.SetContext(origCtx) - }() - - defer span.Finish() - result, err := s.PostStore.GetLastPostRowCreateAt() - if err != nil { - span.LogFields(spanlog.Error(err)) - ext.Error.Set(span, true) - } - - return result, err -} - func (s *OpenTracingLayerPostStore) GetMaxPostSize() int { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetMaxPostSize") @@ -8171,24 +8153,6 @@ func (s *OpenTracingLayerSessionStore) Get(ctx context.Context, sessionIDOrToken return result, err } -func (s *OpenTracingLayerSessionStore) GetLastSessionRowCreateAt() (int64, error) { - origCtx := s.Root.Store.Context() - span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "SessionStore.GetLastSessionRowCreateAt") - s.Root.Store.SetContext(newCtx) - defer func() { - s.Root.Store.SetContext(origCtx) - }() - - defer span.Finish() - result, err := s.SessionStore.GetLastSessionRowCreateAt() - if err != nil { - span.LogFields(spanlog.Error(err)) - ext.Error.Set(span, true) - } - - return result, err -} - func (s *OpenTracingLayerSessionStore) GetSessions(userID string) ([]*model.Session, error) { origCtx := s.Root.Store.Context() span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "SessionStore.GetSessions") diff --git a/server/channels/store/retrylayer/retrylayer.go b/server/channels/store/retrylayer/retrylayer.go index 121a769248..07997b61ac 100644 --- a/server/channels/store/retrylayer/retrylayer.go +++ b/server/channels/store/retrylayer/retrylayer.go @@ -6856,27 +6856,6 @@ func (s *RetryLayerPostStore) GetFlaggedPostsForTeam(userID string, teamID strin } -func (s *RetryLayerPostStore) GetLastPostRowCreateAt() (int64, error) { - - tries := 0 - for { - result, err := s.PostStore.GetLastPostRowCreateAt() - if err == nil { - return result, nil - } - if !isRepeatableError(err) { - return result, err - } - tries++ - if tries >= 3 { - err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") - return result, err - } - timepkg.Sleep(100 * timepkg.Millisecond) - } - -} - func (s *RetryLayerPostStore) GetMaxPostSize() int { return s.PostStore.GetMaxPostSize() @@ -9304,27 +9283,6 @@ func (s *RetryLayerSessionStore) Get(ctx context.Context, sessionIDOrToken strin } -func (s *RetryLayerSessionStore) GetLastSessionRowCreateAt() (int64, error) { - - tries := 0 - for { - result, err := s.SessionStore.GetLastSessionRowCreateAt() - if err == nil { - return result, nil - } - if !isRepeatableError(err) { - return result, err - } - tries++ - if tries >= 3 { - err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") - return result, err - } - timepkg.Sleep(100 * timepkg.Millisecond) - } - -} - func (s *RetryLayerSessionStore) GetSessions(userID string) ([]*model.Session, error) { tries := 0 diff --git a/server/channels/store/sqlstore/post_store.go b/server/channels/store/sqlstore/post_store.go index c07c51a3cd..85854fdb90 100644 --- a/server/channels/store/sqlstore/post_store.go +++ b/server/channels/store/sqlstore/post_store.go @@ -2300,17 +2300,6 @@ func (s *SqlPostStore) AnalyticsPostCount(options *model.PostCountOptions) (int6 return v, nil } -func (s *SqlPostStore) GetLastPostRowCreateAt() (int64, error) { - query := `SELECT CREATEAT FROM Posts ORDER BY CREATEAT DESC LIMIT 1` - var createAt int64 - err := s.GetReplicaX().Get(&createAt, query) - if err != nil { - return 0, errors.Wrapf(err, "failed to get last post createat") - } - - return createAt, nil -} - func (s *SqlPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, error) { query := `SELECT * FROM Posts WHERE CreateAt = ? AND ChannelId = ?` diff --git a/server/channels/store/sqlstore/session_store.go b/server/channels/store/sqlstore/session_store.go index afe15e183e..851336dbc6 100644 --- a/server/channels/store/sqlstore/session_store.go +++ b/server/channels/store/sqlstore/session_store.go @@ -221,17 +221,6 @@ func (me SqlSessionStore) UpdateExpiresAt(sessionId string, time int64) error { return nil } -func (me *SqlSessionStore) GetLastSessionRowCreateAt() (int64, error) { - query := `SELECT CREATEAT FROM Sessions ORDER BY CREATEAT DESC LIMIT 1` - var createAt int64 - err := me.GetReplicaX().Get(&createAt, query) - if err != nil { - return 0, errors.Wrapf(err, "failed to get last session createat") - } - - return createAt, nil -} - func (me SqlSessionStore) UpdateLastActivityAt(sessionId string, time int64) error { _, err := me.GetMasterX().Exec("UPDATE Sessions SET LastActivityAt = ? WHERE Id = ?", time, sessionId) if err != nil { diff --git a/server/channels/store/store.go b/server/channels/store/store.go index 1ac231cb06..dec4fa0f89 100644 --- a/server/channels/store/store.go +++ b/server/channels/store/store.go @@ -381,7 +381,6 @@ type PostStore interface { AnalyticsPostCount(options *model.PostCountOptions) (int64, error) ClearCaches() InvalidateLastPostTimeCache(channelID string) - GetLastPostRowCreateAt() (int64, error) GetPostsCreatedAt(channelID string, timestamp int64) ([]*model.Post, error) Overwrite(post *model.Post) (*model.Post, error) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error) @@ -510,7 +509,6 @@ type SessionStore interface { Remove(sessionIDOrToken string) error RemoveAllSessions() error PermanentDeleteSessionsByUser(teamID string) error - GetLastSessionRowCreateAt() (int64, error) UpdateExpiresAt(sessionID string, timestamp int64) error UpdateLastActivityAt(sessionID string, timestamp int64) error UpdateRoles(userID string, roles string) (string, error) diff --git a/server/channels/store/storetest/mocks/PostStore.go b/server/channels/store/storetest/mocks/PostStore.go index 3a57536e0f..727b5944dd 100644 --- a/server/channels/store/storetest/mocks/PostStore.go +++ b/server/channels/store/storetest/mocks/PostStore.go @@ -277,27 +277,6 @@ func (_m *PostStore) GetFlaggedPostsForTeam(userID string, teamID string, offset return r0, r1 } -// GetLastPostRowCreateAt provides a mock function with given fields: -func (_m *PostStore) GetLastPostRowCreateAt() (int64, error) { - ret := _m.Called() - - var r0 int64 - if rf, ok := ret.Get(0).(func() int64); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(int64) - } - - var r1 error - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - // GetMaxPostSize provides a mock function with given fields: func (_m *PostStore) GetMaxPostSize() int { ret := _m.Called() diff --git a/server/channels/store/storetest/mocks/SessionStore.go b/server/channels/store/storetest/mocks/SessionStore.go index 7d5be8a3fb..eea72a1d4e 100644 --- a/server/channels/store/storetest/mocks/SessionStore.go +++ b/server/channels/store/storetest/mocks/SessionStore.go @@ -74,27 +74,6 @@ func (_m *SessionStore) Get(ctx context.Context, sessionIDOrToken string) (*mode return r0, r1 } -// GetLastSessionRowCreateAt provides a mock function with given fields: -func (_m *SessionStore) GetLastSessionRowCreateAt() (int64, error) { - ret := _m.Called() - - var r0 int64 - if rf, ok := ret.Get(0).(func() int64); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(int64) - } - - var r1 error - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - // GetSessions provides a mock function with given fields: userID func (_m *SessionStore) GetSessions(userID string) ([]*model.Session, error) { ret := _m.Called(userID) diff --git a/server/channels/store/storetest/post_store.go b/server/channels/store/storetest/post_store.go index a47e096386..a718eb76ac 100644 --- a/server/channels/store/storetest/post_store.go +++ b/server/channels/store/storetest/post_store.go @@ -43,7 +43,6 @@ func TestPostStore(t *testing.T, ss store.Store, s SqlStore) { t.Run("GetFlaggedPosts", func(t *testing.T) { testPostStoreGetFlaggedPosts(t, ss) }) t.Run("GetFlaggedPostsForChannel", func(t *testing.T) { testPostStoreGetFlaggedPostsForChannel(t, ss) }) t.Run("GetPostsCreatedAt", func(t *testing.T) { testPostStoreGetPostsCreatedAt(t, ss) }) - t.Run("GetLastPostRowCreateAt", func(t *testing.T) { testPostStoreGetLastPostRowCreateAt(t, ss) }) t.Run("Overwrite", func(t *testing.T) { testPostStoreOverwrite(t, ss) }) t.Run("OverwriteMultiple", func(t *testing.T) { testPostStoreOverwriteMultiple(t, ss) }) t.Run("GetPostsByIds", func(t *testing.T) { testPostStoreGetPostsByIds(t, ss) }) @@ -3361,40 +3360,6 @@ func testPostStoreGetFlaggedPostsForChannel(t *testing.T, ss store.Store) { require.Len(t, r.Order, 0, "should have 0 posts") } -func testPostStoreGetLastPostRowCreateAt(t *testing.T, ss store.Store) { - teamId := model.NewId() - channel1, err := ss.Channel().Save(&model.Channel{ - TeamId: teamId, - DisplayName: "DisplayName1", - Name: "channel" + model.NewId(), - Type: model.ChannelTypeOpen, - }, -1) - require.NoError(t, err) - - createTime1 := model.GetMillis() + 1 - o0 := &model.Post{} - o0.ChannelId = channel1.Id - o0.UserId = model.NewId() - o0.Message = NewTestId() - o0.CreateAt = createTime1 - o0, err = ss.Post().Save(o0) - require.NoError(t, err) - - createTime2 := model.GetMillis() + 2 - - o1 := &model.Post{} - o1.ChannelId = o0.ChannelId - o1.UserId = model.NewId() - o1.Message = "Latest message" - o1.CreateAt = createTime2 - _, err = ss.Post().Save(o1) - require.NoError(t, err) - - createAt, err := ss.Post().GetLastPostRowCreateAt() - require.NoError(t, err) - assert.Equal(t, createAt, createTime2) -} - func testPostStoreGetPostsCreatedAt(t *testing.T, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ diff --git a/server/channels/store/storetest/session_store.go b/server/channels/store/storetest/session_store.go index fa3156979a..3c8fba5504 100644 --- a/server/channels/store/storetest/session_store.go +++ b/server/channels/store/storetest/session_store.go @@ -33,7 +33,6 @@ func TestSessionStore(t *testing.T, ss store.Store) { t.Run("SessionUpdateDeviceId2", func(t *testing.T) { testSessionUpdateDeviceId2(t, ss) }) t.Run("UpdateExpiresAt", func(t *testing.T) { testSessionStoreUpdateExpiresAt(t, ss) }) t.Run("UpdateLastActivityAt", func(t *testing.T) { testSessionStoreUpdateLastActivityAt(t, ss) }) - t.Run("GetLastSessionRowCreateAt", func(t *testing.T) { testSessionStoreGetLastSessionRowCreateAt(t, ss) }) t.Run("SessionCount", func(t *testing.T) { testSessionCount(t, ss) }) t.Run("GetSessionsExpired", func(t *testing.T) { testGetSessionsExpired(t, ss) }) t.Run("UpdateExpiredNotify", func(t *testing.T) { testUpdateExpiredNotify(t, ss) }) @@ -47,23 +46,6 @@ func testSessionStoreSave(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testSessionStoreGetLastSessionRowCreateAt(t *testing.T, ss store.Store) { - s1 := &model.Session{} - s1.UserId = model.NewId() - _, err := ss.Session().Save(s1) - require.NoError(t, err) - - latestSessionUserid := model.NewId() - s2 := &model.Session{} - s2.UserId = latestSessionUserid - latestSession, err := ss.Session().Save(s2) - require.NoError(t, err) - - createAt, err := ss.Session().GetLastSessionRowCreateAt() - require.NoError(t, err) - assert.Equal(t, latestSession.CreateAt, createAt) -} - func testSessionGet(t *testing.T, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() diff --git a/server/channels/store/timerlayer/timerlayer.go b/server/channels/store/timerlayer/timerlayer.go index 219154d479..8199138ac2 100644 --- a/server/channels/store/timerlayer/timerlayer.go +++ b/server/channels/store/timerlayer/timerlayer.go @@ -5483,22 +5483,6 @@ func (s *TimerLayerPostStore) GetFlaggedPostsForTeam(userID string, teamID strin return result, err } -func (s *TimerLayerPostStore) GetLastPostRowCreateAt() (int64, error) { - start := time.Now() - - result, err := s.PostStore.GetLastPostRowCreateAt() - - elapsed := float64(time.Since(start)) / float64(time.Second) - if s.Root.Metrics != nil { - success := "false" - if err == nil { - success = "true" - } - s.Root.Metrics.ObserveStoreMethodDuration("PostStore.GetLastPostRowCreateAt", success, elapsed) - } - return result, err -} - func (s *TimerLayerPostStore) GetMaxPostSize() int { start := time.Now() @@ -7370,22 +7354,6 @@ func (s *TimerLayerSessionStore) Get(ctx context.Context, sessionIDOrToken strin return result, err } -func (s *TimerLayerSessionStore) GetLastSessionRowCreateAt() (int64, error) { - start := time.Now() - - result, err := s.SessionStore.GetLastSessionRowCreateAt() - - elapsed := float64(time.Since(start)) / float64(time.Second) - if s.Root.Metrics != nil { - success := "false" - if err == nil { - success = "true" - } - s.Root.Metrics.ObserveStoreMethodDuration("SessionStore.GetLastSessionRowCreateAt", success, elapsed) - } - return result, err -} - func (s *TimerLayerSessionStore) GetSessions(userID string) ([]*model.Session, error) { start := time.Now() diff --git a/server/i18n/en.json b/server/i18n/en.json index 07b6d2219b..ded7d5c8a6 100644 --- a/server/i18n/en.json +++ b/server/i18n/en.json @@ -7,14 +7,6 @@ "id": "August", "translation": "August" }, - { - "id": "Boards", - "translation": "Boards" - }, - { - "id": "Channels", - "translation": "Channels" - }, { "id": "December", "translation": "December" @@ -51,10 +43,6 @@ "id": "October", "translation": "October" }, - { - "id": "Playbooks", - "translation": "Playbooks" - }, { "id": "September", "translation": "September" @@ -3763,42 +3751,6 @@ "id": "api.templates.reset_subject", "translation": "[{{ .SiteName }}] Reset your password" }, - { - "id": "api.templates.server_inactivity_button", - "translation": "Open Mattermost" - }, - { - "id": "api.templates.server_inactivity_footer_disclaimer", - "translation": "You received this one-time email because your Mattermost server was inactive for more than {{.Hours}} hours. This email was automatically generated by your Mattermost server." - }, - { - "id": "api.templates.server_inactivity_info", - "translation": "Come and check it out!" - }, - { - "id": "api.templates.server_inactivity_info_bullet", - "translation": "Guest Access to specified " - }, - { - "id": "api.templates.server_inactivity_info_bullet1", - "translation": "Workflow management with " - }, - { - "id": "api.templates.server_inactivity_info_bullet2", - "translation": "Manage tasks using " - }, - { - "id": "api.templates.server_inactivity_subject", - "translation": "Come open Mattermost to increase your team’s productivity!" - }, - { - "id": "api.templates.server_inactivity_subtitle", - "translation": "Hey {{.Name}}, we’ve noticed that your Mattermost server is collecting a bit of dust. Take a look at some features that can help lighten your team's workload." - }, - { - "id": "api.templates.server_inactivity_title", - "translation": "Unlock increased productivity with these awesome features" - }, { "id": "api.templates.signin_change_email.body.info", "translation": "You updated your sign-in method on {{ .SiteName }} to {{.Method}}." diff --git a/server/platform/services/telemetry/telemetry.go b/server/platform/services/telemetry/telemetry.go index cf3402a8c1..a214911f20 100644 --- a/server/platform/services/telemetry/telemetry.go +++ b/server/platform/services/telemetry/telemetry.go @@ -609,7 +609,6 @@ func (ts *TelemetryService) trackConfig() { "isdefault_login_button_border_color": isDefault(*cfg.EmailSettings.LoginButtonBorderColor, ""), "isdefault_login_button_text_color": isDefault(*cfg.EmailSettings.LoginButtonTextColor, ""), "smtp_server_timeout": *cfg.EmailSettings.SMTPServerTimeout, - "enable_inactivity_email": *cfg.EmailSettings.EnableInactivityEmail, }) ts.SendTelemetry(TrackConfigRate, map[string]any{ diff --git a/server/templates/inactivity_body.html b/server/templates/inactivity_body.html deleted file mode 100644 index 36bb7795cb..0000000000 --- a/server/templates/inactivity_body.html +++ /dev/null @@ -1,548 +0,0 @@ -{{define "inactivity_body"}} - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- - - - - - -
- -
-
-
- -
-
- -
- - - - - - -
- -
- - - - - - - - - - - - - - - - - - -
-
{{.Props.Title}}
-
-
{{.Props.SubTitle}}
-
-
-
    -
  • {{.Props.InfoBullet}}{{.Props.Channels}}
  • -
  • {{.Props.InfoBullet1}}{{.Props.Playbooks}}
  • -
  • {{.Props.InfoBullet2}}{{.Props.Boards}}
  • -
-
-
-
{{.Props.Info}}
-
- - - - -
- - {{.Props.Button}} - -
-
-
- -
-
- -
- - - - - - -
- -
- - - - - - -
- - - - - - -
- -
-
-
- -
-
- -
- - - - - - -
- -
- - - - - - - - - -
-
{{.Props.QuestionTitle}}
-
-
{{.Props.QuestionInfo}} - - {{.Props.SupportEmail}} - -
-
-
- -
-
- -
- - - - - - -
- -
- - - - - - - - - -
-
{{.Props.FooterDisclaimer}}
-
-
{{.Props.Organization}} - {{.Props.FooterV2}} -
-
-
- -
-
- -
-
- -
- - - - -{{end}} diff --git a/server/templates/inactivity_body.mjml b/server/templates/inactivity_body.mjml deleted file mode 100644 index 47b17fe42c..0000000000 --- a/server/templates/inactivity_body.mjml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - {{.Props.Title}} - - - {{.Props.SubTitle}} - - -
    -
  • {{.Props.InfoBullet}}{{.Props.Channels}}
  • -
  • {{.Props.InfoBullet1}}{{.Props.Playbooks}}
  • -
  • {{.Props.InfoBullet2}}{{.Props.Boards}}
  • -
-
- - {{.Props.Info}} - - {{.Props.Button}} -
-
- - - - - - - - - - - {{.Props.QuestionTitle}} - - - {{.Props.QuestionInfo}} - - {{.Props.SupportEmail}} - - - - - - - - - {{.Props.FooterDisclaimer}} - - - {{.Props.Organization}} - {{.Props.FooterV2}} - - - - -
-
-
diff --git a/server/tests/test-config.json b/server/tests/test-config.json index 3604556889..d98cbd98ca 100644 --- a/server/tests/test-config.json +++ b/server/tests/test-config.json @@ -167,7 +167,6 @@ "LoginButtonColor": "", "LoginButtonBorderColor": "", "LoginButtonTextColor": "", - "EnableInactivityEmail": true }, "RateLimitSettings": { "Enable": false, From ae6416e35749318f891fa041281cbd5e604508dd Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Mon, 27 Mar 2023 14:02:18 -0700 Subject: [PATCH 03/11] Remove configuration auto enable. (#22625) * Remove configuration auto enable. * i18n * Fix diff tests. --- model/config.go | 10 ---------- server/channels/api4/config.go | 5 ----- server/config/diff_test.go | 18 ------------------ server/i18n/en.json | 4 ---- 4 files changed, 37 deletions(-) diff --git a/model/config.go b/model/config.go index 3e0f60c8c7..6c5306950d 100644 --- a/model/config.go +++ b/model/config.go @@ -2867,21 +2867,11 @@ func (s *PluginSettings) SetDefaults(ls LogSettings) { s.PluginStates[PluginIdNPS] = &PluginState{Enable: ls.EnableDiagnostics == nil || *ls.EnableDiagnostics} } - if s.PluginStates[PluginIdPlaybooks] == nil { - // Enable the playbooks plugin by default - s.PluginStates[PluginIdPlaybooks] = &PluginState{Enable: true} - } - if s.PluginStates[PluginIdChannelExport] == nil && BuildEnterpriseReady == "true" { // Enable the channel export plugin by default s.PluginStates[PluginIdChannelExport] = &PluginState{Enable: true} } - if s.PluginStates[PluginIdFocalboard] == nil { - // Enable the focalboard plugin by default - s.PluginStates[PluginIdFocalboard] = &PluginState{Enable: true} - } - if s.PluginStates[PluginIdApps] == nil { // Enable the Apps plugin by default s.PluginStates[PluginIdApps] = &PluginState{Enable: true} diff --git a/server/channels/api4/config.go b/server/channels/api4/config.go index e1875e26bc..042636b17e 100644 --- a/server/channels/api4/config.go +++ b/server/channels/api4/config.go @@ -157,11 +157,6 @@ func updateConfig(c *Context, w http.ResponseWriter, r *http.Request) { *cfg.PluginSettings.MarketplaceURL = *appCfg.PluginSettings.MarketplaceURL } - if cfg.PluginSettings.PluginStates[model.PluginIdFocalboard].Enable && cfg.FeatureFlags.BoardsProduct { - c.Err = model.NewAppError("EnablePlugin", "app.plugin.product_mode.app_error", map[string]any{"Name": model.PluginIdFocalboard}, "", http.StatusInternalServerError) - return - } - // There are some settings that cannot be changed in a cloud env if c.App.Channels().License().IsCloud() { // Both of them cannot be nil since cfg.SetDefaults is called earlier for cfg, diff --git a/server/config/diff_test.go b/server/config/diff_test.go index 15ec6f41f7..bf1a79ab37 100644 --- a/server/config/diff_test.go +++ b/server/config/diff_test.go @@ -807,12 +807,6 @@ func TestDiff(t *testing.T) { "com.mattermost.nps": { Enable: !defaultConfigGen().PluginSettings.PluginStates["com.mattermost.nps"].Enable, }, - "focalboard": { - Enable: true, - }, - "playbooks": { - Enable: true, - }, "com.mattermost.apps": { Enable: true, }, @@ -845,12 +839,6 @@ func TestDiff(t *testing.T) { "com.mattermost.newplugin": { Enable: true, }, - "focalboard": { - Enable: true, - }, - "playbooks": { - Enable: true, - }, "com.mattermost.apps": { Enable: true, }, @@ -875,12 +863,6 @@ func TestDiff(t *testing.T) { Path: "PluginSettings.PluginStates", BaseVal: defaultConfigGen().PluginSettings.PluginStates, ActualVal: map[string]*model.PluginState{ - "focalboard": { - Enable: true, - }, - "playbooks": { - Enable: true, - }, "com.mattermost.apps": { Enable: true, }, diff --git a/server/i18n/en.json b/server/i18n/en.json index ded7d5c8a6..492fee9d58 100644 --- a/server/i18n/en.json +++ b/server/i18n/en.json @@ -6043,10 +6043,6 @@ "id": "app.plugin.not_installed.app_error", "translation": "Plugin is not installed." }, - { - "id": "app.plugin.product_mode.app_error", - "translation": "Plugin {{.Name}} cannot be enabled in product mode." - }, { "id": "app.plugin.remove.app_error", "translation": "Unable to delete plugin." From d0babfd254b02dfe8e7cfadf93644493c0de74f0 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Mon, 27 Mar 2023 14:04:28 -0700 Subject: [PATCH 04/11] Remove unhelpful test publish. (#22633) --- .github/workflows/channels-ci.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/channels-ci.yml b/.github/workflows/channels-ci.yml index 781cc6dd57..5fee62d830 100644 --- a/.github/workflows/channels-ci.yml +++ b/.github/workflows/channels-ci.yml @@ -154,13 +154,6 @@ jobs: npm run test-ci --workspace=channels npm run test-ci --workspace=platform/client npm run test-ci --workspace=playbooks - - name: ci/publish-test-results - uses: EnricoMi/publish-unit-test-result-action@a3caf02865c0604ad3dc1ecfcc5cdec9c41b7936 # v2.3.0 - if: always() - with: - junit_files: "webapp/channels/build/**/*.xml" - comment_mode: always - compare_to_earlier_commit: false build: runs-on: ubuntu-22.04 defaults: From dc4e7bf2ec5e98cbc7e720199d6f42424183f78d Mon Sep 17 00:00:00 2001 From: Ashish Dhama Date: Tue, 28 Mar 2023 06:17:42 +0530 Subject: [PATCH 05/11] [MM-51680] : Revert New Browse Channels UI modal changes (https://github.com/mattermost/mattermost-webapp/pull/11262) (#22613) * Revert https://github.com/mattermost/mattermost-webapp/pull/11262 * fix missing translation * fix indentation issue * fix imports in Update accessibility_modals_dialogs_spec.js --------- Co-authored-by: Mattermost Build --- .../channel/archived_channels_1_spec.js | 16 +- .../channels/channel/more_channels_spec.js | 16 +- .../channel/more_public_channels_spec.js | 14 +- .../new_channel_dropdown_spec.ts | 6 +- .../accessibility_modals_dialogs_spec.js | 26 +- .../enterprise/ldap/ldap_group_sync_spec.js | 4 +- .../src/actions/channel_actions.test.ts | 2 +- .../channels/src/actions/channel_actions.ts | 6 +- .../searchable_channel_list.test.jsx.snap | 46 ++ .../magnifying_glass_svg.tsx | 39 -- .../src/components/generic_modal.scss | 1 - .../__snapshots__/more_channels.test.tsx.snap | 136 ++++- .../searchable_channel_list.test.jsx.snap | 82 --- .../src/components/more_channels/index.ts | 29 +- .../more_channels/more_channels.scss | 295 ----------- .../more_channels/more_channels.test.tsx | 55 +- .../more_channels/more_channels.tsx | 194 +++---- .../more_channels/searchable_channel_list.jsx | 483 ------------------ .../components/searchable_channel_list.jsx | 319 ++++++++++++ .../searchable_channel_list.test.jsx | 15 +- webapp/channels/src/i18n/en.json | 15 +- .../components/_channel-invite-modal.scss | 2 - webapp/channels/src/utils/constants.tsx | 1 - .../src/generic_modal/generic_modal.tsx | 2 - 24 files changed, 631 insertions(+), 1173 deletions(-) create mode 100644 webapp/channels/src/components/__snapshots__/searchable_channel_list.test.jsx.snap delete mode 100644 webapp/channels/src/components/common/svg_images_components/magnifying_glass_svg.tsx delete mode 100644 webapp/channels/src/components/more_channels/__snapshots__/searchable_channel_list.test.jsx.snap delete mode 100644 webapp/channels/src/components/more_channels/more_channels.scss delete mode 100644 webapp/channels/src/components/more_channels/searchable_channel_list.jsx create mode 100644 webapp/channels/src/components/searchable_channel_list.jsx rename webapp/channels/src/components/{more_channels => }/searchable_channel_list.test.jsx (70%) diff --git a/e2e/cypress/tests/integration/channels/channel/archived_channels_1_spec.js b/e2e/cypress/tests/integration/channels/channel/archived_channels_1_spec.js index f6f6a3e186..1880dafb8a 100644 --- a/e2e/cypress/tests/integration/channels/channel/archived_channels_1_spec.js +++ b/e2e/cypress/tests/integration/channels/channel/archived_channels_1_spec.js @@ -97,7 +97,7 @@ describe('Leave an archived channel', () => { // # More channels modal opens cy.get('#moreChannelsModal').should('be.visible').within(() => { // # Click on dropdown - cy.findByText('Channel Type: Public').should('be.visible').click(); + cy.findByText('Show: Public Channels').should('be.visible').click(); // # Click archived channels cy.findByText('Archived Channels').click(); @@ -143,9 +143,9 @@ describe('Leave an archived channel', () => { cy.get('#showMoreChannels').click(); // # More channels modal opens - cy.get('#moreChannelsModal').should('be.visible').within(() => { + cy.get('.more-modal').should('be.visible').within(() => { // # Public channel list opens by default - cy.findByText('Channel Type: Public').should('be.visible').click(); + cy.findByText('Show: Public Channels').should('be.visible').click(); // # Click on archived channels cy.findByText('Archived Channels').click(); @@ -196,9 +196,9 @@ describe('Leave an archived channel', () => { cy.get('#showMoreChannels').click(); // # More channels modal opens - cy.get('#moreChannelsModal').should('be.visible').within(() => { + cy.get('.more-modal').should('be.visible').within(() => { // # Public channels are shown by default - cy.findByText('Channel Type: Public').should('be.visible').click(); + cy.findByText('Show: Public Channels').should('be.visible').click(); // # Go to archived channels cy.findByText('Archived Channels').click(); @@ -250,9 +250,9 @@ describe('Leave an archived channel', () => { cy.get('#showMoreChannels').click(); // # More channels modal opens - cy.get('#moreChannelsModal').should('be.visible').within(() => { + cy.get('.more-modal').should('be.visible').within(() => { // # Show public channels is visible by default - cy.findByText('Channel Type: Public').should('be.visible').click(); + cy.findByText('Show: Public Channels').should('be.visible').click(); // # Go to archived channels cy.findByText('Archived Channels').click(); @@ -286,7 +286,7 @@ describe('Leave an archived channel', () => { // # More channels modal opens and lands on public channels cy.get('#moreChannelsModal').should('be.visible').within(() => { - cy.findByText('Channel Type: Public').should('be.visible').click(); + cy.findByText('Show: Public Channels').should('be.visible').click(); // # Go to archived channels cy.findByText('Archived Channels').click(); diff --git a/e2e/cypress/tests/integration/channels/channel/more_channels_spec.js b/e2e/cypress/tests/integration/channels/channel/more_channels_spec.js index 7848ae787c..d83797db07 100644 --- a/e2e/cypress/tests/integration/channels/channel/more_channels_spec.js +++ b/e2e/cypress/tests/integration/channels/channel/more_channels_spec.js @@ -65,7 +65,7 @@ describe('Channels', () => { cy.get('#moreChannelsModal').should('be.visible').within(() => { // * Dropdown should be visible, defaulting to "Public Channels" - cy.get('#channelsMoreDropdown').should('be.visible').and('contain', 'Channel Type: Public').wait(TIMEOUTS.HALF_SEC); + cy.get('#channelsMoreDropdown').should('be.visible').and('contain', 'Show: Public Channels').wait(TIMEOUTS.HALF_SEC); cy.get('#searchChannelsTextbox').should('be.visible').type(testChannel.display_name).wait(TIMEOUTS.HALF_SEC); cy.get('#moreChannelsList').should('be.visible').children().should('have.length', 1).within(() => { @@ -80,8 +80,8 @@ describe('Channels', () => { }); }); - // # Verify that the modal is not closed - cy.get('#moreChannelsModal').should('exist'); + // # Verify that the modal is closed and it's redirected to the selected channel + cy.get('#moreChannelsModal').should('not.exist'); cy.url().should('include', `/${testTeam.name}/channels/${testChannel.name}`); // # Login as channel admin and go directly to the channel @@ -113,7 +113,7 @@ describe('Channels', () => { cy.findByText('Archived Channels').should('be.visible').click(); // * Channel test should be visible as an archived channel in the list - cy.wrap(el).should('contain', 'Channel Type: Archived'); + cy.wrap(el).should('contain', 'Show: Archived Channels'); }); cy.get('#searchChannelsTextbox').should('be.visible').type(testChannel.display_name).wait(TIMEOUTS.HALF_SEC); @@ -196,7 +196,7 @@ describe('Channels', () => { // * Dropdown should be visible, defaulting to "Public Channels" cy.get('#channelsMoreDropdown').should('be.visible').within((el) => { - cy.wrap(el).should('contain', 'Channel Type: Public'); + cy.wrap(el).should('contain', 'Show: Public Channels'); }); // * Users should be able to type and search @@ -207,12 +207,12 @@ describe('Channels', () => { cy.get('#moreChannelsModal').should('be.visible').within(() => { // * Users should be able to switch to "Archived Channels" list - cy.get('#channelsMoreDropdown').should('be.visible').and('contain', 'Channel Type: Public').click().within((el) => { + cy.get('#channelsMoreDropdown').should('be.visible').and('contain', 'Show: Public Channels').click().within((el) => { // # Click on archived channels item cy.findByText('Archived Channels').should('be.visible').click(); // * Modal should show the archived channels list - cy.wrap(el).should('contain', 'Channel Type: Archived'); + cy.wrap(el).should('contain', 'Show: Archived Channels'); }).wait(TIMEOUTS.HALF_SEC); cy.get('#searchChannelsTextbox').clear(); cy.get('#moreChannelsList').should('be.visible').children().should('have.length', 2); @@ -250,7 +250,7 @@ function verifyMoreChannelsModal(isEnabled) { // * Verify that the more channels modal is open and with or without option to view archived channels cy.get('#moreChannelsModal').should('be.visible').within(() => { if (isEnabled) { - cy.get('#channelsMoreDropdown').should('be.visible').and('have.text', 'Channel Type: Public'); + cy.get('#channelsMoreDropdown').should('be.visible').and('have.text', 'Show: Public Channels'); } else { cy.get('#channelsMoreDropdown').should('not.exist'); } diff --git a/e2e/cypress/tests/integration/channels/channel/more_public_channels_spec.js b/e2e/cypress/tests/integration/channels/channel/more_public_channels_spec.js index 0d38de9467..5808654971 100644 --- a/e2e/cypress/tests/integration/channels/channel/more_public_channels_spec.js +++ b/e2e/cypress/tests/integration/channels/channel/more_public_channels_spec.js @@ -11,7 +11,8 @@ // Group: @channels @channel function verifyNoChannelToJoinMessage(isVisible) { - cy.findByText('No public channels').should(isVisible ? 'be.visible' : 'not.exist'); + cy.findByText('No more channels to join').should(isVisible ? 'be.visible' : 'not.exist'); + cy.findByText('Click \'Create New Channel\' to make a new one').should(isVisible ? 'be.visible' : 'not.exist'); } describe('more public channels', () => { @@ -52,10 +53,7 @@ describe('more public channels', () => { cy.uiBrowseOrCreateChannel('Browse Channels').click(); // * Assert that the moreChannelsModel is visible - cy.findByRole('dialog', {name: 'Browse Channels'}).should('be.visible').within(() => { - // # Click hide joined checkbox - cy.findByText('Hide Joined').should('be.visible').click(); - + cy.findByRole('dialog', {name: 'More Channels'}).should('be.visible').within(() => { // * Assert that the moreChannelsList is visible and the number of channels is 31 cy.get('#moreChannelsList').should('be.visible').children().should('have.length', 31); @@ -88,9 +86,9 @@ describe('more public channels', () => { cy.uiBrowseOrCreateChannel('Browse Channels').click(); // * Assert the moreChannelsModel is visible - cy.findByRole('dialog', {name: 'Browse Channels'}).should('be.visible').within(() => { - // # Click hide joined checkbox - cy.findByText('Hide Joined').should('be.visible').click(); + cy.findByRole('dialog', {name: 'More Channels'}).should('be.visible').within(() => { + // * Assert the moreChannelsList does have one child + cy.get('#moreChannelsList').should('be.visible').children().should('have.length', 1); // * Assert that the "No more channels to join" message is visible verifyNoChannelToJoinMessage(true); diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts b/e2e/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts index b94d16acfa..17114e21aa 100644 --- a/e2e/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts +++ b/e2e/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts @@ -68,13 +68,13 @@ describe('Channel sidebar', () => { cy.get('.AddChannelDropdown .MenuItem:contains(Browse Channels) button').should('be.visible').click(); // * Verify that the more channels modal is visible - cy.get('#moreChannelsModal').should('be.visible'); + cy.get('.more-modal').should('be.visible'); // Click the Off-Topic channel - cy.findByText('Off-Topic').should('be.visible').click(); + cy.get('.more-modal button:contains(Off-Topic)').should('be.visible').click(); // Verify that new channel is in the sidebar and is active - cy.get('#moreChannelsModal').should('exist'); + cy.get('.more-modal').should('not.exist'); cy.url().should('include', `/${teamName}/channels/off-topic`); cy.get('#channelHeaderTitle').should('contain', 'Off-Topic'); cy.get('.SidebarChannel.active:contains(Off-Topic)').should('be.visible'); diff --git a/e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js b/e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js index adf5478b55..a068d15f9f 100644 --- a/e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js +++ b/e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js @@ -104,26 +104,30 @@ describe('Verify Accessibility Support in Modals & Dialogs', () => { cy.uiBrowseOrCreateChannel('Browse Channels').click(); // * Verify the accessibility support in More Channels Dialog - cy.findByRole('dialog', {name: 'Browse Channels'}).within(() => { - cy.findByRole('heading', {name: 'Browse Channels'}); + cy.findByRole('dialog', {name: 'More Channels'}).within(() => { + cy.findByRole('heading', {name: 'More Channels'}); // * Verify the accessibility support in search input cy.findByPlaceholderText('Search channels'); - cy.get('#moreChannelsList').should('be.visible').then((el) => { + cy.waitUntil(() => cy.get('#moreChannelsList').then((el) => { return el[0].children.length === 2; - }); + })); - // # Hide already joined channels - cy.findByText('Hide Joined').click(); - - // # Focus on the Create Channel button and TAB three time - cy.get('#createNewChannelButton').focus().tab().tab().tab(); + // # Focus on the Create Channel button and TAB twice + cy.get('#createNewChannel').focus().tab().tab(); // * Verify channel name is highlighted and reader reads the channel name and channel description - cy.get('#moreChannelsList').within(() => { + cy.get('#moreChannelsList').children().eq(0).within(() => { const selectedChannel = getChannelAriaLabel(channel); - cy.findByLabelText(selectedChannel).should('be.visible').should('be.focused'); + cy.findByLabelText(selectedChannel).should('be.focused'); + + // * Press Tab and verify if focus changes to Join button + cy.focused().tab(); + cy.findByText('Join').parent().should('be.focused'); + + // * Verify previous button should no longer be focused + cy.findByLabelText(selectedChannel).should('not.be.focused'); }); // * Press Tab again and verify if focus changes to next row diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js b/e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js index 75264a2aea..c7660753e0 100644 --- a/e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js +++ b/e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js @@ -234,7 +234,7 @@ context('ldap', () => { // * Search private channel name and make sure it isn't there in public channel directory cy.get('#searchChannelsTextbox').type(testChannel.display_name); - cy.get('#moreChannelsList').should('include.text', 'No results for'); + cy.get('#moreChannelsList').should('include.text', 'No more channels to join'); }); it('MM-T2629 - Private to public - More....', () => { @@ -473,7 +473,7 @@ context('ldap', () => { // * Search private channel name and make sure it isn't there in public channel directory cy.get('#searchChannelsTextbox').type(publicChannel.display_name); - cy.get('#moreChannelsList').should('include.text', 'No results for'); + cy.get('#moreChannelsList').should('include.text', 'No more channels to join'); }); }); diff --git a/webapp/channels/src/actions/channel_actions.test.ts b/webapp/channels/src/actions/channel_actions.test.ts index aac40512ec..6b247396b2 100644 --- a/webapp/channels/src/actions/channel_actions.test.ts +++ b/webapp/channels/src/actions/channel_actions.test.ts @@ -167,7 +167,7 @@ describe('Actions.Channel', () => { }], }]; - await testStore.dispatch(searchMoreChannels('', false, true)); + await testStore.dispatch(searchMoreChannels('', false)); expect(testStore.getActions()).toEqual(expectedActions); }); diff --git a/webapp/channels/src/actions/channel_actions.ts b/webapp/channels/src/actions/channel_actions.ts index 0add017514..b3c9ffb156 100644 --- a/webapp/channels/src/actions/channel_actions.ts +++ b/webapp/channels/src/actions/channel_actions.ts @@ -109,7 +109,7 @@ export function loadChannelsForCurrentUser(): ActionFunc { }; } -export function searchMoreChannels(term: string, showArchivedChannels: boolean, hideJoinedChannels: boolean): ActionFunc { +export function searchMoreChannels(term: string, showArchivedChannels: boolean): ActionFunc { return async (dispatch, getState) => { const state = getState(); const teamId = getCurrentTeamId(state); @@ -121,7 +121,9 @@ export function searchMoreChannels(term: string, showArchivedChannels: boolean, const {data, error} = await dispatch(ChannelActions.searchChannels(teamId, term, showArchivedChannels)); if (data) { const myMembers = getMyChannelMemberships(state); - const channels = hideJoinedChannels ? (data as Channel[]).filter((channel) => !myMembers[channel.id]) : data; + + // When searching public channels, only get channels user is not a member of + const channels = showArchivedChannels ? data : (data as Channel[]).filter((c) => !myMembers[c.id]); return {data: channels}; } diff --git a/webapp/channels/src/components/__snapshots__/searchable_channel_list.test.jsx.snap b/webapp/channels/src/components/__snapshots__/searchable_channel_list.test.jsx.snap new file mode 100644 index 0000000000..eff77678a4 --- /dev/null +++ b/webapp/channels/src/components/__snapshots__/searchable_channel_list.test.jsx.snap @@ -0,0 +1,46 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`components/SearchableChannelList should match init snapshot 1`] = ` +
+
+
+ +
+
+
+
+ +
+
+
+
+`; diff --git a/webapp/channels/src/components/common/svg_images_components/magnifying_glass_svg.tsx b/webapp/channels/src/components/common/svg_images_components/magnifying_glass_svg.tsx deleted file mode 100644 index 75b2ec8d3d..0000000000 --- a/webapp/channels/src/components/common/svg_images_components/magnifying_glass_svg.tsx +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. -// See LICENSE.txt for license information. - -import React, {SVGProps} from 'react'; - -const SvgComponent = (props: SVGProps) => ( - - - - - - - -); - -export default SvgComponent; diff --git a/webapp/channels/src/components/generic_modal.scss b/webapp/channels/src/components/generic_modal.scss index 32ce008f2a..6cbca8629c 100644 --- a/webapp/channels/src/components/generic_modal.scss +++ b/webapp/channels/src/components/generic_modal.scss @@ -133,7 +133,6 @@ } .GenericModal__header { - width: 85%; padding: 0; border-top-left-radius: 12px; border-top-right-radius: 12px; diff --git a/webapp/channels/src/components/more_channels/__snapshots__/more_channels.test.tsx.snap b/webapp/channels/src/components/more_channels/__snapshots__/more_channels.test.tsx.snap index 1f2cd1c3d0..fe1acbf101 100644 --- a/webapp/channels/src/components/more_channels/__snapshots__/more_channels.test.tsx.snap +++ b/webapp/channels/src/components/more_channels/__snapshots__/more_channels.test.tsx.snap @@ -1,15 +1,53 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`components/MoreChannels should match snapshot and state 1`] = ` - + + + + + - - } - id="moreChannelsModal" - keyboardEscape={true} - modalHeaderText={ - + + + +

+ +

+ + } + search={[Function]} + shouldShowArchivedChannels={false} + toggleArchivedChannels={[Function]} /> - } - onExited={[Function]} - show={true} -> - -
+ + `; diff --git a/webapp/channels/src/components/more_channels/__snapshots__/searchable_channel_list.test.jsx.snap b/webapp/channels/src/components/more_channels/__snapshots__/searchable_channel_list.test.jsx.snap deleted file mode 100644 index 1118d16bf2..0000000000 --- a/webapp/channels/src/components/more_channels/__snapshots__/searchable_channel_list.test.jsx.snap +++ /dev/null @@ -1,82 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`components/SearchableChannelList should match init snapshot 1`] = ` -
-
- - -
-
- - 0 Results - -
-
-
-
-
-
-
- -
-
-
-
-`; diff --git a/webapp/channels/src/components/more_channels/index.ts b/webapp/channels/src/components/more_channels/index.ts index 7afbea20e2..d21425d99e 100644 --- a/webapp/channels/src/components/more_channels/index.ts +++ b/webapp/channels/src/components/more_channels/index.ts @@ -12,29 +12,24 @@ import {getConfig} from 'mattermost-redux/selectors/entities/general'; import {Action, ActionResult} from 'mattermost-redux/types/actions'; import {getCurrentTeam} from 'mattermost-redux/selectors/entities/teams'; import {getCurrentUserId} from 'mattermost-redux/selectors/entities/users'; -import {getChannels, getArchivedChannels, joinChannel, getChannelStats} from 'mattermost-redux/actions/channels'; -import {getChannelsInCurrentTeam, getMyChannelMemberships, getAllChannelStats} from 'mattermost-redux/selectors/entities/channels'; - -import {Constants, StoragePrefixes} from 'utils/constants'; +import {getChannels, getArchivedChannels, joinChannel} from 'mattermost-redux/actions/channels'; +import {getOtherChannels, getChannelsInCurrentTeam} from 'mattermost-redux/selectors/entities/channels'; import {searchMoreChannels} from 'actions/channel_actions'; import {openModal, closeModal} from 'actions/views/modals'; -import {setGlobalItem} from 'actions/storage'; import {closeRightHandSide} from 'actions/views/rhs'; import {getIsRhsOpen, getRhsState} from 'selectors/rhs'; -import {GlobalState} from 'types/store'; import {ModalData} from 'types/actions'; - -import {makeGetGlobalItem} from 'selectors/storage'; +import {GlobalState} from 'types/store'; import MoreChannels from './more_channels'; -const getChannelsWithoutArchived = createSelector( - 'getChannelsWithoutArchived', - getChannelsInCurrentTeam, - (channels: Channel[]) => channels && channels.filter((c) => c.delete_at === 0 && c.type !== Constants.PRIVATE_CHANNEL), +const getNotArchivedOtherChannels = createSelector( + 'getNotArchivedOtherChannels', + getOtherChannels, + (channels: Channel[]) => channels && channels.filter((c) => c.delete_at === 0), ); const getArchivedOtherChannels = createSelector( @@ -45,19 +40,15 @@ const getArchivedOtherChannels = createSelector( function mapStateToProps(state: GlobalState) { const team = getCurrentTeam(state) || {}; - const getGlobalItem = makeGetGlobalItem(StoragePrefixes.HIDE_JOINED_CHANNELS, 'false'); return { - channels: getChannelsWithoutArchived(state) || [], + channels: getNotArchivedOtherChannels(state) || [], archivedChannels: getArchivedOtherChannels(state) || [], currentUserId: getCurrentUserId(state), teamId: team.id, teamName: team.name, channelsRequestStarted: state.requests.channels.getChannels.status === RequestStatus.STARTED, canShowArchivedChannels: (getConfig(state).ExperimentalViewArchivedChannels === 'true'), - myChannelMemberships: getMyChannelMemberships(state) || {}, - allChannelStats: getAllChannelStats(state) || {}, - shouldHideJoinedChannels: getGlobalItem(state) === 'true', rhsState: getRhsState(state), rhsOpen: getIsRhsOpen(state), }; @@ -70,8 +61,6 @@ type Actions = { searchMoreChannels: (term: string, shouldShowArchivedChannels: boolean) => Promise; openModal:

(modalData: ModalData

) => void; closeModal: (modalId: string) => void; - getChannelStats: (channelId: string) => void; - setGlobalItem: (name: string, value: string) => void; closeRightHandSide: () => void; } @@ -84,8 +73,6 @@ function mapDispatchToProps(dispatch: Dispatch) { searchMoreChannels, openModal, closeModal, - getChannelStats, - setGlobalItem, closeRightHandSide, }, dispatch), }; diff --git a/webapp/channels/src/components/more_channels/more_channels.scss b/webapp/channels/src/components/more_channels/more_channels.scss deleted file mode 100644 index d86fd138a7..0000000000 --- a/webapp/channels/src/components/more_channels/more_channels.scss +++ /dev/null @@ -1,295 +0,0 @@ -@charset 'UTF-8'; - -#moreChannelsModal { - .modal-content { - min-height: 600px; - max-height: calc(50vh - 240px); - } - - .modal-dialog { - margin-top: calc(45vh - 240px) !important; - } - - .filter-row--full { - position: relative; - margin: 0 32px; - - .input-clear { - top: 16px; - right: 16px; - } - - #searchIcon { - position: absolute; - top: 14px; - left: 16px; - color: rgba(var(--center-channel-color-rgb), 0.64); - pointer-events: none; - } - - #searchChannelsTextbox { - height: 48px; - padding-left: 40px; - border: 1px solid rgba(var(--center-channel-color-rgb), 0.16); - box-shadow: none; - font-size: 16px; - - &::placeholder { - color: var(--center-channel-color); - } - - &:focus { - border: 2px solid var(--button-bg); - } - } - } - - .more-modal__dropdown { - display: flex; - align-items: center; - justify-content: space-between; - padding: 8px 32px; - border-bottom: solid 1px rgba(var(--center-channel-color-rgb), 0.16); - margin: 0; - - span { - color: rgba(var(--center-channel-color-rgb), 0.64); - font-size: 12px; - line-height: 16px; - } - - .MenuItem__primary-text { - width: 100%; - color: var(--center-channel-color); - font-size: 14px; - font-weight: 400; - line-height: 20px; - - svg { - margin-left: auto; - } - } - - .Menu__content { - border-color: rgba(var(--center-channel-color-rgb), 0.16); - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); - } - - #channelCountLabel { - color: var(--center-channel-color); - font-size: 12px; - font-weight: 400; - } - - #modalPreferenceContainer { - display: flex; - align-items: center; - justify-content: center; - - .get-app__checkbox { - display: flex; - width: 16px; - height: 16px; - align-items: center; - border: 1px solid rgba(var(--center-channel-color-rgb), 0.24); - } - - #hideJoinedPreferenceCheckbox { - display: flex; - align-items: center; - cursor: pointer; - } - - #channelsMoreDropdown { - margin: 0 8px; - } - - #menuWrapper { - display: flex; - align-items: center; - justify-content: center; - padding: 4px 6px 4px 8px; - } - - .MenuWrapper:hover { - background-color: rgba(var(--center-channel-color-rgb), 0.08); - border-radius: 4px; - } - - .MenuWrapper--open { - background-color: rgba(var(--button-bg-rgb), 0.12); - border-radius: 4px; - - &:hover { - background-color: rgba(var(--button-bg-rgb), 0.12); - } - } - } - } - - .modal-body { - padding: 15px 0 0; - - .filtered-user-list { - height: 500px; - } - - .more-modal__row { - padding: 0 32px; - border-bottom: none; - - .more-modal__details { - padding-left: 0; - color: rgba(var(--center-channel-color-rgb), 0.56); - - svg { - flex-shrink: 0; - } - - .more-modal__name { - align-items: center; - margin-top: 0; - - span { - color: var(--center-channel-color); - font-weight: 500; - } - } - - #channelPurposeContainer { - display: flex; - align-items: center; - justify-content: flex-start; - - .dot { - width: 3px; - height: 3px; - flex-shrink: 0; - background-color: rgba(var(--center-channel-color-rgb), 0.56); - border-radius: 50%; - } - - .more-modal__description { - margin-left: 4px; - font-weight: 400; - } - - #membershipIndicatorContainer { - display: flex; - align-items: center; - - span, - svg { - color: var(--online-indicator); - } - } - - span { - margin: 0 4px; - font-size: 12px; - font-weight: 600; - line-height: 12px; - opacity: 1; - } - } - } - - .more-modal__actions { - button { - display: none; - min-width: 54px; - height: 32px; - font-size: 12px; - font-weight: 600; - } - } - } - - .more-modal__row:hover, - .more-modal__row:focus { - background-color: rgba(var(--center-channel-color-rgb), 0.08); - cursor: pointer; - - .more-modal__actions { - .primaryButton, - .outlineButton { - display: inline-block; - } - } - } - - .form-group { - padding: 0 32px; - margin-bottom: 0; - } - - ::-webkit-scrollbar { - width: 4px; - } - - ::-webkit-scrollbar-track { - background: none; - } - } - - .modal-header { - .GenericModal__header { - display: flex; - width: 95%; - align-items: center; - justify-content: space-between; - padding-right: 4px; - } - - .close { - top: 22px; - } - } - - .outlineButton { - border: 1px solid var(--button-bg); - background: none; - border-radius: 4px; - color: var(--button-bg); - font-size: 12px; - font-weight: 600; - line-height: 16px; - } - - .outlineButton:hover { - background-color: rgba(var(--button-bg-rgb), 0.08); - } - - .filter-controls { - padding: 0; - - button { - min-width: 72px; - margin: 8px 32px; - } - } -} - -#moreChannelsList { - .primary-message { - margin-top: 8px; - color: var(--center-channel-color); - line-height: 28px; - } - - .secondary-message { - margin-bottom: 30px; - } - - .primaryButton { - background-color: var(--button-bg); - border-radius: 4px; - color: var(--button-color); - font-size: 14px; - font-weight: 600; - } - - #createNewChannelButton { - padding: 10px 20px; - } -} diff --git a/webapp/channels/src/components/more_channels/more_channels.test.tsx b/webapp/channels/src/components/more_channels/more_channels.test.tsx index 4d05021650..a591bfef5b 100644 --- a/webapp/channels/src/components/more_channels/more_channels.test.tsx +++ b/webapp/channels/src/components/more_channels/more_channels.test.tsx @@ -7,7 +7,7 @@ import {shallow} from 'enzyme'; import {ActionResult} from 'mattermost-redux/types/actions'; import MoreChannels, {Props} from 'components/more_channels/more_channels'; -import SearchableChannelList from 'components/more_channels/searchable_channel_list.jsx'; +import SearchableChannelList from 'components/searchable_channel_list.jsx'; import {getHistory} from 'utils/browser_history'; import {TestHelper} from 'utils/test_helper'; @@ -59,16 +59,7 @@ describe('components/MoreChannels', () => { }; const baseProps: Props = { - channels: [ - TestHelper.getChannelMock({ - id: 'channel-1', - name: 'channel-1', - }), - TestHelper.getChannelMock({ - id: 'channel-2', - name: 'channel-2', - }), - ], + channels: [TestHelper.getChannelMock({})], archivedChannels: [TestHelper.getChannelMock({ id: 'channel_id_2', team_id: 'channel_team_2', @@ -82,14 +73,6 @@ describe('components/MoreChannels', () => { teamName: 'team_name', channelsRequestStarted: false, canShowArchivedChannels: true, - myChannelMemberships: { - 'channel-2': TestHelper.getChannelMembershipMock({ - channel_id: 'channel-2', - user_id: 'user-1', - }), - }, - allChannelStats: {}, - shouldHideJoinedChannels: false, actions: { getChannels: jest.fn(), getArchivedChannels: jest.fn(), @@ -97,8 +80,6 @@ describe('components/MoreChannels', () => { searchMoreChannels: jest.fn(channelActions.searchMoreChannels), openModal: jest.fn(), closeModal: jest.fn(), - getChannelStats: jest.fn(), - setGlobalItem: jest.fn(), closeRightHandSide: jest.fn(), }, }; @@ -110,6 +91,7 @@ describe('components/MoreChannels', () => { expect(wrapper).toMatchSnapshot(); expect(wrapper.state('searchedChannels')).toEqual([]); + expect(wrapper.state('show')).toEqual(true); expect(wrapper.state('shouldShowArchivedChannels')).toEqual(false); expect(wrapper.state('search')).toEqual(false); expect(wrapper.state('serverError')).toBeNull(); @@ -120,6 +102,16 @@ describe('components/MoreChannels', () => { expect(wrapper.instance().props.actions.getChannels).toHaveBeenCalledWith(wrapper.instance().props.teamId, 0, 100); }); + test('should match state on handleHide', () => { + const wrapper = shallow( + , + ); + wrapper.setState({show: true}); + + wrapper.instance().handleHide(); + expect(wrapper.state('show')).toEqual(false); + }); + test('should call closeModal on handleExit', () => { const wrapper = shallow( , @@ -160,7 +152,7 @@ describe('components/MoreChannels', () => { , ); - wrapper.setState({loading: false, search: true, searching: true}); + wrapper.setState({search: true, searching: true}); const searchList = wrapper.find(SearchableChannelList); expect(searchList.props().loading).toEqual(true); }); @@ -219,6 +211,7 @@ describe('components/MoreChannels', () => { process.nextTick(() => { expect(getHistory().push).toHaveBeenCalledTimes(1); expect(callback).toHaveBeenCalledTimes(1); + expect(wrapper.state('show')).toEqual(false); done(); }); }); @@ -256,7 +249,7 @@ describe('components/MoreChannels', () => { jest.runOnlyPendingTimers(); expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledTimes(1); - expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledWith('fail', false, false); + expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledWith('fail', false); process.nextTick(() => { expect(wrapper.state('search')).toEqual(true); expect(wrapper.state('searching')).toEqual(false); @@ -283,7 +276,7 @@ describe('components/MoreChannels', () => { jest.runOnlyPendingTimers(); expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledTimes(1); - expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledWith('channel', false, false); + expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledWith('channel', false); process.nextTick(() => { expect(wrapper.state('search')).toEqual(true); expect(wrapper.state('searching')).toEqual(false); @@ -310,7 +303,7 @@ describe('components/MoreChannels', () => { jest.runOnlyPendingTimers(); expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledTimes(1); - expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledWith('channel', true, false); + expect(wrapper.instance().props.actions.searchMoreChannels).toHaveBeenCalledWith('channel', true); process.nextTick(() => { expect(wrapper.state('search')).toEqual(true); expect(wrapper.state('searching')).toEqual(false); @@ -318,16 +311,4 @@ describe('components/MoreChannels', () => { done(); }); }); - - test('should hide joined channels from channels props when shouldHideJoinedChannels prop is true', () => { - const props = { - ...baseProps, - shouldHideJoinedChannels: true, - }; - const wrapper = shallow( - , - ); - - expect(wrapper.instance().activeChannels).not.toContain(baseProps.channels[1]); - }); }); diff --git a/webapp/channels/src/components/more_channels/more_channels.tsx b/webapp/channels/src/components/more_channels/more_channels.tsx index 235744166e..b51606db19 100644 --- a/webapp/channels/src/components/more_channels/more_channels.tsx +++ b/webapp/channels/src/components/more_channels/more_channels.tsx @@ -2,32 +2,23 @@ // See LICENSE.txt for license information. import React from 'react'; +import {Modal} from 'react-bootstrap'; import {FormattedMessage} from 'react-intl'; -import classNames from 'classnames'; - import {ActionResult} from 'mattermost-redux/types/actions'; -import {Channel, ChannelMembership, ChannelStats} from '@mattermost/types/channels'; +import {Channel} from '@mattermost/types/channels'; import Permissions from 'mattermost-redux/constants/permissions'; -import {RelationOneToOne} from '@mattermost/types/utilities'; - import NewChannelModal from 'components/new_channel_modal/new_channel_modal'; +import SearchableChannelList from 'components/searchable_channel_list.jsx'; import TeamPermissionGate from 'components/permissions_gates/team_permission_gate'; -import GenericModal from 'components/generic_modal'; -import LoadingScreen from 'components/loading_screen'; import {ModalData} from 'types/actions'; import {RhsState} from 'types/store/rhs'; import {getHistory} from 'utils/browser_history'; -import {ModalIdentifiers, StoragePrefixes, RHSStates} from 'utils/constants'; +import {ModalIdentifiers, RHSStates} from 'utils/constants'; import {getRelativeChannelURL} from 'utils/url'; -import {localizeMessage} from 'utils/utils'; - -import SearchableChannelList from './searchable_channel_list'; - -import './more_channels.scss'; const CHANNELS_CHUNK_SIZE = 50; const CHANNELS_PER_PAGE = 50; @@ -37,15 +28,9 @@ type Actions = { getChannels: (teamId: string, page: number, perPage: number) => void; getArchivedChannels: (teamId: string, page: number, channelsPerPage: number) => void; joinChannel: (currentUserId: string, teamId: string, channelId: string) => Promise; - searchMoreChannels: (term: string, shouldShowArchivedChannels: boolean, shouldHideJoinedChannels: boolean) => Promise; + searchMoreChannels: (term: string, shouldShowArchivedChannels: boolean) => Promise; openModal:

(modalData: ModalData

) => void; closeModal: (modalId: string) => void; - getChannelStats: (channelId: string) => void; - - /* - * Function to set a key-value pair in the local storage - */ - setGlobalItem: (name: string, value: string) => void; closeRightHandSide: () => void; } @@ -58,27 +43,23 @@ export type Props = { channelsRequestStarted?: boolean; canShowArchivedChannels?: boolean; morePublicChannelsModalType?: string; - myChannelMemberships: RelationOneToOne; - allChannelStats: RelationOneToOne; - shouldHideJoinedChannels: boolean; rhsState?: RhsState; rhsOpen?: boolean; actions: Actions; } type State = { + show: boolean; shouldShowArchivedChannels: boolean; search: boolean; searchedChannels: Channel[]; serverError: React.ReactNode | string; searching: boolean; searchTerm: string; - loading: boolean; } export default class MoreChannels extends React.PureComponent { public searchTimeoutId: number; - activeChannels: Channel[] = []; constructor(props: Props) { super(props); @@ -86,27 +67,25 @@ export default class MoreChannels extends React.PureComponent { this.searchTimeoutId = 0; this.state = { + show: true, shouldShowArchivedChannels: this.props.morePublicChannelsModalType === 'private', search: false, searchedChannels: [], serverError: null, searching: false, searchTerm: '', - loading: true, }; } - async componentDidMount() { - await this.props.actions.getChannels(this.props.teamId, 0, CHANNELS_CHUNK_SIZE * 2); + componentDidMount() { + this.props.actions.getChannels(this.props.teamId, 0, CHANNELS_CHUNK_SIZE * 2); if (this.props.canShowArchivedChannels) { - await this.props.actions.getArchivedChannels(this.props.teamId, 0, CHANNELS_CHUNK_SIZE * 2); + this.props.actions.getArchivedChannels(this.props.teamId, 0, CHANNELS_CHUNK_SIZE * 2); } - await this.props.channels.forEach((channel) => this.props.actions.getChannelStats(channel.id)); - this.loadComplete(); } - loadComplete = () => { - this.setState({loading: false}); + handleHide = () => { + this.setState({show: false}); } handleNewChannel = () => { @@ -145,17 +124,14 @@ export default class MoreChannels extends React.PureComponent { handleJoin = async (channel: Channel, done: () => void) => { const {actions, currentUserId, teamId, teamName} = this.props; - let result; + const result = await actions.joinChannel(currentUserId, teamId, channel.id); - if (!this.isMemberOfChannel(channel.id)) { - result = await actions.joinChannel(currentUserId, teamId, channel.id); - } - - if (result?.error) { + if (result.error) { this.setState({serverError: result.error.message}); } else { getHistory().push(getRelativeChannelURL(teamName, channel.name)); this.closeEditRHS(); + this.handleHide(); } if (done) { @@ -177,7 +153,7 @@ export default class MoreChannels extends React.PureComponent { const searchTimeoutId = window.setTimeout( async () => { try { - const {data} = await this.props.actions.searchMoreChannels(term, this.state.shouldShowArchivedChannels, this.props.shouldHideJoinedChannels); + const {data} = await this.props.actions.searchMoreChannels(term, this.state.shouldShowArchivedChannels); if (searchTimeoutId !== this.searchTimeoutId) { return; } @@ -207,47 +183,29 @@ export default class MoreChannels extends React.PureComponent { this.setState({shouldShowArchivedChannels}); } - isMemberOfChannel(channelId: string) { - return this.props.myChannelMemberships[channelId]; - } - - handleShowJoinedChannelsPreference = (shouldHideJoinedChannels: boolean) => { - // search again when switching channels to update search results - this.search(this.state.searchTerm); - this.props.actions.setGlobalItem(StoragePrefixes.HIDE_JOINED_CHANNELS, shouldHideJoinedChannels.toString()); - } - - otherChannelsWithoutJoined = this.props.channels.filter((channel) => !this.isMemberOfChannel(channel.id)); - archivedChannelsWithoutJoined = this.props.archivedChannels.filter((channel) => !this.isMemberOfChannel(channel.id)); - render() { const { channels, archivedChannels, teamId, channelsRequestStarted, - shouldHideJoinedChannels, } = this.props; const { search, searchedChannels, serverError: serverErrorState, + show, searching, shouldShowArchivedChannels, } = this.state; - const otherChannelsWithoutJoined = channels.filter((channel) => !this.isMemberOfChannel(channel.id)); - const archivedChannelsWithoutJoined = archivedChannels.filter((channel) => !this.isMemberOfChannel(channel.id)); + let activeChannels; - if (shouldShowArchivedChannels && shouldHideJoinedChannels) { - this.activeChannels = search ? searchedChannels : archivedChannelsWithoutJoined; - } else if (shouldShowArchivedChannels && !shouldHideJoinedChannels) { - this.activeChannels = search ? searchedChannels : archivedChannels; - } else if (!shouldShowArchivedChannels && shouldHideJoinedChannels) { - this.activeChannels = search ? searchedChannels : otherChannelsWithoutJoined; + if (shouldShowArchivedChannels) { + activeChannels = search ? searchedChannels : archivedChannels; } else { - this.activeChannels = search ? searchedChannels : channels; + activeChannels = search ? searchedChannels : channels; } let serverError; @@ -256,87 +214,87 @@ export default class MoreChannels extends React.PureComponent {

; } - const createNewChannelButton = (className: string, icon?: JSX.Element) => { - const buttonClassName = classNames('btn', className); - return ( - + - - ); - }; - - const noResultsText = ( - <> -

-

- {createNewChannelButton('primaryButton', )} - + + ); - const body = this.state.loading ? : ( + const createChannelHelpText = ( + +

+ +

+
+ ); + + const body = ( {serverError} ); - const title = ( - - ); - return ( - - {body} - + + + + + {createNewChannelButton} + + + {body} + + ); } } diff --git a/webapp/channels/src/components/more_channels/searchable_channel_list.jsx b/webapp/channels/src/components/more_channels/searchable_channel_list.jsx deleted file mode 100644 index 0efe317296..0000000000 --- a/webapp/channels/src/components/more_channels/searchable_channel_list.jsx +++ /dev/null @@ -1,483 +0,0 @@ -// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. -// See LICENSE.txt for license information. - -import PropTypes from 'prop-types'; -import React from 'react'; -import {FormattedMessage} from 'react-intl'; - -import {AccountOutlineIcon, ArchiveOutlineIcon, CheckIcon, ChevronDownIcon, GlobeIcon, LockOutlineIcon, MagnifyIcon} from '@mattermost/compass-icons/components'; - -import classNames from 'classnames'; - -import {isPrivateChannel} from 'mattermost-redux/utils/channel_utils'; - -import LoadingScreen from 'components/loading_screen'; -import LoadingWrapper from 'components/widgets/loading/loading_wrapper'; -import QuickInput from 'components/quick_input'; -import LocalizedInput from 'components/localized_input/localized_input'; -import CheckboxCheckedIcon from 'components/widgets/icons/checkbox_checked_icon'; -import MagnifyingGlassSVG from 'components/common/svg_images_components/magnifying_glass_svg'; -import MenuWrapper from 'components/widgets/menu/menu_wrapper'; -import Menu from 'components/widgets/menu/menu'; - -import {t} from 'utils/i18n'; -import * as UserAgent from 'utils/user_agent'; -import Constants, {ModalIdentifiers} from 'utils/constants'; -import {isKeyPressed, localizeMessage, localizeAndFormatMessage} from 'utils/utils'; - -import {isArchivedChannel} from 'utils/channel_utils'; - -const NEXT_BUTTON_TIMEOUT_MILLISECONDS = 500; - -export default class SearchableChannelList extends React.PureComponent { - static getDerivedStateFromProps(props, state) { - return {isSearch: props.isSearch, page: props.isSearch && !state.isSearch ? 0 : state.page}; - } - - constructor(props) { - super(props); - - this.nextTimeoutId = 0; - - this.state = { - joiningChannel: '', - page: 0, - nextDisabled: false, - channelSearchValue: '', - }; - - this.filter = React.createRef(); - this.channelListScroll = React.createRef(); - } - - componentDidMount() { - // only focus the search box on desktop so that we don't cause the keyboard to open on mobile - if (!UserAgent.isMobile() && this.filter.current) { - this.filter.current.focus(); - } - document.addEventListener('keydown', this.onKeyDown); - } - - componentWillUnmount() { - document.removeEventListener('keydown', this.onKeyDown); - } - - onKeyDown = (e) => { - const target = e.target; - const isEnterKeyPressed = isKeyPressed(e, Constants.KeyCodes.ENTER); - if (isEnterKeyPressed && (e.shiftKey || e.ctrlKey || e.altKey)) { - return; - } - if (isEnterKeyPressed && target.classList.contains('more-modal__row')) { - target.click(); - } - } - - handleJoin = (channel, e) => { - e.stopPropagation(); - this.setState({joiningChannel: channel.id}); - this.props.handleJoin( - channel, - () => { - this.setState({joiningChannel: ''}); - }, - ); - if (this.isMemberOfChannel(channel.id)) { - this.props.closeModal(ModalIdentifiers.MORE_CHANNELS); - } - } - - isMemberOfChannel(channelId) { - return this.props.myChannelMemberships[channelId]; - } - - createChannelRow = (channel) => { - const ariaLabel = `${channel.display_name}, ${channel.purpose}`.toLowerCase(); - let channelTypeIcon; - - let memberCount = 0; - if (this.props.allChannelStats[channel.id]) { - memberCount = this.props.allChannelStats[channel.id].member_count; - } - - if (isArchivedChannel(channel)) { - channelTypeIcon = ; - } else if (isPrivateChannel(channel)) { - channelTypeIcon = ; - } else { - channelTypeIcon = ; - } - - const membershipIndicator = this.isMemberOfChannel(channel.id) ? ( -
- - - -
- ) : null; - - const channelPurposeContainerAriaLabel = localizeAndFormatMessage( - t('more_channels.channel_purpose'), - 'Channel Information: Membership Indicator: Joined, Member count {memberCount} , Purpose: {channelPurpose}', - {memberCount, channelPurpose: channel.purpose || ''}, - ); - - const channelPurposeContainer = ( -
- {membershipIndicator} - - {memberCount} - {channel.purpose.length > 0 && } - {channel.purpose} -
- ); - - const joinViewChannelButtonClass = classNames('btn', { - outlineButton: this.isMemberOfChannel(channel.id), - primaryButton: !this.isMemberOfChannel(channel.id), - }); - - const joinViewChannelButton = ( - - ); - - return ( -
this.handleJoin(channel, e)} - tabIndex={0} - > -
-
- {channelTypeIcon} - {channel.display_name} -
- {channelPurposeContainer} -
-
- {joinViewChannelButton} -
-
- ); - } - - nextPage = (e) => { - e.preventDefault(); - this.setState({page: this.state.page + 1, nextDisabled: true}); - this.nextTimeoutId = setTimeout(() => this.setState({nextDisabled: false}), NEXT_BUTTON_TIMEOUT_MILLISECONDS); - this.props.nextPage(this.state.page + 1); - this.channelListScroll.current?.scrollTo({top: 0}); - } - - previousPage = (e) => { - e.preventDefault(); - this.setState({page: this.state.page - 1}); - this.channelListScroll.current?.scrollTo({top: 0}); - } - - doSearch = () => { - this.props.search(this.state.channelSearchValue); - if (this.state.channelSearchValue === '') { - this.setState({page: 0}); - } - } - - handleChange = (e) => { - if (e.target) { - this.setState({channelSearchValue: e.target.value}, () => this.doSearch()); - } - } - - handleClear = () => { - this.setState({channelSearchValue: ''}, () => this.doSearch()); - } - - toggleArchivedChannelsOn = () => { - this.props.toggleArchivedChannels(true); - } - - toggleArchivedChannelsOff = () => { - this.props.toggleArchivedChannels(false); - } - - handleChecked = () => { - // If it was checked, and now we're unchecking it, clear the preference - if (this.props.rememberHideJoinedChannelsChecked) { - this.props.hideJoinedChannelsPreference(false); - } else { - this.props.hideJoinedChannelsPreference(true); - } - } - - render() { - const channels = this.props.channels; - let listContent; - let nextButton; - let previousButton; - - let emptyStateMessage = ( - - ); - - if (this.state.channelSearchValue.length > 0) { - emptyStateMessage = ( - - ); - } - - if (this.props.loading && channels.length === 0) { - listContent = ; - } else if (channels.length === 0) { - listContent = ( -
0 ? - localizeAndFormatMessage(t('more_channels.noMore'), 'No results for {text}', {text: this.state.channelSearchValue}) : - localizeMessage('widgets.channels_input.empty', 'No channels found') - } - > - -

- {emptyStateMessage} -

- {this.props.noResultsText} -
- ); - } else { - const pageStart = this.state.page * this.props.channelsPerPage; - const pageEnd = pageStart + this.props.channelsPerPage; - const channelsToDisplay = this.props.channels.slice(pageStart, pageEnd); - listContent = channelsToDisplay.map(this.createChannelRow); - - if (channelsToDisplay.length >= this.props.channelsPerPage && pageEnd < this.props.channels.length) { - nextButton = ( - - ); - } - - if (this.state.page > 0) { - previousButton = ( - - ); - } - } - - const input = ( -
- - -
- ); - - let channelDropdown; - let checkIcon; - - if (this.props.canShowArchivedChannels) { - checkIcon = ( - - ); - channelDropdown = ( - - - {this.props.shouldShowArchivedChannels ? localizeMessage('more_channels.show_archived_channels', 'Channel Type: Archived') : localizeMessage('more_channels.show_public_channels', 'Channel Type: Public')} - - - -
- } - text={localizeMessage('suggestion.search.public', 'Public Channels')} - rightDecorator={this.props.shouldShowArchivedChannels ? null : checkIcon} - ariaLabel={localizeMessage('suggestion.search.public', 'Public Channels')} - /> -
- } - text={localizeMessage('suggestion.archive', 'Archived Channels')} - rightDecorator={this.props.shouldShowArchivedChannels ? checkIcon : null} - ariaLabel={localizeMessage('suggestion.archive', 'Archived Channels')} - /> -
-
- ); - } - - const hideJoinedButtonClass = classNames('get-app__checkbox', {checked: this.props.rememberHideJoinedChannelsChecked}); - const hideJoinedPreferenceCheckbox = ( -
- - -
- ); - - let channelCountLabel; - if (channels.length === 0) { - channelCountLabel = localizeMessage('more_channels.count_zero', '0 Results'); - } else if (channels.length === 1) { - channelCountLabel = localizeMessage('more_channels.count_one', '1 Result'); - } else if (channels.length > 1) { - channelCountLabel = localizeAndFormatMessage(t('more_channels.count'), '0 Results', {count: channels.length}); - } else { - channelCountLabel = localizeMessage('more_channels.count_zero', '0 Results'); - } - - const dropDownContainer = ( -
- {channelCountLabel} -
- {channelDropdown} - {hideJoinedPreferenceCheckbox} -
-
- ); - - return ( -
- {input} - {dropDownContainer} -
-
- {listContent} -
-
-
- {previousButton} - {nextButton} -
-
- ); - } -} - -SearchableChannelList.defaultProps = { - channels: [], - isSearch: false, -}; - -SearchableChannelList.propTypes = { - channels: PropTypes.arrayOf(PropTypes.object), - channelsPerPage: PropTypes.number, - nextPage: PropTypes.func.isRequired, - isSearch: PropTypes.bool, - search: PropTypes.func.isRequired, - handleJoin: PropTypes.func.isRequired, - noResultsText: PropTypes.object, - loading: PropTypes.bool, - toggleArchivedChannels: PropTypes.func.isRequired, - shouldShowArchivedChannels: PropTypes.bool.isRequired, - canShowArchivedChannels: PropTypes.bool.isRequired, - myChannelMemberships: PropTypes.object.isRequired, - allChannelStats: PropTypes.object.isRequired, - closeModal: PropTypes.func.isRequired, - hideJoinedChannelsPreference: PropTypes.func.isRequired, - rememberHideJoinedChannelsChecked: PropTypes.bool.isRequired, -}; -/* eslint-enable react/no-string-refs */ diff --git a/webapp/channels/src/components/searchable_channel_list.jsx b/webapp/channels/src/components/searchable_channel_list.jsx new file mode 100644 index 0000000000..edf7b57565 --- /dev/null +++ b/webapp/channels/src/components/searchable_channel_list.jsx @@ -0,0 +1,319 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import PropTypes from 'prop-types'; +import React from 'react'; +import {FormattedMessage} from 'react-intl'; + +import {ArchiveOutlineIcon} from '@mattermost/compass-icons/components'; + +import LoadingScreen from 'components/loading_screen'; +import LoadingWrapper from 'components/widgets/loading/loading_wrapper'; +import QuickInput from 'components/quick_input'; +import * as UserAgent from 'utils/user_agent'; +import {localizeMessage} from 'utils/utils'; +import LocalizedInput from 'components/localized_input/localized_input'; + +import SharedChannelIndicator from 'components/shared_channel_indicator'; + +import {t} from 'utils/i18n'; + +import MenuWrapper from './widgets/menu/menu_wrapper'; +import Menu from './widgets/menu/menu'; + +const NEXT_BUTTON_TIMEOUT_MILLISECONDS = 500; + +export default class SearchableChannelList extends React.PureComponent { + static getDerivedStateFromProps(props, state) { + return {isSearch: props.isSearch, page: props.isSearch && !state.isSearch ? 0 : state.page}; + } + + constructor(props) { + super(props); + + this.nextTimeoutId = 0; + + this.state = { + joiningChannel: '', + page: 0, + nextDisabled: false, + }; + + this.filter = React.createRef(); + this.channelListScroll = React.createRef(); + } + + componentDidMount() { + // only focus the search box on desktop so that we don't cause the keyboard to open on mobile + if (!UserAgent.isMobile() && this.filter.current) { + this.filter.current.focus(); + } + } + + handleJoin(channel) { + this.setState({joiningChannel: channel.id}); + this.props.handleJoin( + channel, + () => { + this.setState({joiningChannel: ''}); + }, + ); + } + + createChannelRow = (channel) => { + const ariaLabel = `${channel.display_name}, ${channel.purpose}`.toLowerCase(); + let archiveIcon; + let sharedIcon; + const {shouldShowArchivedChannels} = this.props; + + if (shouldShowArchivedChannels) { + archiveIcon = ( + + ); + } + + if (channel.shared) { + sharedIcon = ( + + ); + } + + return ( +
+
+ +

{channel.purpose}

+
+
+ +
+
+ ); + } + + nextPage = (e) => { + e.preventDefault(); + this.setState({page: this.state.page + 1, nextDisabled: true}); + this.nextTimeoutId = setTimeout(() => this.setState({nextDisabled: false}), NEXT_BUTTON_TIMEOUT_MILLISECONDS); + this.props.nextPage(this.state.page + 1); + this.channelListScroll.current?.scrollTo({top: 0}); + } + + previousPage = (e) => { + e.preventDefault(); + this.setState({page: this.state.page - 1}); + this.channelListScroll.current?.scrollTo({top: 0}); + } + + doSearch = () => { + const term = this.filter.current.value; + this.props.search(term); + if (term === '') { + this.setState({page: 0}); + } + } + toggleArchivedChannelsOn = () => { + this.props.toggleArchivedChannels(true); + } + toggleArchivedChannelsOff = () => { + this.props.toggleArchivedChannels(false); + } + + render() { + const channels = this.props.channels; + let listContent; + let nextButton; + let previousButton; + + if (this.props.loading && channels.length === 0) { + listContent = ; + } else if (channels.length === 0) { + listContent = ( +
+

+ +

+ {this.props.noResultsText} +
+ ); + } else { + const pageStart = this.state.page * this.props.channelsPerPage; + const pageEnd = pageStart + this.props.channelsPerPage; + const channelsToDisplay = this.props.channels.slice(pageStart, pageEnd); + listContent = channelsToDisplay.map(this.createChannelRow); + + if (channelsToDisplay.length >= this.props.channelsPerPage && pageEnd < this.props.channels.length) { + nextButton = ( + + ); + } + + if (this.state.page > 0) { + previousButton = ( + + ); + } + } + + let input = ( +
+
+ +
+
+ ); + + if (this.props.createChannelButton) { + input = ( +
+
+ +
+
+ {this.props.createChannelButton} +
+
+ ); + } + + let channelDropdown; + + if (this.props.canShowArchivedChannels) { + channelDropdown = ( + + ); + } + + return ( +
+ {input} + {channelDropdown} +
+
+ {listContent} +
+
+
+ {previousButton} + {nextButton} +
+
+ ); + } +} + +SearchableChannelList.defaultProps = { + channels: [], + isSearch: false, +}; + +SearchableChannelList.propTypes = { + channels: PropTypes.arrayOf(PropTypes.object), + channelsPerPage: PropTypes.number, + nextPage: PropTypes.func.isRequired, + isSearch: PropTypes.bool, + search: PropTypes.func.isRequired, + handleJoin: PropTypes.func.isRequired, + noResultsText: PropTypes.object, + loading: PropTypes.bool, + createChannelButton: PropTypes.element, + toggleArchivedChannels: PropTypes.func.isRequired, + shouldShowArchivedChannels: PropTypes.bool.isRequired, + canShowArchivedChannels: PropTypes.bool.isRequired, +}; diff --git a/webapp/channels/src/components/more_channels/searchable_channel_list.test.jsx b/webapp/channels/src/components/searchable_channel_list.test.jsx similarity index 70% rename from webapp/channels/src/components/more_channels/searchable_channel_list.test.jsx rename to webapp/channels/src/components/searchable_channel_list.test.jsx index 9953b08225..9ba5ddd4f8 100644 --- a/webapp/channels/src/components/more_channels/searchable_channel_list.test.jsx +++ b/webapp/channels/src/components/searchable_channel_list.test.jsx @@ -4,25 +4,20 @@ import React from 'react'; import {shallow} from 'enzyme'; -import SearchableChannelList from './searchable_channel_list.jsx'; +import SearchableChannelList from 'components/searchable_channel_list.jsx'; describe('components/SearchableChannelList', () => { const baseProps = { channels: [], isSearch: false, channelsPerPage: 10, - nextPage: jest.fn(), - search: jest.fn(), - handleJoin: jest.fn(), + nextPage: () => {}, // eslint-disable-line no-empty-function + search: () => {}, // eslint-disable-line no-empty-function + handleJoin: () => {}, // eslint-disable-line no-empty-function loading: true, - rememberHideJoinedChannelsChecked: false, - toggleArchivedChannels: jest.fn(), + toggleArchivedChannels: () => {}, // eslint-disable-line no-empty-function shouldShowArchivedChannels: false, canShowArchivedChannels: false, - myChannelMemberships: {}, - allChannelStats: {}, - closeModal: jest.fn(), - hideJoinedChannelsPreference: jest.fn(), }; test('should match init snapshot', () => { diff --git a/webapp/channels/src/i18n/en.json b/webapp/channels/src/i18n/en.json index 6c28bff86c..f84245884b 100644 --- a/webapp/channels/src/i18n/en.json +++ b/webapp/channels/src/i18n/en.json @@ -4155,22 +4155,13 @@ "modal.manual_status.title_dnd": "Your Status is Set to \"Do Not Disturb\"", "modal.manual_status.title_offline": "Your Status is Set to \"Offline\"", "modal.manual_status.title_ooo": "Your Status is Set to \"Out of Office\"", - "more_channels.channel_purpose": "Channel Information: Membership Indicator: Joined, Member count {memberCount} , Purpose: {channelPurpose}", - "more_channels.count": "{count} Results", - "more_channels.count_one": "1 Result", - "more_channels.count_zero": "0 Results", "more_channels.create": "Create New Channel", - "more_channels.hide_joined": "Hide Joined", - "more_channels.hide_joined_checked": "Hide joined channels checkbox, checked", - "more_channels.hide_joined_not_checked": "Hide joined channels checkbox, not checked", - "more_channels.joined": "Joined", - "more_channels.membership_indicator": "Membership Indicator: Joined", + "more_channels.createClick": "Click 'Create New Channel' to make a new one", + "more_channels.join": "Join", + "more_channels.joining": "Joining...", "more_channels.next": "Next", - "more_channels.noArchived": "No archived channels", "more_channels.noMore": "No results for \"{text}\"", - "more_channels.noPublic": "No public channels", "more_channels.prev": "Previous", - "more_channels.searchError": "Try searching different keywords, checking for typos or adjusting the filters.", "more_channels.show_archived_channels": "Channel Type: Archived", "more_channels.show_public_channels": "Channel Type: Public", "more_channels.title": "Browse Channels", diff --git a/webapp/channels/src/sass/components/_channel-invite-modal.scss b/webapp/channels/src/sass/components/_channel-invite-modal.scss index d3e70e8398..f1893c9a76 100644 --- a/webapp/channels/src/sass/components/_channel-invite-modal.scss +++ b/webapp/channels/src/sass/components/_channel-invite-modal.scss @@ -71,9 +71,7 @@ .primary-message { margin: 0; - color: var(--center-channel-color); font-size: inherit; - line-height: 28px; } } diff --git a/webapp/channels/src/utils/constants.tsx b/webapp/channels/src/utils/constants.tsx index d3426a4395..5a5825ec5a 100644 --- a/webapp/channels/src/utils/constants.tsx +++ b/webapp/channels/src/utils/constants.tsx @@ -896,7 +896,6 @@ export const StoragePrefixes = { CHANNEL_CATEGORY_COLLAPSED: 'channelCategoryCollapsed_', INLINE_IMAGE_VISIBLE: 'isInlineImageVisible_', DELINQUENCY: 'delinquency_', - HIDE_JOINED_CHANNELS: 'hideJoinedChannels', }; export const LandingPreferenceTypes = { diff --git a/webapp/platform/components/src/generic_modal/generic_modal.tsx b/webapp/platform/components/src/generic_modal/generic_modal.tsx index 117d1d4b58..9f5ea7a357 100644 --- a/webapp/platform/components/src/generic_modal/generic_modal.tsx +++ b/webapp/platform/components/src/generic_modal/generic_modal.tsx @@ -38,7 +38,6 @@ export type Props = { compassDesign?: boolean; backdrop?: boolean; backdropClassName?: string; - headerButton?: React.ReactNode; tabIndex?: number; children: React.ReactNode; keyboardEscape?: boolean; @@ -166,7 +165,6 @@ export class GenericModal extends React.PureComponent {

{this.props.modalHeaderText}

- {this.props.headerButton}
); From 2287dff298b7d240ac095f7bc2cd9da6a56b472d Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Tue, 28 Mar 2023 09:04:09 +0530 Subject: [PATCH 06/11] MM-51700: Suppress websocket warnings with a threshold (#22637) We log warnings whenever our websocket buffer sizes exceed certain thresholds. The problem with that is, when this happens, the logs are completely spammed with these lines making it annoying for the customer. To improve the situation, we use a timer that only gets reset every minute. https://mattermost.atlassian.net/browse/MM-51700 ```release-note NONE ``` --- server/channels/app/platform/web_conn.go | 45 ++++++++++++++++-------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/server/channels/app/platform/web_conn.go b/server/channels/app/platform/web_conn.go index 02b8cd8687..ac72c98cdf 100644 --- a/server/channels/app/platform/web_conn.go +++ b/server/channels/app/platform/web_conn.go @@ -27,15 +27,16 @@ import ( ) const ( - sendQueueSize = 256 - sendSlowWarn = (sendQueueSize * 50) / 100 - sendFullWarn = (sendQueueSize * 95) / 100 - writeWaitTime = 30 * time.Second - pongWaitTime = 100 * time.Second - pingInterval = (pongWaitTime * 6) / 10 - authCheckInterval = 5 * time.Second - webConnMemberCacheTime = 1000 * 60 * 30 // 30 minutes - deadQueueSize = 128 // Approximated from /proc/sys/net/core/wmem_default / 2048 (avg msg size) + sendQueueSize = 256 + sendSlowWarn = (sendQueueSize * 50) / 100 + sendFullWarn = (sendQueueSize * 95) / 100 + writeWaitTime = 30 * time.Second + pongWaitTime = 100 * time.Second + pingInterval = (pongWaitTime * 6) / 10 + authCheckInterval = 5 * time.Second + webConnMemberCacheTime = 1000 * 60 * 30 // 30 minutes + deadQueueSize = 128 // Approximated from /proc/sys/net/core/wmem_default / 2048 (avg msg size) + websocketSuppressWarnThreshold = time.Minute ) const ( @@ -112,6 +113,13 @@ type WebConn struct { endWritePump chan struct{} pumpFinished chan struct{} pluginPosted chan pluginWSPostedHook + + // These counters are to suppress spammy websocket.slow + // and websocket.full logs which happen continuously, if they + // do happen. To improve the situation, we log them only once + // per minute. + lastLogTimeSlow time.Time + lastLogTimeFull time.Time } // CheckConnResult indicates whether a connectionID was present in the hub or not. @@ -215,6 +223,8 @@ func (ps *PlatformService) NewWebConn(cfg *WebConnConfig, suite SuiteIFace, runn endWritePump: make(chan struct{}), pumpFinished: make(chan struct{}), pluginPosted: make(chan pluginWSPostedHook, 10), + lastLogTimeSlow: time.Now(), + lastLogTimeFull: time.Now(), } wc.SetSession(&cfg.Session) @@ -460,7 +470,7 @@ func (wc *WebConn) writePump() { continue } - if len(wc.send) >= sendFullWarn { + if len(wc.send) >= sendFullWarn && time.Since(wc.lastLogTimeFull) > websocketSuppressWarnThreshold { logData := []mlog.Field{ mlog.String("user_id", wc.UserId), mlog.String("type", msg.EventType()), @@ -471,6 +481,7 @@ func (wc *WebConn) writePump() { } mlog.Warn("websocket.full", logData...) + wc.lastLogTimeFull = time.Now() } if evtOk { @@ -711,11 +722,15 @@ func (wc *WebConn) ShouldSendEvent(msg *model.WebSocketEvent) bool { case model.WebsocketEventTyping, model.WebsocketEventStatusChange, model.WebsocketEventChannelViewed: - mlog.Warn( - "websocket.slow: dropping message", - mlog.String("user_id", wc.UserId), - mlog.String("type", msg.EventType()), - ) + if time.Since(wc.lastLogTimeSlow) > websocketSuppressWarnThreshold { + mlog.Warn( + "websocket.slow: dropping message", + mlog.String("user_id", wc.UserId), + mlog.String("type", msg.EventType()), + ) + // Reset timer to now. + wc.lastLogTimeSlow = time.Now() + } return false } } From 6c9ec24fb99e52f3a83d07ddd0b09b4cfd114f55 Mon Sep 17 00:00:00 2001 From: Pantelis Vratsalis Date: Thu, 23 Mar 2023 13:46:56 +0200 Subject: [PATCH 07/11] [MM-50002] catch and log exceptions from missed message listeners --- webapp/platform/client/src/websocket.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/webapp/platform/client/src/websocket.ts b/webapp/platform/client/src/websocket.ts index c88379ec37..b026891933 100644 --- a/webapp/platform/client/src/websocket.ts +++ b/webapp/platform/client/src/websocket.ts @@ -189,9 +189,16 @@ export default class WebSocketClient { console.log('long timeout, or server restart, or sequence number is not found.'); //eslint-disable-line no-console this.missedEventCallback?.(); - this.missedMessageListeners.forEach((listener) => listener()); - - this.serverSequence = 0; + + for (const listener of this.missedMessageListeners) { + try { + listener(); + } catch (e) { + console.log(`missed message listener "${listener.name}" failed: ${e}`); // eslint-disable-line no-console + } + } + + this.serverSequence = 0; } // If it's a fresh connection, we have to set the connectionId regardless. From da7a6825ce1e9e5c6d4065c200f9b226bae50bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Mondrag=C3=B3n?= <79058848+julmondragon@users.noreply.github.com> Date: Tue, 28 Mar 2023 10:54:30 -0500 Subject: [PATCH 08/11] MM-50087_Add marketplace button to apps bar (#22653) --- .../channels/plugins/marketplace/helpers.js | 4 +- webapp/channels/src/actions/command.test.js | 3 +- webapp/channels/src/actions/command.ts | 4 +- .../__snapshots__/actions_menu.test.tsx.snap | 4 +- .../actions_menu/actions_menu.test.tsx | 15 +- .../components/actions_menu/actions_menu.tsx | 10 +- .../actions_menu/actions_menu_empty.test.tsx | 1 + .../actions_menu/actions_menu_mobile.test.tsx | 1 + .../src/components/actions_menu/index.ts | 8 + .../__snapshots__/app_bar.test.tsx.snap | 203 +++++++++-------- .../src/components/app_bar/app_bar.scss | 208 ++++++++++-------- .../src/components/app_bar/app_bar.test.tsx | 62 +++++- .../src/components/app_bar/app_bar.tsx | 42 ++-- .../app_bar/app_bar_marketplace.tsx | 60 +++++ .../index.tsx | 1 + .../product_menu_list.test.tsx.snap | 27 ++- .../product_menu_list/product_menu_list.tsx | 5 +- .../marketplace_modal.test.tsx | 16 +- .../plugin_marketplace/marketplace_modal.tsx | 5 +- webapp/channels/src/i18n/en.json | 3 +- webapp/channels/src/sass/utils/_mixins.scss | 43 ++++ 21 files changed, 485 insertions(+), 240 deletions(-) create mode 100644 webapp/channels/src/components/app_bar/app_bar_marketplace.tsx diff --git a/e2e/cypress/tests/integration/channels/plugins/marketplace/helpers.js b/e2e/cypress/tests/integration/channels/plugins/marketplace/helpers.js index 1820015814..b1ce96d0a5 100644 --- a/e2e/cypress/tests/integration/channels/plugins/marketplace/helpers.js +++ b/e2e/cypress/tests/integration/channels/plugins/marketplace/helpers.js @@ -5,10 +5,10 @@ export function verifyPluginMarketplaceVisibility(shouldBeVisible) { cy.uiOpenProductMenu().within(() => { if (shouldBeVisible) { // * Verify Marketplace button should exist - cy.findByText('Marketplace').should('exist'); + cy.findByText('App Marketplace').should('exist'); } else { // * Verify Marketplace button should not exist - cy.findByText('Marketplace').should('not.exist'); + cy.findByText('App Marketplace').should('not.exist'); } }); } diff --git a/webapp/channels/src/actions/command.test.js b/webapp/channels/src/actions/command.test.js index c83037f136..de9a9b01be 100644 --- a/webapp/channels/src/actions/command.test.js +++ b/webapp/channels/src/actions/command.test.js @@ -6,6 +6,7 @@ import {Client4} from 'mattermost-redux/client'; import * as Channels from 'mattermost-redux/selectors/entities/channels'; import * as Teams from 'mattermost-redux/selectors/entities/teams'; +import {Permissions} from 'mattermost-redux/constants'; import {AppCallResponseTypes} from 'mattermost-redux/constants/apps'; import * as GlobalActions from 'actions/global_actions'; @@ -55,7 +56,7 @@ const initialState = { roles: { custom_role: { permissions: [ - 'sysconsole_read_plugins', + Permissions.SYSCONSOLE_WRITE_PLUGINS, ], }, }, diff --git a/webapp/channels/src/actions/command.ts b/webapp/channels/src/actions/command.ts index 255dff4c51..2b89fae193 100644 --- a/webapp/channels/src/actions/command.ts +++ b/webapp/channels/src/actions/command.ts @@ -130,7 +130,7 @@ export function executeCommand(message: string, args: CommandArgs): ActionFunc { return {data: true}; case '/marketplace': // check if user has permissions to access the read plugins - if (!haveICurrentTeamPermission(state, Permissions.SYSCONSOLE_READ_PLUGINS)) { + if (!haveICurrentTeamPermission(state, Permissions.SYSCONSOLE_WRITE_PLUGINS)) { return {error: {message: localizeMessage('marketplace_command.no_permission', 'You do not have the appropriate permissions to access the marketplace.')}}; } @@ -139,7 +139,7 @@ export function executeCommand(message: string, args: CommandArgs): ActionFunc { return {error: {message: localizeMessage('marketplace_command.disabled', 'The marketplace is disabled. Please contact your System Administrator for details.')}}; } - dispatch(openModal({modalId: ModalIdentifiers.PLUGIN_MARKETPLACE, dialogType: MarketplaceModal})); + dispatch(openModal({modalId: ModalIdentifiers.PLUGIN_MARKETPLACE, dialogType: MarketplaceModal, dialogProps: {openedFrom: 'command'}})); return {data: true}; case '/templates': { const workTemplateEnabled = areWorkTemplatesEnabled(state); diff --git a/webapp/channels/src/components/actions_menu/__snapshots__/actions_menu.test.tsx.snap b/webapp/channels/src/components/actions_menu/__snapshots__/actions_menu.test.tsx.snap index 260071f49f..60367b08bf 100644 --- a/webapp/channels/src/components/actions_menu/__snapshots__/actions_menu.test.tsx.snap +++ b/webapp/channels/src/components/actions_menu/__snapshots__/actions_menu.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`components/actions_menu/ActionsMenu has actions - end user - should not show actions and app marketplace 1`] = ` +exports[`components/actions_menu/ActionsMenu has actions - marketplace disabled or user not having SYSCONSOLE_WRITE_PLUGINS - should not show actions and app marketplace 1`] = ` `; -exports[`components/actions_menu/ActionsMenu has actions - sysadmin - should show actions and app marketplace 1`] = ` +exports[`components/actions_menu/ActionsMenu has actions - marketplace enabled and user has SYSCONSOLE_WRITE_PLUGINS - should show actions and app marketplace 1`] = ` { handleDismissTip: jest.fn(), showPulsatingDot: false, location: 'center', + canOpenMarketplace: false, actions: { openModal: jest.fn(), openAppsModal: jest.fn(), @@ -62,27 +63,29 @@ describe('components/actions_menu/ActionsMenu', () => { wrapper.setProps({ pluginMenuItems: dropdownComponents, + canOpenMarketplace: true, }); expect(wrapper.find('#divider_post_post_id_1_marketplace').exists()).toBe(true); }); - test('has actions - sysadmin - should show actions and app marketplace', () => { + test('has actions - marketplace enabled and user has SYSCONSOLE_WRITE_PLUGINS - should show actions and app marketplace', () => { const wrapper = shallowWithIntl( , ); wrapper.setProps({ pluginMenuItems: dropdownComponents, + canOpenMarketplace: true, }); expect(wrapper).toMatchSnapshot(); }); - test('has actions - end user - should not show actions and app marketplace', () => { + test('has actions - marketplace disabled or user not having SYSCONSOLE_WRITE_PLUGINS - should not show actions and app marketplace', () => { const wrapper = shallowWithIntl( , ); wrapper.setProps({ pluginMenuItems: dropdownComponents, - isSysAdmin: false, + canOpenMarketplace: false, }); expect(wrapper).toMatchSnapshot(); }); @@ -91,6 +94,11 @@ describe('components/actions_menu/ActionsMenu', () => { const wrapper = shallowWithIntl( , ); + + wrapper.setProps({ + canOpenMarketplace: true, + }); + expect(wrapper).toMatchSnapshot(); }); @@ -116,6 +124,7 @@ describe('components/actions_menu/ActionsMenu', () => { components: { [PLUGGABLE_COMPONENT]: dropdownComponents, }, + canOpenMarketplace: true, }); expect(wrapper.find('#divider_post_post_id_1_marketplace').exists()).toBe(true); }); diff --git a/webapp/channels/src/components/actions_menu/actions_menu.tsx b/webapp/channels/src/components/actions_menu/actions_menu.tsx index 8a31075676..547aac2da1 100644 --- a/webapp/channels/src/components/actions_menu/actions_menu.tsx +++ b/webapp/channels/src/components/actions_menu/actions_menu.tsx @@ -20,6 +20,7 @@ import Permissions from 'mattermost-redux/constants/permissions'; import {ActionsTutorialTip} from 'components/actions_menu/actions_menu_tutorial_tip'; import {ModalData} from 'types/actions'; import MarketplaceModal from 'components/plugin_marketplace'; +import {OpenedFromType} from 'components/plugin_marketplace/marketplace_modal'; import OverlayTrigger from 'components/overlay_trigger'; import * as PostUtils from 'utils/post_utils'; import * as Utils from 'utils/utils'; @@ -49,6 +50,7 @@ export type Props = { handleDismissTip: () => void; showPulsatingDot?: boolean; showTutorialTip: boolean; + canOpenMarketplace: boolean; /** * Components for overriding provided by plugins @@ -145,9 +147,11 @@ export class ActionMenuClass extends React.PureComponent { } handleOpenMarketplace = (): void => { + const openedFrom: OpenedFromType = 'actions_menu'; const openMarketplaceData = { modalId: ModalIdentifiers.PLUGIN_MARKETPLACE, dialogType: MarketplaceModal, + dialogProps: {openedFrom}, }; this.props.actions.openModal(openMarketplaceData); }; @@ -341,7 +345,7 @@ export class ActionMenuClass extends React.PureComponent { const {formatMessage} = this.props.intl; let marketPlace = null; - if (this.props.isSysAdmin) { + if (this.props.canOpenMarketplace) { marketPlace = ( {this.renderDivider('marketplace')} @@ -363,11 +367,11 @@ export class ActionMenuClass extends React.PureComponent { const hasPluginItems = Boolean(pluginItems?.length); const hasPluginMenuItems = hasPluginItems || hasApps || hasPluggables; - if (!this.props.isSysAdmin && !hasPluginMenuItems) { + if (!this.props.canOpenMarketplace && !hasPluginMenuItems) { return null; } - if (hasPluginItems || hasApps || hasPluggables) { + if (hasPluginMenuItems) { const pluggable = ( { showTutorialTip: false, appsEnabled: false, isSysAdmin: true, + canOpenMarketplace: false, }; const wrapper = shallow( diff --git a/webapp/channels/src/components/actions_menu/actions_menu_mobile.test.tsx b/webapp/channels/src/components/actions_menu/actions_menu_mobile.test.tsx index e712e9bb4b..3f4f3c3534 100644 --- a/webapp/channels/src/components/actions_menu/actions_menu_mobile.test.tsx +++ b/webapp/channels/src/components/actions_menu/actions_menu_mobile.test.tsx @@ -44,6 +44,7 @@ describe('components/actions_menu/ActionsMenu on mobile view', () => { showTutorialTip: false, appsEnabled: false, isSysAdmin: true, + canOpenMarketplace: false, }; const wrapper = shallow( diff --git a/webapp/channels/src/components/actions_menu/index.ts b/webapp/channels/src/components/actions_menu/index.ts index 517aac9fad..21c9c2588b 100644 --- a/webapp/channels/src/components/actions_menu/index.ts +++ b/webapp/channels/src/components/actions_menu/index.ts @@ -26,6 +26,10 @@ import {GlobalState} from 'types/store'; import {openModal} from 'actions/views/modals'; import {makeFetchBindings, postEphemeralCallResponseForPost, handleBindingClick, openAppsModal} from 'actions/apps'; +import {Permissions} from 'mattermost-redux/constants'; +import {isMarketplaceEnabled} from 'mattermost-redux/selectors/entities/general'; +import {haveICurrentTeamPermission} from 'mattermost-redux/selectors/entities/roles'; + import ActionsMenu from './actions_menu'; import {makeGetPostOptionBinding} from './selectors'; @@ -65,6 +69,10 @@ function mapStateToProps(state: GlobalState, ownProps: Props) { pluginMenuItems: state.plugins.components.PostDropdownMenu, teamId: getCurrentTeamId(state), isMobileView: getIsMobileView(state), + canOpenMarketplace: ( + isMarketplaceEnabled(state) && + haveICurrentTeamPermission(state, Permissions.SYSCONSOLE_WRITE_PLUGINS) + ), }; } diff --git a/webapp/channels/src/components/app_bar/__snapshots__/app_bar.test.tsx.snap b/webapp/channels/src/components/app_bar/__snapshots__/app_bar.test.tsx.snap index 0f2403dc6b..528d89c426 100644 --- a/webapp/channels/src/components/app_bar/__snapshots__/app_bar.test.tsx.snap +++ b/webapp/channels/src/components/app_bar/__snapshots__/app_bar.test.tsx.snap @@ -1,63 +1,38 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`components/app_bar/app_bar should match snapshot on mount 1`] = ` -.c0:last-child, -.c0:first-child { - display: none; -} -
- - - - Playbooks Tooltip - - - } - placement="left" - trigger={ - Array [ - "hover", - "focus", - ] + Playbooks Tooltip - + } placement="left" trigger={ @@ -67,77 +42,73 @@ exports[`components/app_bar/app_bar should match snapshot on mount 1`] = ` ] } > -
+ + Playbooks Tooltip + + + } + placement="left" + trigger={ + Array [ + "hover", + "focus", + ] + } >
- fallback_component +
+ fallback_component +
-
+
- -
- <_StyledHr - className="app-bar__divider" - key="divider" - > +
- - - - - Create Subscription - - - } - placement="left" - trigger={ - Array [ - "hover", - "focus", - ] + Create Subscription - + } placement="left" trigger={ @@ -147,25 +118,49 @@ exports[`components/app_bar/app_bar should match snapshot on mount 1`] = ` ] } > -
+ + Create Subscription + + + } + placement="left" + trigger={ + Array [ + "hover", + "focus", + ] + } >
- +
+ +
-
+
- -
+ +
`; diff --git a/webapp/channels/src/components/app_bar/app_bar.scss b/webapp/channels/src/components/app_bar/app_bar.scss index c45afabf44..ce7813b3c9 100644 --- a/webapp/channels/src/components/app_bar/app_bar.scss +++ b/webapp/channels/src/components/app_bar/app_bar.scss @@ -1,6 +1,8 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +@import 'utils/mixins'; + $app-bar-icon-size: 24px; $app-bar-width: 48px; @@ -10,129 +12,143 @@ $app-bar-width: 48px; display: none; } - position: relative; - width: $app-bar-width; - padding-top: 16px; + display: flex; + min-height: 0; + flex-flow: column; + border-left: solid 1px rgba(var(--center-channel-color-rgb), 0.12); background-color: var(--center-channel-bg); - -ms-overflow-style: none; - overflow-x: hidden; - overflow-y: scroll; - scrollbar-width: none; - text-align: center; - &::before { - position: absolute; - top: 0; - display: block; - width: 100%; - height: 100%; - border-left: solid 1px rgba(var(--center-channel-color-rgb), 0.12); - background-color: rgba(var(--center-channel-color-rgb), 0.04); - content: ''; - } - - .app-bar__icon { + &__top { position: relative; - // Render App Bar icons on top of the RHS background div - //(see `@media screen and (min-width: 769px) > #sidebar-right` in sass/layout/_sidebar-right.scss) - z-index: 21; - width: 100%; - border-left: none; - margin-bottom: 16px; - cursor: pointer; + display: flex; + width: $app-bar-width; + flex: 1; + flex-flow: column; + padding-top: 16px; + background-color: rgba(var(--center-channel-color-rgb), 0.04); + -ms-overflow-style: none; + overflow-x: hidden; + overflow-y: scroll; + scrollbar-width: none; + text-align: center; - &--active { - &::before { - position: absolute; - top: 0; - left: 0; - width: 3px; - height: $app-bar-icon-size; - background-color: var(--sidebar-text-active-border); - border-radius: 0 2px 2px 0; - content: ''; + .app-bar__icon { + position: relative; + // Render App Bar icons on top of the RHS background div + //(see `@media screen and (min-width: 769px) > #sidebar-right` in sass/layout/_sidebar-right.scss) + z-index: 21; + width: 100%; + border-left: none; + margin-bottom: 16px; + cursor: pointer; + + &--active { + &::before { + position: absolute; + top: 0; + left: 0; + width: 3px; + height: $app-bar-icon-size; + background-color: var(--sidebar-text-active-border); + border-radius: 0 2px 2px 0; + content: ''; + } + + .app-bar__icon-inner, + span:not(.pulsating_dot) { + // if we want to show a tourtip/pulsating dot in any of the app bar icons, these styles must be ommitted when span.pulsating_dot + box-shadow: 0 0 0 2px var(--sidebar-text-active-border); + + &:hover { + box-shadow: 0 0 0 2px rgba(var(--sidebar-text-active-border-rgb), 0.92) !important; + } + } } .app-bar__icon-inner, span:not(.pulsating_dot) { - // if we want to show a tourtip/pulsating dot in any of the app bar icons, these styles must be ommitted when span.pulsating_dot - box-shadow: 0 0 0 2px var(--sidebar-text-active-border); - - &:hover { - box-shadow: 0 0 0 2px rgba(var(--sidebar-text-active-border-rgb), 0.92) !important; - } - } - } - - .app-bar__icon-inner, - span:not(.pulsating_dot) { - display: block; - overflow: hidden; - width: $app-bar-icon-size; - height: $app-bar-icon-size; - margin: 0 auto; - border-radius: 50%; - line-height: 1; - - &:hover { - box-shadow: 0 0 0 2px rgba(var(--center-channel-color-rgb), 0.16); - } - - img { + display: block; + overflow: hidden; width: $app-bar-icon-size; height: $app-bar-icon-size; + margin: 0 auto; border-radius: 50%; - } - } + line-height: 1; - span:not(.pulsating_dot) { - padding: 2px; - background-color: white; - fill: var(--button-bg); - font-size: 14px; - line-height: 20px; - vertical-align: middle; + &:hover { + box-shadow: 0 0 0 2px rgba(var(--center-channel-color-rgb), 0.16); + } - &.CompassIcon, - &.icon-brand-zoom { - font-size: 20px; - - &::before { - margin: 0 0 0 0.5px; + img { + width: $app-bar-icon-size; + height: $app-bar-icon-size; + border-radius: 50%; } } - } - .app-bar__old-icon { - color: rgba(var(--center-channel-color-rgb), 0.56); + span:not(.pulsating_dot) { + padding: 2px; + background-color: white; + fill: var(--button-bg); + font-size: 14px; + line-height: 20px; + vertical-align: middle; - &:hover, - &--active { - color: rgba(var(--center-channel-color-rgb), 0.72); + &.CompassIcon, + &.icon-brand-zoom { + font-size: 20px; + + &::before { + margin: 0 0 0 0.5px; + } + } + } + + .app-bar__old-icon { + color: rgba(var(--center-channel-color-rgb), 0.56); + + &:hover, + &--active { + color: rgba(var(--center-channel-color-rgb), 0.72); + } + } + + .app-bar__icon-inner--centered { + display: grid; + place-items: center; } } - .app-bar__icon-inner--centered { - display: grid; - place-items: center; + .app-bar__divider { + width: 28px; + border-top: 1px solid rgba(var(--center-channel-color-rgb), 0.16); + margin-top: 14px; + margin-bottom: 14px; + } + + .app-bar__icon.channel-header__icon--active { + background: rgba(var(--button-bg-rgb), 0.08); + color: var(--button-bg); + fill: var(--button-bg); } } - .app-bar__divider { - width: 28px; - border-top: 1px solid rgba(var(--center-channel-color-rgb), 0.16); - margin-top: 14px; - margin-bottom: 14px; - } + &__bottom { + display: flex; + flex-flow: column; + align-items: center; + padding-top: 24px; + padding-bottom: 36px; + background-color: rgba(var(--center-channel-color-rgb), 0.04); - .app-bar__icon.channel-header__icon--active { - background: rgba(var(--button-bg-rgb), 0.08); - color: var(--button-bg); - fill: var(--button-bg); + .app_bar__marketplace_button { + @include icon-button; + @include icon-button-small-compact; + } } } // This style is defined outside the .app-bar block above because it doesn't seem to work when defined there -.app-bar::-webkit-scrollbar { +.app-bar__top::-webkit-scrollbar { display: none; } diff --git a/webapp/channels/src/components/app_bar/app_bar.test.tsx b/webapp/channels/src/components/app_bar/app_bar.test.tsx index 03598dbf3d..3f8d429853 100644 --- a/webapp/channels/src/components/app_bar/app_bar.test.tsx +++ b/webapp/channels/src/components/app_bar/app_bar.test.tsx @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import React from 'react'; -import {mount} from 'enzyme'; +import {mount, shallow} from 'enzyme'; import 'jest-styled-components'; import {AppBinding} from '@mattermost/types/apps'; @@ -10,6 +10,7 @@ import {AppBinding} from '@mattermost/types/apps'; import {PluginComponent} from 'types/store/plugins'; import {GlobalState} from 'types/store'; +import {Permissions} from 'mattermost-redux/constants'; import {AppBindingLocations} from 'mattermost-redux/constants/apps'; import AppBar from './app_bar'; @@ -82,6 +83,21 @@ describe('components/app_bar/app_bar', () => { myPreferences: { }, } as any, + users: { + currentUserId: 'user1', + profiles: { + user1: { + roles: 'system_user', + }, + }, + } as any, + roles: { + roles: { + system_user: { + permissions: [], + }, + }, + } as any, }, } as GlobalState; }); @@ -134,4 +150,48 @@ describe('components/app_bar/app_bar', () => { expect(wrapper).toMatchSnapshot(); }); + + test('should not show marketplace if disabled or user does not have SYSCONSOLE_WRITE_PLUGINS permission', async () => { + mockState.entities.general = { + config: { + EnableAppBar: 'true', + FeatureFlagAppsEnabled: 'true', + EnableMarketplace: 'true', + PluginsEnabled: 'true', + }, + } as any; + + const wrapper = shallow( + , + ); + + expect(wrapper.find('AppBarMarketplace').exists()).toEqual(false); + }); + + test('should show marketplace if enabled and user has SYSCONSOLE_WRITE_PLUGINS permission', async () => { + mockState.entities.general = { + config: { + EnableAppBar: 'true', + FeatureFlagAppsEnabled: 'true', + EnableMarketplace: 'true', + PluginsEnabled: 'true', + }, + } as any; + + mockState.entities.roles = { + roles: { + system_user: { + permissions: [ + Permissions.SYSCONSOLE_WRITE_PLUGINS, + ], + }, + }, + } as any; + + const wrapper = shallow( + , + ); + + expect(wrapper.find('AppBarMarketplace').exists()).toEqual(true); + }); }); diff --git a/webapp/channels/src/components/app_bar/app_bar.tsx b/webapp/channels/src/components/app_bar/app_bar.tsx index ec05a5bd19..3ae5815c2a 100644 --- a/webapp/channels/src/components/app_bar/app_bar.tsx +++ b/webapp/channels/src/components/app_bar/app_bar.tsx @@ -12,8 +12,15 @@ import {getAppBarAppBindings} from 'mattermost-redux/selectors/entities/apps'; import {getAppBarPluginComponents, getChannelHeaderPluginComponents, shouldShowAppBar} from 'selectors/plugins'; import {suitePluginIds} from 'utils/constants'; +import {Permissions} from 'mattermost-redux/constants'; +import {isMarketplaceEnabled} from 'mattermost-redux/selectors/entities/general'; +import {haveICurrentTeamPermission} from 'mattermost-redux/selectors/entities/roles'; + +import {GlobalState} from '@mattermost/types/store'; + import AppBarPluginComponent, {isAppBarPluginComponent} from './app_bar_plugin_component'; import AppBarBinding, {isAppBinding} from './app_bar_binding'; +import AppBarMarketplace from './app_bar_marketplace'; import './app_bar.scss'; @@ -24,6 +31,10 @@ export default function AppBar() { const currentProduct = useCurrentProduct(); const currentProductId = useCurrentProductId(); const enabled = useSelector(shouldShowAppBar); + const canOpenMarketplace = useSelector((state: GlobalState) => ( + isMarketplaceEnabled(state) && + haveICurrentTeamPermission(state, Permissions.SYSCONSOLE_WRITE_PLUGINS) + )); if ( !enabled || @@ -40,11 +51,15 @@ export default function AppBar() { const items: ReactNode[] = [ ...coreProductComponents, - divider, + getDivider(coreProductComponents.length, (pluginComponents.length + channelHeaderComponents.length + appBarBindings.length)), ...pluginComponents, ...channelHeaderComponents, ...appBarBindings, ].map((x) => { + if (!x) { + return x; + } + if (isAppBarPluginComponent(x)) { if (!inScope(x.supportedProductIds ?? null, currentProductId, currentProduct?.pluginId)) { return null; @@ -69,26 +84,23 @@ export default function AppBar() { return x; }); - if (!items.some((x) => Boolean(x) && x !== divider)) { - return null; - } - return (
- {items} +
+ {items} +
+ {canOpenMarketplace && ( +
+ +
+ )}
); } -const divider = ( +const getDivider = (beforeCount: number, afterCount: number) => (beforeCount && afterCount ? (
-); +) : null); diff --git a/webapp/channels/src/components/app_bar/app_bar_marketplace.tsx b/webapp/channels/src/components/app_bar/app_bar_marketplace.tsx new file mode 100644 index 0000000000..11b379bd75 --- /dev/null +++ b/webapp/channels/src/components/app_bar/app_bar_marketplace.tsx @@ -0,0 +1,60 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React, {useCallback} from 'react'; +import {useDispatch} from 'react-redux'; +import {useIntl} from 'react-intl'; +import {Tooltip} from 'react-bootstrap'; + +import Icon from '@mattermost/compass-components/foundations/icon'; + +import {openModal} from 'actions/views/modals'; + +import MarketplaceModal from 'components/plugin_marketplace'; +import OverlayTrigger from 'components/overlay_trigger'; + +import {Constants, ModalIdentifiers} from 'utils/constants'; + +const AppBarMarketplace = () => { + const {formatMessage} = useIntl(); + const dispatch = useDispatch(); + + const handleOpenMarketplace = useCallback(() => { + dispatch( + openModal({ + modalId: ModalIdentifiers.PLUGIN_MARKETPLACE, + dialogType: MarketplaceModal, + dialogProps: {openedFrom: 'app_bar'}, + }), + ); + }, [dispatch]); + + const label = formatMessage({id: 'app_bar.marketplace', defaultMessage: 'App Marketplace'}); + + return ( + + {label} + + )} + > + + + ); +}; + +export default AppBarMarketplace; diff --git a/webapp/channels/src/components/custom_open_plugin_install_post_renderer/index.tsx b/webapp/channels/src/components/custom_open_plugin_install_post_renderer/index.tsx index 06020b66c4..d16f073cf1 100644 --- a/webapp/channels/src/components/custom_open_plugin_install_post_renderer/index.tsx +++ b/webapp/channels/src/components/custom_open_plugin_install_post_renderer/index.tsx @@ -301,6 +301,7 @@ export default function OpenPluginInstallPost(props: {post: Post}) { className='color--link' modalId={ModalIdentifiers.PLUGIN_MARKETPLACE} dialogType={MarketplaceModal} + dialogProps={{openedFrom: 'open_plugin_install_post'}} > {text} diff --git a/webapp/channels/src/components/global_header/left_controls/product_menu/product_menu_list/__snapshots__/product_menu_list.test.tsx.snap b/webapp/channels/src/components/global_header/left_controls/product_menu/product_menu_list/__snapshots__/product_menu_list.test.tsx.snap index 94179aca7a..f8ea6848e7 100644 --- a/webapp/channels/src/components/global_header/left_controls/product_menu/product_menu_list/__snapshots__/product_menu_list.test.tsx.snap +++ b/webapp/channels/src/components/global_header/left_controls/product_menu/product_menu_list/__snapshots__/product_menu_list.test.tsx.snap @@ -147,6 +147,11 @@ exports[`components/global/product_switcher_menu should match snapshot with id 1 teamId="" > } id="marketplaceModal" modalId="plugin_marketplace" show={false} - text="Marketplace" + text="App Marketplace" /> } id="marketplaceModal" modalId="plugin_marketplace" show={true} - text="Marketplace" + text="App Marketplace" /> } id="marketplaceModal" modalId="plugin_marketplace" show={false} - text="Marketplace" + text="App Marketplace" /> { modalId={ModalIdentifiers.PLUGIN_MARKETPLACE} show={isMessaging && !isMobile && enablePluginMarketplace} dialogType={MarketplaceModal} - text={formatMessage({id: 'navbar_dropdown.marketplace', defaultMessage: 'Marketplace'})} + dialogProps={{openedFrom: 'product_menu'}} + text={formatMessage({id: 'navbar_dropdown.marketplace', defaultMessage: 'App Marketplace'})} icon={ } /> diff --git a/webapp/channels/src/components/plugin_marketplace/marketplace_modal.test.tsx b/webapp/channels/src/components/plugin_marketplace/marketplace_modal.test.tsx index 4bf24800a9..3e2938603c 100644 --- a/webapp/channels/src/components/plugin_marketplace/marketplace_modal.test.tsx +++ b/webapp/channels/src/components/plugin_marketplace/marketplace_modal.test.tsx @@ -119,6 +119,7 @@ describe('components/marketplace/', () => { pluginStatuses: {}, siteURL: 'http://example.com', firstAdminVisitMarketplaceStatus: false, + openedFrom: 'actions_menu', actions: { closeModal: jest.fn(), fetchListing: jest.fn(() => { @@ -191,8 +192,21 @@ describe('components/marketplace/', () => { wrapper.setState({filter: 'nps'}); wrapper.instance().doSearch(); - expect(trackEvent).toHaveBeenCalledWith('plugins', 'ui_marketplace_opened'); + expect(trackEvent).toHaveBeenCalledWith('plugins', 'ui_marketplace_opened', {from: 'actions_menu'}); expect(trackEvent).toHaveBeenCalledWith('plugins', 'ui_marketplace_search', {filter: 'nps'}); }); + + test('Should call for opened track event on mount', () => { + const openedFrom = 'actions_menu'; + + shallow( + , + ); + + expect(trackEvent).toHaveBeenCalledWith('plugins', 'ui_marketplace_opened', {from: openedFrom}); + }); }); }); diff --git a/webapp/channels/src/components/plugin_marketplace/marketplace_modal.tsx b/webapp/channels/src/components/plugin_marketplace/marketplace_modal.tsx index bc80cde1de..59ac7510ba 100644 --- a/webapp/channels/src/components/plugin_marketplace/marketplace_modal.tsx +++ b/webapp/channels/src/components/plugin_marketplace/marketplace_modal.tsx @@ -31,6 +31,8 @@ const MarketplaceTabs = { const SEARCH_TIMEOUT_MILLISECONDS = 200; +export type OpenedFromType = 'actions_menu' | 'app_bar' | 'channel_header' | 'command' | 'open_plugin_install_post' | 'product_menu'; + type AllListingProps = { listing: Array; }; @@ -97,6 +99,7 @@ export type MarketplaceModalProps = { siteURL: string; pluginStatuses?: Record; firstAdminVisitMarketplaceStatus: boolean; + openedFrom: OpenedFromType; actions: { closeModal: () => void; fetchListing(localOnly?: boolean): Promise<{error?: Error}>; @@ -131,7 +134,7 @@ export default class MarketplaceModal extends React.PureComponent Date: Mon, 27 Mar 2023 16:28:42 +0200 Subject: [PATCH 09/11] Move /e2e -> /e2e-tests --- .github/codeql/codeql-config.yml | 4 +- .github/workflows/channels-ci.yml | 40 +++++++++--------- .../{e2e-ci.yml => e2e-tests-ci.yml} | 10 ++--- .gitignore | 34 +++++++-------- {e2e => e2e-tests}/.gitignore | 0 {e2e => e2e-tests}/cypress/.eslintignore | 0 {e2e => e2e-tests}/cypress/.eslintrc.json | 0 {e2e => e2e-tests}/cypress/Dockerfile.webhook | 0 {e2e => e2e-tests}/cypress/README-Subpath.md | 0 {e2e => e2e-tests}/cypress/cypress.config.ts | 0 .../cypress/generate_test_cycle.js | 0 {e2e => e2e-tests}/cypress/package-lock.json | 0 {e2e => e2e-tests}/cypress/package.json | 0 .../@testing-library+cypress+9.0.0.patch | 0 {e2e => e2e-tests}/cypress/run_test_cycle.js | 0 {e2e => e2e-tests}/cypress/run_tests.js | 0 {e2e => e2e-tests}/cypress/save_report.js | 0 .../Ignore-X-Frame-headers/background.js | 0 .../Ignore-X-Frame-headers/manifest.json | 0 .../tests/fixtures/MM-logo-horizontal.png | Bin .../fixtures/animated-gif-image-file.gif | Bin .../cypress/tests/fixtures/bmp-image-file.bmp | Bin .../tests/fixtures/bot-default-avatar.png | Bin .../tests/fixtures/client_billing.json | 0 .../fixtures/console-example-inputs.json | 0 .../tests/fixtures/date_time_format.js | 0 .../cypress/tests/fixtures/favicon-16x16.png | Bin .../tests/fixtures/favicon-default-16x16.png | Bin .../tests/fixtures/favicon-mentions-16x16.png | Bin .../tests/fixtures/favicon-unread-16x16.png | Bin .../tests/fixtures/gif-image-file-resized.gif | Bin .../cypress/tests/fixtures/gif-image-file.gif | Bin .../tests/fixtures/hooks/message_menus.json | 0 .../hooks/message_menus_with_datasource.json | 0 .../cypress/tests/fixtures/huge-image.jpg | Bin .../cypress/tests/fixtures/image-1000x40.jpg | Bin .../cypress/tests/fixtures/image-1600x40.jpg | Bin .../cypress/tests/fixtures/image-20x20.jpg | Bin .../cypress/tests/fixtures/image-400x40.jpg | Bin .../cypress/tests/fixtures/image-400x400.jpg | Bin .../cypress/tests/fixtures/image-40x400.jpg | Bin .../cypress/tests/fixtures/image-50x50.jpg | Bin .../cypress/tests/fixtures/image-60x60.jpg | Bin .../tests/fixtures/image-small-height.png | Bin .../tests/fixtures/image-small-width.png | Bin .../interactive_message_menus_options.json | 0 .../cypress/tests/fixtures/jpg-image-file.jpg | Bin .../cypress/tests/fixtures/ldap-add-user.ldif | 0 .../tests/fixtures/ldap-reset-data.ldif | 0 .../cypress/tests/fixtures/ldap_users.json | 0 .../cypress/tests/fixtures/long_text_post.txt | 0 .../cypress/tests/fixtures/m4a-audio-file.m4a | Bin .../fixtures/markdown/markdown_basic.html | 0 .../tests/fixtures/markdown/markdown_basic.md | 0 .../markdown/markdown_block_quotes_1.html | 0 .../markdown/markdown_block_quotes_1.md | 0 .../markdown/markdown_block_quotes_2.md | 0 .../markdown/markdown_carriage_return.html | 0 .../markdown/markdown_carriage_return.md | 0 .../markdown_carriage_return_two_lines.html | 0 .../markdown_carriage_return_two_lines.md | 0 .../markdown/markdown_code_block.html | 0 .../fixtures/markdown/markdown_code_block.md | 0 .../markdown/markdown_code_syntax.html | 0 .../markdown/markdown_escape_characters.html | 0 .../markdown/markdown_escape_characters.md | 0 .../fixtures/markdown/markdown_headings.html | 0 .../fixtures/markdown/markdown_headings.md | 0 .../markdown/markdown_inline_code.html | 0 .../fixtures/markdown/markdown_inline_code.md | 0 .../markdown/markdown_inline_images_1.md | 0 .../markdown/markdown_inline_images_2.md | 0 .../markdown/markdown_inline_images_3.md | 0 .../markdown/markdown_inline_images_4.md | 0 .../markdown/markdown_inline_images_5.md | 0 .../markdown/markdown_inline_images_6.md | 0 .../fixtures/markdown/markdown_latex.html | 0 .../tests/fixtures/markdown/markdown_latex.md | 0 .../fixtures/markdown/markdown_lines.html | 0 .../tests/fixtures/markdown/markdown_lines.md | 0 .../fixtures/markdown/markdown_list.html | 0 .../markdown/markdown_not_autolink.html | 0 .../markdown/markdown_not_autolink.md | 0 .../markdown/markdown_not_in_code_block.html | 0 .../markdown/markdown_not_in_code_block.md | 0 .../fixtures/markdown/markdown_postgres.html | 0 .../fixtures/markdown/markdown_postgres.md | 0 .../fixtures/markdown/markdown_python.html | 0 .../fixtures/markdown/markdown_python.md | 0 .../fixtures/markdown/markdown_shell.html | 0 .../tests/fixtures/markdown/markdown_shell.md | 0 .../fixtures/markdown/markdown_tables.html | 0 .../markdown/markdown_test_basic.html | 0 .../markdown/markdown_text_style.html | 0 .../fixtures/markdown/markdown_text_style.md | 0 .../markdown/markdown_typescript.html | 0 .../fixtures/markdown/markdown_typescript.md | 0 .../tests/fixtures/mattermost-icon.png | Bin .../fixtures/mattermost-icon_128x128.png | Bin .../cypress/tests/fixtures/messages.js | 0 .../fixtures/mm_file_testing/Audio/AAC.aac | Bin .../fixtures/mm_file_testing/Audio/FLAC.flac | Bin .../fixtures/mm_file_testing/Audio/M4A.m4a | Bin .../fixtures/mm_file_testing/Audio/M4R.m4r | Bin .../fixtures/mm_file_testing/Audio/MP3.mp3 | Bin .../fixtures/mm_file_testing/Audio/OGG.ogg | Bin .../fixtures/mm_file_testing/Audio/WAV.wav | Bin .../fixtures/mm_file_testing/Audio/WMA.wma | Bin .../tests/fixtures/mm_file_testing/Code/JSON | 0 .../fixtures/mm_file_testing/Code/Patch.diff | 0 .../fixtures/mm_file_testing/Code/Python | 0 .../mm_file_testing/Documents/Excel.xlsx | Bin .../mm_file_testing/Documents/PDF.pdf | Bin .../mm_file_testing/Documents/PPT.pptx | Bin .../mm_file_testing/Documents/Text.txt | 0 .../mm_file_testing/Documents/Word.docx | Bin .../fixtures/mm_file_testing/Images/BMP.bmp | Bin .../fixtures/mm_file_testing/Images/GIF.gif | Bin .../fixtures/mm_file_testing/Images/JPG.jpg | Bin .../fixtures/mm_file_testing/Images/PNG.png | Bin .../fixtures/mm_file_testing/Images/PSD.psd | Bin .../fixtures/mm_file_testing/Images/TIFF.tif | Bin .../fixtures/mm_file_testing/Video/AVI.avi | Bin .../fixtures/mm_file_testing/Video/MKV.mkv | Bin .../fixtures/mm_file_testing/Video/MOV.mov | Bin .../fixtures/mm_file_testing/Video/MP4.mp4 | Bin .../fixtures/mm_file_testing/Video/MPG.mpg | Bin .../fixtures/mm_file_testing/Video/WEBM.webm | Bin .../fixtures/mm_file_testing/Video/WMV.wmv | Bin .../cypress/tests/fixtures/mp3-audio-file.mp3 | Bin .../cypress/tests/fixtures/mp4-video-file.mp4 | Bin .../tests/fixtures/mpeg-video-file.mpg | Bin .../tests/fixtures/playbook-export.json | 0 .../cypress/tests/fixtures/png-image-file.png | Bin .../tests/fixtures/powerpoint-file.ppt | Bin .../tests/fixtures/powerpointx-file.pptx | Bin .../tests/fixtures/saml_ldap_users.json | 0 .../cypress/tests/fixtures/saml_users.json | 0 .../cypress/tests/fixtures/small-image.png | Bin .../cypress/tests/fixtures/svg.svg | 0 .../fixtures/system-roles-console-access.json | 0 .../cypress/tests/fixtures/theme.json | 0 .../tests/fixtures/tiff-image-file.tif | Bin .../cypress/tests/fixtures/timeouts.js | 0 .../tests/fixtures/txt-changed-as-png.png | 0 .../cypress/tests/fixtures/webhook_icon.jpg | Bin .../tests/fixtures/webhook_override_icon.png | Bin .../cypress/tests/fixtures/word-file.doc | Bin .../cypress/tests/fixtures/wordx-file.docx | Bin .../integration/boards/card_badges_spec.ts | 0 .../boards/card_urlproperty_spec.ts | 0 .../integration/boards/create_board_spec.ts | 0 .../boards/group_by_property_spec.ts | 0 .../integration/boards/manage_groups_spec.ts | 0 .../accessibility_account_settings_spec.js | 0 .../accessibility_buttons_spec.js | 0 .../accessibility_dropdowns_spec.js | 0 .../accessibility/accessibility_image_spec.js | 0 .../accessibility_keyboard_usability_spec.js | 0 .../accessibility_nav_diff_regions_spec.js | 0 .../accessibility_popovers_spec.js | 0 .../accessibility/accessibility_post_spec.js | 0 .../accessibility_sidebar_dm_spec.js | 0 .../accessibility_sidebar_spec.ts | 0 .../account_settings/account_settings_spec.ts | 0 .../main_menu_stays_open_spec.ts | 0 .../profile/account_settings_position_spec.ts | 0 .../account_settings/profile/email_spec.ts | 0 .../profile/fullname_edit_spec.ts | 0 .../profile/fullname_truncate_spec.ts | 0 .../profile/help_text_link_spec.ts | 0 .../account_settings/profile/nickname_spec.ts | 0 .../profile/profile_picture_change_spec.ts | 0 .../profile/profile_picture_spec.ts | 0 .../account_settings/profile/username_spec.ts | 0 .../security/access_history_spec.ts | 0 .../security/active_sessions_spec.ts | 0 .../security/password_spec.ts | 0 .../ad_ldap/saml_ldap_sync_id_attrib_spec.js | 0 .../ad_ldap/saml_ldap_sync_remove_spec.js | 0 .../channels/ad_ldap/saml_ldap_sync_spec.js | 0 .../archive_channel_add_reaction_spec.ts | 0 .../archive_channel_header_spec.ts | 0 .../archive_channel_member_spec.ts | 0 .../archive_channel_operations_spec.ts | 0 .../archive_channel_post_spec.ts | 0 .../archive_channel_reaction_spec.ts | 0 .../archive_channel_search_spec.ts | 0 .../archived_channel/archived_channel_spec.ts | 0 .../archived_leave_channel_spec.ts | 0 .../channels/archived_channel/helpers.ts | 0 .../join_archived_channel_spec.ts | 0 .../leave_archived_channel_spec.ts | 0 .../archived_channel/post_menu_spec.ts | 0 .../auth_sso/authentication_1_spec.ts | 0 .../auth_sso/authentication_2_spec.ts | 0 .../auth_sso/authentication_3_spec.ts | 0 .../auth_sso/authentication_4_spec.ts | 0 .../auth_sso/authentication_not_cloud_spec.ts | 0 .../auth_sso/hide_create_account_spec.ts | 0 .../channels/autocomplete/common_test.ts | 0 .../users_in_channel_switcher_spec.js | 0 .../users_in_message_input_box_spec.js | 0 .../autocomplete/database/users_spec.js | 0 .../channels/autocomplete/helpers.ts | 0 .../channels/benchmark/message_spec.ts | 0 .../channels/bot_accounts/bot_api_1_spec.js | 0 .../channels/bot_accounts/bot_api_2_spec.js | 0 .../bot_accounts/bot_api_not_cloud_spec.js | 0 .../bot_accounts/bot_channel_intro_spec.js | 0 .../channels/bot_accounts/create_bot_spec.js | 0 .../bot_accounts/crud_not_cloud_spec.js | 0 .../channels/bot_accounts/crud_spec.js | 0 .../bot_accounts/display_name_spec.js | 0 .../channels/bot_accounts/edit_bot_spec.js | 0 .../bot_accounts/edit_bot_username_spec.js | 0 .../channels/bot_accounts/helpers.js | 0 .../channels/bot_accounts/in_lists_1_spec.js | 0 .../channels/bot_accounts/in_lists_2_spec.js | 0 .../in_teams_and_channels_spec.js | 0 .../managing_bot_accounts_not_cloud_spec.js | 0 .../managing_bot_accounts_spec.js | 0 .../bot_accounts/post_message_spec.js | 0 .../bot_accounts/promote_demote_spec.js | 0 .../bot_accounts/sidebar_display_spec.js | 0 .../channels/bot_accounts/tags_spec.js | 0 .../channel/archived_channels_1_spec.js | 0 .../channel/archived_channels_2_spec.js | 0 .../channels/channel/channel_info_rhs_spec.js | 0 .../channel/channel_members_rhs_spec.js | 0 .../channel_mention_autocomplete_spec.js | 0 .../channel/channel_name_tooltips_spec.js | 0 .../channels/channel/channel_routing_spec.js | 0 .../channels/channel/channel_settings_spec.js | 0 .../channels/channel/channel_switcher_spec.js | 0 .../channel/close_direct_group_spec.js | 0 .../convert_channel_to_private_spec.js | 0 ...ve_and_archive_channel_destructive_spec.ts | 0 .../channels/channel/leave_channel_spec.js | 0 .../channels/channel/more_channels_spec.js | 0 .../channel/more_public_channels_spec.js | 0 .../channel/new_channel_with_board_spec.js | 0 ...pen_rhs_coming_from_system_console_spec.ts | 0 ...updates_manage_channel_members_rhs_spec.js | 0 ...updates_manage_channel_members_rhs_spec.js | 0 .../add_users_to_channel_spec.ts | 0 .../channel_settings/channel_header_spec.ts | 0 .../channel_name_validations_spec.ts | 0 .../more_unreads_position_with_scroll_spec.ts | 0 .../channels/channel_sidebar/category.d.ts | 0 .../category_collapsing_spec.ts | 0 .../channel_sidebar/category_muting_spec.ts | 0 .../category_sorting_1_spec.ts | 0 .../channel_sidebar/category_sorting_spec.ts | 0 .../channel_sidebar/channel_sidebar_spec.ts | 0 .../channel_sidebar/custom_categories_spec.ts | 0 .../channel_sidebar/dm_category_spec.ts | 0 .../channel_sidebar/dm_gm_behaviour_spec.ts | 0 .../dm_gm_filtering_sorting_spec.ts | 0 .../dm_sidebar_not_remove_spec.ts | 0 .../channel_sidebar/drag_and_drop_spec.ts | 0 .../group_unreads_separately_spec.ts | 0 .../channels/channel_sidebar/helpers.ts | 0 .../history_channel_switcher_spec.ts | 0 .../channels/channel_sidebar/hotkeys_spec.ts | 0 .../new_category_badge_spec.ts | 0 .../new_channel_dropdown_spec.ts | 0 .../sidebar_category_menu_spec.ts | 0 .../sidebar_channel_menu_spec.ts | 0 .../channel_sidebar/unread_filter_spec.ts | 0 .../channel_notifications_spec.js | 0 .../crt_settings_spec.js | 0 .../collapsed_reply_threads/crt_tour_spec.js | 0 .../collapsed_reply_threads/files_1_spec.js | 0 .../collapsed_reply_threads/files_spec.js | 0 .../collapsed_reply_threads/following_spec.js | 0 .../global_threads_spec.js | 0 .../last_viewed_spec.js | 0 .../collapsed_reply_threads/replies_spec.js | 0 .../collapsed_reply_threads/unread_spec.js | 0 .../channels/commands/leave_channel_spec.ts | 0 .../custom_status/custom_status_1_spec.ts | 0 .../custom_status/custom_status_2_spec.ts | 0 .../custom_status/custom_status_3_spec.ts | 0 .../custom_status/custom_status_4_spec.ts | 0 .../custom_status/custom_status_5_spec.ts | 0 .../custom_status/custom_status_6_spec.ts | 0 .../custom_status_expiry_1_spec.ts | 0 .../custom_status_expiry_2_spec.ts | 0 .../custom_status_expiry_3_spec.ts | 0 .../custom_status_expiry_4_spec.ts | 0 .../channels/emoji/custom_emoji_1_1_spec.ts | 0 .../channels/emoji/custom_emoji_1_spec.ts | 0 .../channels/emoji/custom_emoji_2_1_spec.ts | 0 .../channels/emoji/custom_emoji_2_spec.ts | 0 .../channels/emoji/custom_emoji_3_spec.ts | 0 .../integration/channels/emoji/helpers.js | 0 .../emoji/recently_used_emoji_1_spec.ts | 0 .../emoji/recently_used_emoji_2_spec.ts | 0 .../channels/emoji/sorted_emojis_spec.ts | 0 .../accessibility_input_fields_spec.js | 0 .../accessibility_modals_dialogs_1_spec.js | 0 .../accessibility_modals_dialogs_spec.js | 0 .../auth_sso/authentication_spec.js | 0 .../auth_sso/mfa_authentication_spec.js | 0 .../managing_bot_accounts_spec.js | 0 .../enterprise/channel/channel_groups_spec.ts | 0 .../cloud/billing/after_subscription_spec.js | 0 .../billing_history_free_trial_spec.ts | 0 .../cloud/billing/cloud_pricing_modal_spec.ts | 0 .../company_information_free_trial_spec.ts | 0 .../billing/downgrade_feedback_modal_spec.ts | 0 .../cloud/billing/notify_admin_spec.ts | 0 .../cloud/billing/payment_free_trial_spec.ts | 0 .../billing/subscriptions_free_trial_spec.ts | 0 .../cloud/billing/yearly_subscription_spec.js | 0 .../channels_spec.js | 0 .../channels_with_special_characters_spec.js | 0 .../helpers/index.js | 0 .../renaming_spec.js | 0 .../renaming_team_spec.js | 0 .../system_console_spec.js | 0 .../users_in_channel_switcher_spec.js | 0 .../users_in_message_input_box_spec.js | 0 .../elasticsearch_autocomplete/users_spec.js | 0 .../email_login_activity_spec.ts | 0 .../not_extended_when_disabled/helpers.js | 0 .../with_email_login_spec.js | 0 .../with_ldap_login_spec.js | 0 .../with_saml_login_spec.js | 0 .../extend_session/session_length_spec.ts | 0 .../group_mentions_permissions_spec.js | 0 .../group_mentions_posts_spec.js | 0 .../group_mentions_system_messages_spec.js | 0 .../enterprise/group_mentions/helpers.js | 0 .../guest_accounts/guest_add_spec.ts | 0 .../guest_experience_ui_spec.ts | 0 .../guest_accounts/guest_feature_spec.ts | 0 .../guest_identification_spec.ts | 0 .../guest_identification_ui_not_cloud_spec.ts | 0 .../guest_identification_ui_spec.ts | 0 .../guest_invitation_ui_more_spec.ts | 0 .../guest_invitation_ui_spec.ts | 0 .../guest_accounts/guest_popover_ui_spec.ts | 0 .../guest_accounts/guest_removal_ui_spec.ts | 0 .../enterprise/guest_accounts/helpers.ts | 0 .../member_invitation_ui_spec.ts | 0 .../system_console_guest_access_ui_spec.ts | 0 ...tem_console_manage_guest_not_cloud_spec.ts | 0 .../system_console_manage_guest_spec.ts | 0 .../integrations/incoming_webhook_spec.js | 0 .../enterprise/ldap/ldap_group_sync_spec.js | 0 .../enterprise/ldap/ldap_guest_spec.js | 0 .../enterprise/ldap/ldap_login_spec.js | 0 .../enterprise/ldap/ldap_setting_spec.js | 0 .../ldap_group/channel_modes_spec.ts | 0 .../ldap_group/group_mentions_spec.ts | 0 .../ldap_group/groups_assign_roles_spec.ts | 0 .../enterprise/ldap_group/invite_bot_spec.ts | 0 .../ldap_group/search_channels_spec.ts | 0 .../team_and_channel_assign_roles_spec.ts | 0 .../channels/enterprise/oauth/oauth_spec.ts | 0 .../permissions/team_permissions_spec.ts | 0 .../profile_popover/profile_popover_spec.ts | 0 .../profile_popover_spec_user_a_b_spec.ts | 0 .../enterprise/saml/okta_login_spec.js | 0 .../enterprise/saml/saml_automated_spec.js | 0 .../enterprise/saml/saml_guest_member_spec.js | 0 .../enterprise/saml/saml_metadata_spec.js | 0 .../self_hosted_pricing_modal_spec.ts | 0 .../self-hosted/self_hosted_purchase_spec.ts | 0 .../about/edition_and_license_spec.js | 0 .../about/starter_edition_spec.js | 0 .../system_console/archived_channels_spec.js | 0 .../authentication_method_spec.js | 0 .../system_console/channel_members_spec.js | 0 .../channel_mentions_spec.js | 0 .../channel_moderation/constants.js | 0 .../channel_moderation/create_posts_spec.js | 0 .../channel_moderation/helpers.js | 0 .../higher_scoped_scheme_spec.js | 0 .../channel_moderation/manage_members_spec.js | 0 .../channel_moderation/post_reactions_spec.js | 0 .../channel_moderation/system_config_spec.js | 0 .../enterprise/system_console/cluster_spec.js | 0 .../compliance_export_multiple_post_spec.js | 0 .../compliance/compliance_export_ui_spec.js | 0 .../data_retention_policies_2_spec.js | 0 .../data_retention_policies_3_spec.js | 0 .../data_retention_policies_4_spec.js | 0 .../data_retention_policies_spec.js | 0 ...ownload_bot_compliance_export_file_spec.js | 0 .../download_compliance_export_file_spec.js | 0 .../system_console/compliance/helpers.js | 0 .../compliance/s3_bucket_storage_spec.js | 0 .../edition_and_license_link_spec.js | 0 .../system_console/environment_spec.js | 0 .../group_configuration_spec.js | 0 .../enterprise/system_console/helpers.js | 0 .../limited_console_access_not_cloud_spec.js | 0 .../limited_console_access_spec.js | 0 .../system_console/main_menu_spec.js | 0 .../system_console/openid/openid_spec.js | 0 .../reporting/site_statistics_spec.js | 0 .../system_console/search_box_spec.js | 0 .../system_console/settings_spec.js | 0 .../sidebar_link_navigation_cloud_spec.js | 0 .../sidebar_link_navigation_e20_spec.js | 0 .../support_packet_generation_spec.js | 0 .../system_scheme_permission_part2_spec.js | 0 .../system_scheme_permission_spec.js | 0 .../system_console/team_guest_channel_spec.js | 0 .../system_console/team_members_spec.js | 0 .../team_scheme_permission_part2_spec.js | 0 .../team_scheme_permission_spec.js | 0 .../ui_and_api/notifications_spec.js | 0 .../enterprise/teams/search_teams_spec.js | 0 .../cancel_file_upload_spec.js | 0 .../channel_files_spec.js | 0 .../cloud_upload_files_spec.js | 0 .../disabled_file_upload_spec.js | 0 .../edit_message_with_attachment_spec.js | 0 .../file_preview_audio_spec.js | 0 .../file_preview_generic_spec.js | 0 .../file_preview_image_spec.js | 0 .../file_preview_video_spec.js | 0 .../channels/files_and_attachments/helpers.js | 0 .../image_link_preview_1_spec.js | 0 .../image_link_preview_new_window_spec.js | 0 .../image_link_preview_spec.js | 0 .../files_and_attachments/paste_image_spec.js | 0 .../upload_files_not_cloud_spec.js | 0 .../upload_files_spec.js | 0 .../youtube_video_spec.js | 0 .../channels/insights/last_viewed_spec.js | 0 .../common_commands_1_spec.js | 0 .../common_commands_2_spec.js | 0 .../common_commands_3_spec.js | 0 .../builtin_commands/groupmsg_command_spec.js | 0 .../integrations/builtin_commands/helper.js | 0 .../builtin_commands/invalid_commands_spec.js | 0 .../builtin_commands/invite_command_spec.js | 0 .../invite_people_command_spec.js | 0 .../user_status_commands_spec.js | 0 .../builtin_commands/user_status_spec.js | 0 .../custom_slash_commands_spec.js | 0 .../custom_slash_commands/helpers.js | 0 .../slash_commands_spec.js | 0 .../attachment_does_not_collapse_spec.ts | 0 .../incoming_webhook/basic_formatting_spec.js | 0 .../cancel_out_of_edit_spec.js | 0 .../incoming_webhook/copy_icon_spec.js | 0 .../delete_incoming_webhook_spec.js | 0 .../description_length_check_spec.js | 0 ...disallow_username_profile_override_spec.js | 0 .../edit_incoming_webhook_spec.js | 0 .../integrations/incoming_webhook/helpers.js | 0 .../inapp_username_profile_override_spec.js | 0 .../incoming_webhook_creates_dm_spec.js | 0 .../incoming_webhook_is_image_only_spec.js | 0 ...ions_display_on_team_where_created_spec.js | 0 .../invalid_attachment_URL_webhook_spec.ts | 0 .../long_url_embedded_image_spec.js | 0 .../incoming_webhook/setting_spec.js | 0 .../setup_incoming_webhook_spec.js | 0 .../incoming_webhook/slack_formatting_spec.js | 0 ..._posts_when_creator_not_in_channel_spec.js | 0 .../integrations/integrations_page_spec.js | 0 ...integrations_search_gives_feedback_spec.js | 0 .../integrations/integrations_spec.js | 0 ...ssage_to_channel_via_slash_command_spec.js | 0 .../delete_outgoing_webhook_spec.js | 0 .../disable_outgoing_webhook_spec.js | 0 .../disable_override_username_profile_spec.js | 0 .../prompt_set_status_spec.js | 0 .../outgoing_webhook/regenerate_token_spec.js | 0 .../search_on_outgoing_webhooks_spec.js | 0 .../outgoing_webhook/token_copy_icon_spec.js | 0 ...plugin_slash_command_stays_visible_spec.js | 0 .../channels/integrations/poll_spec.js | 0 .../channels/integrations/regen_token_spec.js | 0 .../integrations/slash_commands_spec.js | 0 .../interactive_dialog/boolean_spec.js | 0 .../interactive_dialog/demo_boolean_spec.ts | 0 .../interactive_dialog/full_dialog_spec.js | 0 .../interactive_dialog/scrollable_spec.js | 0 .../interactive_dialog/simple_dialog_spec.js | 0 .../interactive_menu/basic_options_spec.js | 0 .../interactive_menu/select_with_keys_spec.js | 0 .../slack_parsing_message_button_spec.js | 0 .../alt_option_plus_up_down_spec.js | 0 .../keyboard_shortcuts/backspace_spec.js | 0 ...cmd_alt_I_toggles_channel_info_rhs_spec.js | 0 .../ctrl_cmd_k_at_username_spec.js | 0 .../ctrl_cmd_k_channel_switch_spec.js | 0 .../ctrl_cmd_k_focuses_message_box_spec.js | 0 ...k_open_channel_from_global_threads_spec.js | 0 .../ctrl_cmd_k_open_gm_with_mouse_spec.js | 0 .../ctrl_cmd_k_unreads_spec.js | 0 .../ctrl_cmd_k_user_from_other_team_spec.js | 0 .../ctrl_cmd_l_set_message_focus_spec.js | 0 .../ctrl_cmd_shift_a_account_settings_spec.js | 0 ..._l_does_not_change_focus_to_msgbox_spec.js | 0 .../ctrl_cmd_shift_m_spec.js | 0 .../ctrl_cmd_shift_slash/helpers.js | 0 .../not_open_emoji_picker_spec.js | 0 .../react_to_center_spec.js | 0 .../ctrl_cmd_shift_slash/react_to_rhs_spec.js | 0 .../ctrl_cmd_up_down_in_rhs_spec.js | 0 .../ctrl_cmd_up_down_no_action_spec.js | 0 .../keyboard_shortcuts/dot_menu_spec.js | 0 .../esc_close_modal_spec.js | 0 .../keyboard_shortcuts_1_spec.js | 0 .../keyboard_shortcuts_2_spec.js | 0 .../keyboard_shortcuts_3_spec.js | 0 .../shift_up_focuses_on_rhs_spec.js | 0 .../system_message_not_open_for_edit_spec.js | 0 .../up_arrow_edit_message_rhs_spec.js | 0 .../up_arrow_edit_message_spec.js | 0 .../large_data_sets/unreads_channels_spec.ts | 0 .../archive_channel_mark_as_unread_spec.js | 0 .../bot_post_mark_as_unread_spec.js | 0 .../mark_as_unread/channel_unread_spec.js | 0 .../channels/mark_as_unread/helpers.js | 0 .../leave_channel_unread_spec.js | 0 .../mark_as_unread/mark_as_unread_spec.js | 0 .../mark_as_unread_using_shortcuts_spec.js | 0 .../mark_dm_post_as_unread_spec.js | 0 .../mark_as_unread/mark_gm_as_unread_spec.js | 0 .../mark_mentions_as_unread_spec.js | 0 .../toast_appears_unread_spec.js | 0 .../mark_as_unread/unread_toast_count_spec.js | 0 .../channels/markdown/markdown_image_spec.js | 0 .../channels/markdown/markdown_text_spec.js | 0 .../channels/menus/main_menu_spec.js | 0 .../channels/menus/status_dropdown_spec.js | 0 .../forward_message_from_dm_spec.js | 0 .../forward_message_from_gm_spec.js | 0 ...rward_message_from_private_channel_spec.js | 0 ...orward_message_from_public_channel_spec.js | 0 .../messaging/at_mentions_user_spec.js | 0 .../autocomplete_shown_each_channel_spec.js | 0 .../channels/messaging/autocomplete_spec.js | 0 .../messaging/autocomplete_with_space_spec.js | 0 .../center_channel_rhs_overlap_spec.js | 0 .../messaging/channel_and_posts_links_spec.js | 0 .../channels/messaging/channel_menu_spec.js | 0 .../channel_read_after_permalink_spec.js | 0 .../channel_users_interactions_spec.js | 0 .../channels/messaging/collapse_link_spec.js | 0 .../messaging/collapsed_message_spec.js | 0 .../channels/messaging/copy_post_text_spec.js | 0 ...trl_cmd_k_find_gm_by_matching_name_spec.js | 0 .../ctrl_cmd_k_open_dm_with_mouse_spec.js | 0 .../channels/messaging/date_separator_spec.js | 0 .../channels/messaging/direct_message_spec.js | 0 .../messaging/dm_list_of_users_spec.js | 0 .../draft_with_only_2_byte_characters_spec.js | 0 .../channels/messaging/edit_message_spec.js | 0 .../emoji_followed_by_punctuation_spec.js | 0 .../channels/messaging/emoji_gender_spec.ts | 0 .../messaging/emoji_insert_position_spec.js | 0 .../messaging/emoji_keyboard_entry_spec.js | 0 .../messaging/emoji_no_overlap_spec.js | 0 .../emoji_picker_keyboard_usability_spec.js | 0 .../messaging/emoji_recently_used_spec.js | 0 .../channels/messaging/emoji_size_spec.js | 0 .../messaging/emoji_skin_tone_spec.js | 0 .../messaging/emoji_to_markdown_spec.js | 0 .../file_upload_in_center_channel_spec.js | 0 .../channels/messaging/focus_move_spec.js | 0 .../channels/messaging/group_message_spec.js | 0 .../messaging/header_not_cloud_spec.js | 0 .../channels/messaging/header_spec.js | 0 .../integration/channels/messaging/helpers.js | 0 .../messaging/image_attachment_spec.js | 0 .../inline_images_open_preview_window_spec.js | 0 ...line_markdown_image_link_open_link_spec.js | 0 .../messaging/input_box_expands_spec.js | 0 .../input_box_expands_with_rhs_spec.js | 0 .../messaging/invalid_emojis_as_text_spec.js | 0 .../messaging/local_date_time_spec.js | 0 .../channels/messaging/long_draft_spec.js | 0 .../messaging/long_post_attachments_spec.js | 0 .../markdown_preview_inline_image_spec.js | 0 .../markdown_quotation_paragraphs_spec.js | 0 .../channels/messaging/markdown_spec.js | 0 .../mention_autocomplete_overlap_spec.js | 0 .../messaging/message_auto_response_spec.js | 0 .../messaging/message_bullets_spec.js | 0 .../message_by_aeroplane_icon_spec.js | 0 .../messaging/message_channel_draw_spec.js | 0 .../message_channel_reference_spec.js | 0 .../message_deleted_on_reply_spec.js | 0 .../messaging/message_deletion_spec.js | 0 .../message_draft_persistance_spec.js | 0 .../channels/messaging/message_draft_spec.js | 0 .../message_draft_then_switch_channel_spec.js | 0 ...ith_attachment_then_switch_channel_spec.js | 0 .../message_edit_post_clear_text_spec.js | 0 .../message_edit_post_history_spec.ts | 0 .../message_edit_post_with_attachment_spec.js | 0 .../messaging/message_emoji_jumbo_spec.js | 0 .../messaging/message_ephemeral_spec.js | 0 .../message_in_another_language_spec.js | 0 .../channels/messaging/message_parse_spec.js | 0 .../messaging/message_permalink_spec.js | 0 .../message_pinning_unpinning_spec.js | 0 .../messaging/message_reaction_gm_spec.js | 0 .../messaging/message_reaction_spec.js | 0 .../messaging/message_reply_bot_post_spec.js | 0 .../messaging/message_reply_gm_spec.js | 0 .../message_reply_input_box_expand_spec.js | 0 .../messaging/message_reply_part2_spec.js | 0 .../message_reply_scrollable_spec.js | 0 .../channels/messaging/message_reply_spec.js | 0 .../messaging/message_reply_too_long_spec.js | 0 .../messaging/message_shortlinking_spec.js | 0 .../channels/messaging/message_spec.js | 0 .../messaging/message_with_gif_spec.js | 0 .../messaging/mobile_message_deletion_spec.js | 0 .../messaging/mobile_profile_popover_spec.js | 0 .../no_matches_for_autocomplete_spec.js | 0 .../messaging/permalink_click_spec.js | 0 .../permalink_loading_indicator_spec.js | 0 .../messaging/permalink_message_edit_spec.js | 0 .../messaging/pinned_parent_post_spec.js | 0 .../channels/messaging/pinned_posts_1_spec.js | 0 .../channels/messaging/pinned_posts_2_spec.js | 0 .../channels/messaging/post_header_spec.js | 0 .../messaging/post_html_table_spec.js | 0 .../messaging/post_options_menu_spec.js | 0 .../messaging/post_pre_header_spec.js | 0 .../messaging/post_textbox_height_spec.js | 0 .../messaging/private_channel_open_spec.js | 0 .../channels/messaging/quick_send_spec.js | 0 .../channels/messaging/quote_notation_spec.js | 0 .../channels/messaging/reactions_spec.js | 0 ...eceive_message_on_socket_reconnect_spec.js | 0 .../channels/messaging/remove_gif_spec.js | 0 .../remove_last_post_in_channel_spec.js | 0 .../channels/messaging/save_post_spec.js | 0 .../messaging/scroll_channel_messages_spec.js | 0 .../send_message_via_profile_popover_spec.js | 0 .../messaging/single_image_thumbnail_spec.js | 0 .../channels/messaging/strikethrough_spec.js | 0 .../system_message_limited_options_spec.js | 0 .../channels/messaging/system_message_spec.js | 0 ..._appears_and_scrollable_in_the_rhs_spec.js | 0 .../tooltip_visual_verification_spec.js | 0 ...ips_on_top_nav_channel_icons_posts_spec.js | 0 .../messaging/typing_on_middle_spec.js | 0 ...typing_should_show_up_when_editing_spec.js | 0 .../channels/modals/quick_switcher_spec.js | 0 .../channel_user_count_spec.js | 0 .../check_user_status_spec.js | 0 .../close_current_dm_redirects_spec.js | 0 .../close_gm_via_menu_spec.js | 0 .../dm_more_searching_from_page_spec.js | 0 .../dm_more_show_user_count_spec.js | 0 .../existing_channel_name_spec.js | 0 .../favorite_and_close_spec.js | 0 .../multi_team_and_dm/gm_add_user_spec.js | 0 .../multi_team_and_dm/gm_header_spec.js | 0 .../join_open_team_from_dm_spec.js | 0 .../multi_team_and_dm/max_gm_members_spec.js | 0 .../multi_team_and_dm/multi_team_join_spec.js | 0 .../multi_team_and_dm/multi_team_spec.js | 0 .../send_dm_user_no_team_spec.js | 0 .../multi_team_and_dm/system_message_spec.js | 0 .../town_square_not_marked_as_unread_spec.js | 0 ...ons_list_with_deactivated_triggers_spec.js | 0 .../notifications/at_mentions_spec.js | 0 .../browser_tab_notification_1_spec.js | 0 .../browser_tab_notification_2_spec.js | 0 .../channel_links_show_as_links_spec.js | 0 .../deselect_username_mention_trigger_spec.js | 0 .../desktop_notifications_1_spec.js | 0 .../desktop_notifications_2_spec.js | 0 .../desktop_notifications_3_spec.js | 0 ...rect_messages_do_not_add_indicator_spec.js | 0 .../channels/notifications/helper.js | 0 .../ignore_channel_mentions_spec.js | 0 .../mention_email_notification_spec.js | 0 .../notifications/message_bar_spec.js | 0 .../message_posted_while_scrolled_up_spec.js | 0 ...tification_preferences_do_not_save_spec.js | 0 ...user_posts_reply_while_scrolled_up_spec.js | 0 .../notifications/reply_notifications_spec.js | 0 .../unread_on_public_channel_spec.js | 0 ...th_same_firstname_channel_mentions_spec.js | 0 .../onboarding/existing_email_adress_spec.js | 0 ...validate_pending_email_invitations_spec.js | 0 .../login_page_link_account_creation_spec.js | 0 .../use_team_invite_link_to_sign_up_spec.js | 0 .../performance/channel_switch_spec.js | 0 .../channels/performance/team_switch_spec.js | 0 .../integration/channels/performance/utils.js | 0 .../plugins/demo_plugin/webhook_spec.js | 0 .../integration/channels/plugins/helpers.js | 0 .../channels/plugins/link_tooltip_spec.js | 0 .../disabled_remote_marketplace_spec.js | 0 .../channels/plugins/marketplace/helpers.js | 0 .../invalid_marketplace_url_spec.js | 0 .../not_render_in_main_menu_spec.js | 0 .../marketplace/render_in_main_menu_spec.js | 0 .../channels/plugins/marketplace/ui_spec.js | 0 .../channels/plugins/plugin_buttons_spec.js | 0 .../channels/plugins/plugin_install_spec.js | 0 .../plugins/plugin_startup_fail_spec.js | 0 .../channels/plugins/upgrade_spec.js | 0 .../profile_settings/profile_settings_spec.js | 0 .../channels/scroll/channel_scroll_spec.js | 0 .../scroll/default_images_collapsed_spec.js | 0 .../scroll/deleting_image_scroll_spec.js | 0 .../channels/scroll/deleting_scroll_spec.js | 0 .../channels/scroll/editing_scroll_spec.js | 0 .../channels/scroll/fixed_width_spec.js | 0 .../integration/channels/scroll/helpers.js | 0 .../scroll/image_aspect_ratio_spec.js | 0 .../channels/search/clear_input_spec.js | 0 .../search/cleared_search_term_spec.js | 0 .../channels/search/mobile_search_spec.js | 0 .../post_search_display_not_cloud_spec.js | 0 .../search/post_search_display_spec.js | 0 .../search/results_post_comment_spec.js | 0 .../channels/search/results_post_spec.js | 0 .../search/search_bar_popup_focus_spec.js | 0 .../search/search_group_message_spec.js | 0 .../channels/search/search_user_file_spec.js | 0 .../channels/search/search_user_post_spec.js | 0 .../search_autocomplete/channels_spec.js | 0 .../search_autocomplete/renaming_spec.js | 0 .../search_autocomplete/scroll_spec.js | 0 .../channels/search_filter/after_spec.js | 0 .../channels/search_filter/before_spec.js | 0 .../channels/search_filter/edit_spec.js | 0 .../search_filter/future_date_spec.js | 0 .../channels/search_filter/helpers.js | 0 .../channels/search_filter/input_spec.js | 0 .../channels/search_filter/invalid_spec.js | 0 .../channels/search_filter/mixed_spec.js | 0 .../channels/search_filter/negative_spec.js | 0 .../channels/search_filter/on_spec.js | 0 .../display/channel_display_mode_spec.js | 0 .../display/clock_display_mode_spec.js | 0 ...age_display_mode_colorize_username_spec.js | 0 .../display/message_display_mode_spec.js | 0 .../display/theme/code_theme_colors_spec.js | 0 .../theme/custom_theme_color_picker_spec.js | 0 .../theme/custom_theme_sidebar_styles_spec.js | 0 .../settings/display/theme/save_theme_spec.js | 0 .../display/theme/settings_view_spec.js | 0 .../display/timezone_display_mode_spec.js | 0 .../channel_switcher_not_cloud_spec.js | 0 .../settings/sidebar/channel_switcher_spec.js | 0 .../settings/sidebar/fullname_spec.js | 0 .../authentication_spec.js | 0 .../desktop_session_expire_spec.js | 0 .../forgot_password_spec.js | 0 .../channels/signin_authentication/helpers.js | 0 .../login_close_server_spec.js | 0 .../login_logout_smoke_spec.js | 0 .../login_open_server_spec.js | 0 .../mfa_authentication_spec.js | 0 .../signin_authentication/signup_spec.js | 0 .../slash_commands/autocomplete_spec.js | 0 .../channels/status/status_dnd_1_spec.js | 0 .../subpath/subpath_channel_routing_spec.js | 0 .../subpath/subpath_dm_search_spec.js | 0 .../channels/subpath/subpath_login_spec.js | 0 .../authentication/password_settings_spec.js | 0 .../custom_terms_of_service_spec.js | 0 .../system_console/demoted_user_spec.js | 0 .../system_console/environment_spec.js | 0 .../feature_discovery_cloud_spec.js | 0 .../feature_discovery_not_cloud_spec.js | 0 .../system_console/feature_discovery_spec.js | 0 .../system_console/inactive_users_spec.js | 0 .../lock_teammate_name_display_spec.js | 0 .../channels/system_console/main_menu_spec.js | 0 .../system_console/mobile_settings_spec.js | 0 .../plugin_marketplace_url_spec.js | 0 .../reporting/server_logs_spec.js | 0 .../reporting/site_statistics_spec.js | 0 .../reporting/site_statistics_te_spec.js | 0 .../reporting/team_statistics_spec.js | 0 .../revoke_all_sessions_spec.js | 0 .../search_box_not_cloud_spec.js | 0 .../system_console/session_length_spec.js | 0 .../sidebar_link_navigation_team_spec.js | 0 .../announcement_banner_spec.js | 0 .../site_configuration/customization_spec.js | 0 .../site_configuration/helper.js | 0 .../link_customization_cloud_spec.js | 0 .../link_customization_e20_1_spec.js | 0 .../link_customization_e20_2_spec.js | 0 .../system_console/site_url_config_spec.js | 0 .../support_packet_generation_spec.js | 0 .../system_console/true_up_review_spec.js | 0 .../custom_site_name_description_spec.ts | 0 .../customization_not_cloud_spec.js | 0 .../ui_and_api/customization_spec.js | 0 .../system_console/unsaved_changes_spec.js | 0 .../users_deactivation_1_spec.js | 0 .../users_deactivation_not_cloud_spec.js | 0 .../users_deactivation_spec.js | 0 .../users_reactivation_spec.js | 0 .../user_management/users_spec.js | 0 .../user_management_not_cloud_spec.js | 0 .../system_console/user_management_spec.js | 0 .../system_console/workspace_deletion_spec.js | 0 .../team_settings/archive_team_spec.ts | 0 .../closed_team_invite_by_email_spec.js | 0 ..._invite_with_non_mattermost_domain_spec.js | 0 ...d_team_invite_with_specific_domain_spec.js | 0 .../team_settings/create_a_team_spec.js | 0 .../channels/team_settings/helpers.js | 0 .../invite_members_backdrop_spec.js | 0 .../team_settings/invite_members_spec.js | 0 .../invite_user_to_closed_team_spec.js | 0 ...closed_team_with_not_allowed_email_spec.js | 0 .../team_settings/manage_members_spec.js | 0 .../team_settings/remove_team_icon_spec.js | 0 .../teammates_pagination_spec.js | 0 .../channels/team_settings/teams_spec.js | 0 .../integration/channels/toast/helpers.js | 0 .../channels/toast/new_messages_toast_spec.js | 0 .../channels/toast/permalink_jump_to_spec.js | 0 .../channels/toast/permalink_post_spec.js | 0 .../permalink_post_with_new_message_spec.js | 0 .../integration/channels/toast/toast_spec.js | 0 .../unread_with_bottom_start_toast_spec.js | 0 .../channel_created/new_sidebar_spec.js | 0 .../channel_created/old_sidebar_spec.js | 0 .../websocket/handle_new_post_spec.js | 0 .../websocket/handle_removed_user/helpers.js | 0 .../handle_removed_user/new_sidebar_spec.js | 0 .../playbooks/adminconsole/analytics_spec.js | 0 .../integration/playbooks/api/runs_spec.js | 0 .../playbooks/channels/app_bar_spec.js | 0 .../playbooks/channels/broadcast_spec.js | 0 .../playbooks/channels/channel_header_spec.js | 0 .../channels/general_actions_spec.js | 0 .../channels/playbook_run_actions.js | 0 .../channels/post_type_components_spec.js | 0 .../playbooks/channels/retrospective_spec.js | 0 .../playbooks/channels/rhs/about_spec.js | 0 .../playbooks/channels/rhs/checklist_spec.js | 0 .../playbooks/channels/rhs/header_spec.js | 0 .../playbooks/channels/rhs/home_spec.js | 0 .../playbooks/channels/rhs/list_spec.js | 0 .../channels/rhs/start_run_rhs_spec.js | 0 .../channels/rhs/status_update_spec.js | 0 .../playbooks/channels/rhs/template_spec.js | 0 .../playbooks/channels/rhs/title_spec.js | 0 .../playbooks/channels/rhs_spec.js | 0 .../playbooks/channels/run_dialog_spec.js | 0 .../playbooks/channels/run_spec.js | 0 .../channels/slash_command/commands_spec.js | 0 .../channels/slash_command/info_spec.js | 0 .../channels/slash_command/owner_spec.js | 0 .../channels/slash_command/test_spec.js | 0 .../channels/slash_command/todo_spec.js | 0 .../channels/update_request_post_spec.js | 0 .../integration/playbooks/digest_spec.js | 0 .../tests/integration/playbooks/lhs_spec.js | 0 .../integration/playbooks/navigation_spec.js | 0 .../playbooks/playbooks/access_spec.js | 0 .../playbooks/creation_button_spec.js | 0 .../playbooks/edit/task_actions_spec.js | 0 .../playbooks/playbooks/edit_metrics_spec.js | 0 .../playbooks/playbooks/edit_spec.js | 0 .../playbooks/playbooks/feedback_spec.js | 0 .../playbooks/playbooks/list_spec.js | 0 .../playbooks/playbooks/overview_spec.js | 0 .../playbooks/playbooks/pagination_spec.js | 0 .../playbooks/playbooks/start_run_spec.js | 0 .../playbooks/playbooks/status_update_spec.js | 0 .../integration/playbooks/runs/list_spec.js | 0 .../playbooks/runs/permissions_spec.js | 0 .../playbooks/runs/rdp_general_spec.js | 0 .../playbooks/runs/rdp_main_checklist_spec.js | 0 .../playbooks/runs/rdp_main_finish_spec.js | 0 .../playbooks/runs/rdp_main_header_spec.js | 0 .../playbooks/runs/rdp_main_restore_spec.js | 0 .../runs/rdp_main_retrospective_spec.js | 0 .../runs/rdp_main_statusupdate_spec.js | 0 .../playbooks/runs/rdp_main_summary_spec.js | 0 .../runs/rdp_main_taskactions_spec.js | 0 .../runs/rdp_rhs_participants_spec.js | 0 .../playbooks/runs/rdp_rhs_runinfo_spec.js | 0 .../playbooks/runs/rdp_rhs_spec.js | 0 .../runs/rdp_rhs_statusupdates_spec.js | 0 .../playbooks/runs/taskinbox_spec.js | 0 .../playbooks/tours_spec_ignore_.js | 0 .../cypress/tests/plugins/client_request.js | 0 .../cypress/tests/plugins/db_request.js | 0 .../cypress/tests/plugins/external_request.ts | 0 .../cypress/tests/plugins/file_util.js | 0 .../cypress/tests/plugins/get_pdf_content.js | 0 .../cypress/tests/plugins/get_recent_email.js | 0 .../cypress/tests/plugins/index.js | 0 .../cypress/tests/plugins/keycloak_request.js | 0 .../cypress/tests/plugins/okta_request.js | 0 .../cypress/tests/plugins/post_bot_message.js | 0 .../tests/plugins/post_incoming_webhook.js | 0 .../tests/plugins/post_list_of_messages.js | 0 .../cypress/tests/plugins/post_message_as.js | 0 .../tests/plugins/react_to_message_as.js | 0 .../cypress/tests/plugins/shell.js | 0 .../cypress/tests/plugins/url_health_check.js | 0 .../cypress/tests/support/api/bots.d.ts | 0 .../cypress/tests/support/api/bots.js | 0 .../cypress/tests/support/api/brand.d.ts | 0 .../cypress/tests/support/api/brand.js | 0 .../cypress/tests/support/api/channel.d.ts | 0 .../cypress/tests/support/api/channel.js | 0 .../cypress/tests/support/api/cloud.d.ts | 0 .../cypress/tests/support/api/cloud.js | 0 .../support/api/cloud_default_config.json | 0 .../cypress/tests/support/api/cluster.d.ts | 0 .../cypress/tests/support/api/cluster.js | 0 .../cypress/tests/support/api/common.d.ts | 0 .../cypress/tests/support/api/common.js | 0 .../tests/support/api/data_retention.d.ts | 0 .../tests/support/api/data_retention.js | 0 .../cypress/tests/support/api/helpers.js | 0 .../cypress/tests/support/api/index.js | 0 .../cypress/tests/support/api/keycloak.d.ts | 0 .../cypress/tests/support/api/keycloak.js | 0 .../tests/support/api/keycloak_realm.json | 0 .../cypress/tests/support/api/ldap.d.ts | 0 .../cypress/tests/support/api/ldap.js | 0 .../support/api/on_prem_default_config.json | 0 .../cypress/tests/support/api/playbooks.js | 0 .../cypress/tests/support/api/plugin.d.ts | 0 .../cypress/tests/support/api/plugin.js | 0 .../cypress/tests/support/api/preference.d.ts | 0 .../cypress/tests/support/api/preference.js | 0 .../cypress/tests/support/api/role.d.ts | 0 .../cypress/tests/support/api/role.js | 0 .../cypress/tests/support/api/saml.d.ts | 0 .../cypress/tests/support/api/saml.js | 0 .../cypress/tests/support/api/scheme.d.ts | 0 .../cypress/tests/support/api/scheme.js | 0 .../cypress/tests/support/api/setup.ts | 0 .../cypress/tests/support/api/status.d.ts | 0 .../cypress/tests/support/api/status.js | 0 .../cypress/tests/support/api/system.d.ts | 0 .../cypress/tests/support/api/system.js | 0 .../cypress/tests/support/api/team.d.ts | 0 .../cypress/tests/support/api/team.js | 0 .../cypress/tests/support/api/user.d.ts | 0 .../cypress/tests/support/api/user.js | 0 .../cypress/tests/support/api/webhooks.d.ts | 0 .../cypress/tests/support/api/webhooks.js | 0 .../cypress/tests/support/api_commands.ts | 0 .../cypress/tests/support/assertions.js | 0 .../cypress/tests/support/client-impl.js | 0 .../cypress/tests/support/client.d.ts | 0 .../cypress/tests/support/client.js | 0 .../tests/support/common_login_commands.d.ts | 0 .../tests/support/common_login_commands.js | 0 .../cypress/tests/support/constants.js | 0 .../cypress/tests/support/db_commands.ts | 0 .../cypress/tests/support/email.ts | 0 .../cypress/tests/support/env.ts | 0 .../tests/support/extended_commands.d.ts | 0 .../tests/support/extended_commands.js | 0 .../tests/support/external_commands.d.ts | 0 .../tests/support/external_commands.js | 0 .../cypress/tests/support/fetch_commands.js | 0 .../cypress/tests/support/index.d.ts | 0 .../cypress/tests/support/index.js | 0 .../tests/support/keycloak_commands.d.ts | 0 .../tests/support/keycloak_commands.js | 0 .../cypress/tests/support/ldap_commands.d.ts | 0 .../cypress/tests/support/ldap_commands.js | 0 .../tests/support/ldap_server_commands.d.ts | 0 .../tests/support/ldap_server_commands.js | 0 .../cypress/tests/support/notification.ts | 0 .../cypress/tests/support/okta_commands.js | 0 .../cypress/tests/support/saml_commands.js | 0 .../cypress/tests/support/shell.d.ts | 0 .../cypress/tests/support/shell.js | 0 .../cypress/tests/support/task_commands.ts | 0 .../support/ui/account_settings_modal.d.ts | 0 .../support/ui/account_settings_modal.js | 0 .../tests/support/ui/announcement_bar.d.ts | 0 .../tests/support/ui/announcement_bar.js | 0 .../cypress/tests/support/ui/boards.d.ts | 0 .../cypress/tests/support/ui/boards.js | 0 .../cypress/tests/support/ui/channel.d.ts | 0 .../cypress/tests/support/ui/channel.js | 0 .../tests/support/ui/channel_header.d.ts | 0 .../tests/support/ui/channel_header.js | 0 .../tests/support/ui/channel_sidebar.js | 0 .../tests/support/ui/cloud_billing.d.ts | 0 .../cypress/tests/support/ui/cloud_billing.js | 0 .../cypress/tests/support/ui/common.d.ts | 0 .../cypress/tests/support/ui/common.js | 0 .../tests/support/ui/compliance_export.d.ts | 0 .../tests/support/ui/compliance_export.js | 0 .../tests/support/ui/data_retention.d.ts | 0 .../tests/support/ui/data_retention.js | 0 .../cypress/tests/support/ui/emoji.ts | 0 .../support/ui/extend_testing_library.d.ts | 0 .../support/ui/extend_testing_library.js | 0 .../tests/support/ui/file_preview.d.ts | 0 .../cypress/tests/support/ui/file_preview.js | 0 .../tests/support/ui/global_header.d.ts | 0 .../cypress/tests/support/ui/global_header.js | 0 .../cypress/tests/support/ui/index.js | 0 .../cypress/tests/support/ui/login.d.ts | 0 .../cypress/tests/support/ui/login.js | 0 .../cypress/tests/support/ui/menu.d.ts | 0 .../cypress/tests/support/ui/menu.js | 0 .../cypress/tests/support/ui/mfa.d.ts | 0 .../cypress/tests/support/ui/mfa.js | 0 .../cypress/tests/support/ui/modal.d.ts | 0 .../cypress/tests/support/ui/modal.js | 0 .../cypress/tests/support/ui/playbooks.js | 0 .../cypress/tests/support/ui/post.ts | 0 .../tests/support/ui/post_dropdown_menu.d.ts | 0 .../tests/support/ui/post_dropdown_menu.js | 0 .../cypress/tests/support/ui/search.js | 0 .../cypress/tests/support/ui/sidebar_left.ts | 0 .../tests/support/ui/sidebar_right.d.ts | 0 .../cypress/tests/support/ui/sidebar_right.js | 0 .../tests/support/ui/suggestion_list.d.ts | 0 .../tests/support/ui/suggestion_list.js | 0 .../cypress/tests/support/ui/system.d.ts | 0 .../cypress/tests/support/ui/system.js | 0 .../cypress/tests/support/ui/team.js | 0 .../cypress/tests/support/ui/tooltip.d.ts | 0 .../cypress/tests/support/ui/tooltip.js | 0 .../cypress/tests/support/ui_commands.ts | 0 .../cypress/tests/support/win.d.ts | 0 .../cypress/tests/types/index.ts | 0 .../cypress/tests/utils/admin_console.js | 0 .../cypress/tests/utils/benchmark.js | 0 .../cypress/tests/utils/config.js | 0 .../cypress/tests/utils/constants.js | 0 .../cypress/tests/utils/email.js | 0 .../cypress/tests/utils/file.js | 0 .../cypress/tests/utils/index.js | 0 .../cypress/tests/utils/plugins.js | 0 .../cypress/tests/utils/timezone.js | 0 {e2e => e2e-tests}/cypress/tsconfig.json | 0 {e2e => e2e-tests}/cypress/utils/artifacts.js | 0 {e2e => e2e-tests}/cypress/utils/constants.js | 0 {e2e => e2e-tests}/cypress/utils/dashboard.js | 0 .../cypress/utils/even_distribution.js | 0 .../cypress/utils/even_distribution.test.js | 0 {e2e => e2e-tests}/cypress/utils/file.js | 0 {e2e => e2e-tests}/cypress/utils/report.js | 0 .../cypress/utils/test_cases.js | 0 .../cypress/utils/webhook_utils.js | 0 {e2e => e2e-tests}/cypress/webhook_serve.js | 0 {e2e => e2e-tests}/playwright/.eslintignore | 0 {e2e => e2e-tests}/playwright/.eslintrc.json | 0 {e2e => e2e-tests}/playwright/.percy.yml | 0 {e2e => e2e-tests}/playwright/.prettierignore | 0 .../playwright/.prettierrc.json | 0 {e2e => e2e-tests}/playwright/README.md | 0 {e2e => e2e-tests}/playwright/global_setup.ts | 0 .../playwright/package-lock.json | 0 {e2e => e2e-tests}/playwright/package.json | 0 .../playwright/playwright.config.ts | 0 {e2e => e2e-tests}/playwright/sample.env | 0 .../support/asset/mattermost-icon_128x128.png | Bin .../playwright/support/browser_context.ts | 0 .../playwright/support/constant.ts | 0 {e2e => e2e-tests}/playwright/support/flag.ts | 0 .../playwright/support/server/channel.ts | 0 .../playwright/support/server/client.ts | 0 .../support/server/default_config.ts | 0 .../playwright/support/server/index.ts | 0 .../playwright/support/server/init.ts | 0 .../playwright/support/server/team.ts | 0 .../playwright/support/server/user.ts | 0 .../playwright/support/test_action.ts | 0 .../playwright/support/test_fixture.ts | 0 .../ui/components/boards/create_modal.ts | 0 .../support/ui/components/boards/sidebar.ts | 0 .../support/ui/components/channels/app_bar.ts | 0 .../support/ui/components/channels/header.ts | 0 .../support/ui/components/channels/post.ts | 0 .../ui/components/channels/post_create.ts | 0 .../ui/components/channels/sidebar_right.ts | 0 .../support/ui/components/global_header.ts | 0 .../playwright/support/ui/components/index.ts | 0 .../support/ui/pages/boards_create.ts | 0 .../support/ui/pages/boards_view.ts | 0 .../playwright/support/ui/pages/channels.ts | 0 .../playwright/support/ui/pages/index.ts | 0 .../support/ui/pages/landing_login.ts | 0 .../playwright/support/ui/pages/login.ts | 0 .../playwright/support/ui/pages/signup.ts | 0 {e2e => e2e-tests}/playwright/support/util.ts | 0 .../playwright/support/visual/index.ts | 0 .../playwright/support/visual/percy.ts | 0 {e2e => e2e-tests}/playwright/test.config.ts | 0 .../create_empty_board.spec.ts | 0 .../visual/boards/board_template.spec.ts | 0 .../board-template-chrome-linux.png | Bin .../board-template-firefox-linux.png | Bin .../board-template-ipad-linux.png | Bin .../visual/boards/view_untitled_board.spec.ts | 0 .../view-untitled-board-chrome-linux.png | Bin .../view-untitled-board-firefox-linux.png | Bin .../view-untitled-board-ipad-linux.png | Bin .../visual/channels/intro_channel.spec.ts | 0 ...o-channel-as-regular-user-chrome-linux.png | Bin ...-channel-as-regular-user-firefox-linux.png | Bin ...-to-channel-as-regular-user-ipad-linux.png | Bin ...o-channel-as-regular-user-iphone-linux.png | Bin .../tests/visual/common/landing_page.spec.ts | 0 .../landing-login-chrome-linux.png | Bin .../landing-login-firefox-linux.png | Bin .../landing-login-ipad-linux.png | Bin .../landing-login-iphone-linux.png | Bin .../tests/visual/common/login.spec.ts | 0 .../login-chrome-linux.png | Bin .../login-error-chrome-linux.png | Bin .../login-error-firefox-linux.png | Bin .../login-error-ipad-linux.png | Bin .../login-error-iphone-linux.png | Bin .../login-firefox-linux.png | Bin .../login-ipad-linux.png | Bin .../login-iphone-linux.png | Bin .../tests/visual/common/signup_email.spec.ts | 0 .../signup-email-chrome-linux.png | Bin .../signup-email-error-chrome-linux.png | Bin .../signup-email-error-firefox-linux.png | Bin .../signup-email-error-ipad-linux.png | Bin .../signup-email-error-iphone-linux.png | Bin .../signup-email-firefox-linux.png | Bin .../signup-email-ipad-linux.png | Bin .../signup-email-iphone-linux.png | Bin {e2e => e2e-tests}/playwright/tsconfig.json | 0 1142 files changed, 44 insertions(+), 44 deletions(-) rename .github/workflows/{e2e-ci.yml => e2e-tests-ci.yml} (84%) rename {e2e => e2e-tests}/.gitignore (100%) rename {e2e => e2e-tests}/cypress/.eslintignore (100%) rename {e2e => e2e-tests}/cypress/.eslintrc.json (100%) rename {e2e => e2e-tests}/cypress/Dockerfile.webhook (100%) rename {e2e => e2e-tests}/cypress/README-Subpath.md (100%) rename {e2e => e2e-tests}/cypress/cypress.config.ts (100%) rename {e2e => e2e-tests}/cypress/generate_test_cycle.js (100%) rename {e2e => e2e-tests}/cypress/package-lock.json (100%) rename {e2e => e2e-tests}/cypress/package.json (100%) rename {e2e => e2e-tests}/cypress/patches/@testing-library+cypress+9.0.0.patch (100%) rename {e2e => e2e-tests}/cypress/run_test_cycle.js (100%) rename {e2e => e2e-tests}/cypress/run_tests.js (100%) rename {e2e => e2e-tests}/cypress/save_report.js (100%) rename {e2e => e2e-tests}/cypress/tests/extensions/Ignore-X-Frame-headers/background.js (100%) rename {e2e => e2e-tests}/cypress/tests/extensions/Ignore-X-Frame-headers/manifest.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/MM-logo-horizontal.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/animated-gif-image-file.gif (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/bmp-image-file.bmp (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/bot-default-avatar.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/client_billing.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/console-example-inputs.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/date_time_format.js (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/favicon-16x16.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/favicon-default-16x16.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/favicon-mentions-16x16.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/favicon-unread-16x16.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/gif-image-file-resized.gif (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/gif-image-file.gif (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/hooks/message_menus.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/hooks/message_menus_with_datasource.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/huge-image.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-1000x40.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-1600x40.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-20x20.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-400x40.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-400x400.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-40x400.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-50x50.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-60x60.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-small-height.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/image-small-width.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/interactive_message_menus_options.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/jpg-image-file.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/ldap-add-user.ldif (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/ldap-reset-data.ldif (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/ldap_users.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/long_text_post.txt (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/m4a-audio-file.m4a (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_basic.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_basic.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_block_quotes_1.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_block_quotes_1.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_block_quotes_2.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_carriage_return.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_carriage_return.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_code_block.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_code_block.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_code_syntax.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_escape_characters.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_escape_characters.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_headings.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_headings.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_inline_code.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_inline_code.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_inline_images_1.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_inline_images_2.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_inline_images_3.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_inline_images_4.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_inline_images_5.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_inline_images_6.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_latex.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_latex.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_lines.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_lines.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_list.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_not_autolink.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_not_autolink.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_not_in_code_block.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_not_in_code_block.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_postgres.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_postgres.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_python.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_python.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_shell.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_shell.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_tables.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_test_basic.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_text_style.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_text_style.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_typescript.html (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/markdown/markdown_typescript.md (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mattermost-icon.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mattermost-icon_128x128.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/messages.js (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Audio/AAC.aac (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Audio/FLAC.flac (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Audio/M4A.m4a (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Audio/M4R.m4r (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Audio/MP3.mp3 (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Audio/OGG.ogg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Audio/WAV.wav (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Audio/WMA.wma (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Code/JSON (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Code/Patch.diff (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Code/Python (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Documents/Excel.xlsx (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Documents/PDF.pdf (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Documents/PPT.pptx (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Documents/Text.txt (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Documents/Word.docx (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Images/BMP.bmp (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Images/GIF.gif (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Images/JPG.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Images/PNG.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Images/PSD.psd (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Images/TIFF.tif (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Video/AVI.avi (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Video/MKV.mkv (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Video/MOV.mov (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Video/MP4.mp4 (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Video/MPG.mpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Video/WEBM.webm (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mm_file_testing/Video/WMV.wmv (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mp3-audio-file.mp3 (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mp4-video-file.mp4 (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/mpeg-video-file.mpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/playbook-export.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/png-image-file.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/powerpoint-file.ppt (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/powerpointx-file.pptx (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/saml_ldap_users.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/saml_users.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/small-image.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/svg.svg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/system-roles-console-access.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/theme.json (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/tiff-image-file.tif (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/timeouts.js (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/txt-changed-as-png.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/webhook_icon.jpg (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/webhook_override_icon.png (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/word-file.doc (100%) rename {e2e => e2e-tests}/cypress/tests/fixtures/wordx-file.docx (100%) rename {e2e => e2e-tests}/cypress/tests/integration/boards/card_badges_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/boards/card_urlproperty_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/boards/create_board_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/boards/group_by_property_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/boards/manage_groups_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_buttons_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_dropdowns_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_image_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_popovers_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/account_settings_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/email_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/help_text_link_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/profile/username_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/security/access_history_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/account_settings/security/password_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archive_channel_header_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archive_channel_member_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archive_channel_operations_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archived_channel_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/archived_leave_channel_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/helpers.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/archived_channel/post_menu_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/auth_sso/authentication_3_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/autocomplete/common_test.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/autocomplete/database/users_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/autocomplete/helpers.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/benchmark/message_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/create_bot_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/crud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/display_name_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/post_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/bot_accounts/tags_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/archived_channels_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/archived_channels_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/channel_info_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/channel_members_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/channel_routing_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/channel_settings_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/channel_switcher_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/close_direct_group_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/convert_channel_to_private_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/leave_and_archive_channel_destructive_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/leave_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/more_channels_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/more_public_channels_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/new_channel_with_board_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_settings/more_unreads_position_with_scroll_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/category.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/helpers.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/crt_settings_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/crt_tour_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/commands/leave_channel_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_1_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_2_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_3_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_4_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_6_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_1_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_2_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_3_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_4_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/billing_history_free_trial_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/downgrade_feedback_modal_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/payment_free_trial_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_with_special_characters_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers/index.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_email_login_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/extend_session/session_length_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/group_mentions/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/helpers.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec_user_a_b_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/saml/saml_metadata_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/about/starter_edition_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/channel_mentions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/constants.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/create_posts_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/cluster_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_multiple_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_3_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_4_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/download_bot_compliance_export_file_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/download_compliance_export_file_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/main_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/support_packet_generation_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/system_console/ui_and_api/notifications_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/enterprise/teams/search_teams_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/cancel_file_upload_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/edit_message_with_attachment_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/image_link_preview_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/image_link_preview_new_window_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/image_link_preview_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/paste_image_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/insights/last_viewed_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/helper.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/user_status_commands_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/custom_slash_commands/slash_commands_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/basic_formatting_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/cancel_out_of_edit_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/copy_icon_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/delete_incoming_webhook_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/description_length_check_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/edit_incoming_webhook_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_creates_dm_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_is_image_only_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/integrations_display_on_team_where_created_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/long_url_embedded_image_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/setup_incoming_webhook_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/slack_formatting_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/integrations_page_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/integrations_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/outgoing_webhook/token_copy_icon_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/poll_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/regen_token_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/integrations/slash_commands_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/backspace_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_alt_I_toggles_channel_info_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_at_username_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_channel_switch_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_gm_with_mouse_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_user_from_other_team_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_l_set_message_focus_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_a_account_settings_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_l_does_not_change_focus_to_msgbox_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_m_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/esc_close_modal_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/shift_up_focuses_on_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/system_message_not_open_for_edit_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/archive_channel_mark_as_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/mark_dm_post_as_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/mark_as_unread/unread_toast_count_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/markdown/markdown_image_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/markdown/markdown_text_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/menus/main_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/menus/status_dropdown_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/at_mentions_user_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/autocomplete_shown_each_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/autocomplete_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/autocomplete_with_space_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/channel_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/channel_users_interactions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/collapse_link_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/collapsed_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/copy_post_text_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/ctrl_cmd_k_find_gm_by_matching_name_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/date_separator_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/direct_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/draft_with_only_2_byte_characters_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/edit_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_followed_by_punctuation_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_gender_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_insert_position_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_keyboard_entry_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_no_overlap_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_picker_keyboard_usability_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_size_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_skin_tone_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/file_upload_in_center_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/focus_move_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/group_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/header_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/image_attachment_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/inline_images_open_preview_window_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/inline_markdown_image_link_open_link_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/input_box_expands_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/invalid_emojis_as_text_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/local_date_time_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/long_draft_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/markdown_preview_inline_image_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/markdown_quotation_paragraphs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/markdown_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_auto_response_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_bullets_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_by_aeroplane_icon_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_deletion_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_draft_persistance_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_draft_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_draft_then_switch_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_draft_with_attachment_then_switch_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_emoji_jumbo_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_ephemeral_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_in_another_language_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_parse_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_permalink_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_pinning_unpinning_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reaction_gm_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reaction_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reply_bot_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reply_scrollable_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reply_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_reply_too_long_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_shortlinking_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/message_with_gif_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/mobile_message_deletion_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/no_matches_for_autocomplete_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/permalink_click_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/pinned_parent_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/pinned_posts_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/post_header_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/post_html_table_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/post_options_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/post_pre_header_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/post_textbox_height_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/private_channel_open_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/quick_send_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/quote_notation_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/reactions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/remove_gif_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/save_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/strikethrough_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/system_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/thread_appears_and_scrollable_in_the_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/tooltip_visual_verification_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/modals/quick_switcher_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/channel_user_count_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/close_gm_via_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/dm_more_searching_from_page_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/favorite_and_close_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/join_open_team_from_dm_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/max_gm_members_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/multi_team_and_dm/town_square_not_marked_as_unread_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/at_icon_still_shows_mentions_list_with_deactivated_triggers_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/at_mentions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/direct_messages_do_not_add_indicator_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/helper.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/message_bar_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/reply_notifications_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/performance/channel_switch_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/performance/team_switch_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/performance/utils.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/link_tooltip_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/marketplace/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/marketplace/not_render_in_main_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/plugin_install_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/plugins/upgrade_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/profile_settings/profile_settings_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/scroll/channel_scroll_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/scroll/default_images_collapsed_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/scroll/deleting_image_scroll_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/scroll/deleting_scroll_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/scroll/editing_scroll_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/scroll/fixed_width_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/scroll/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/scroll/image_aspect_ratio_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/clear_input_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/cleared_search_term_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/mobile_search_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/post_search_display_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/results_post_comment_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/results_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/search_bar_popup_focus_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/search_group_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/search_user_file_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search/search_user_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_autocomplete/channels_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_autocomplete/scroll_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/after_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/before_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/edit_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/future_date_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/input_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/invalid_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/mixed_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/negative_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/search_filter/on_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/channel_display_mode_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/message_display_mode_colorize_username_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/theme/settings_view_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/sidebar/channel_switcher_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/authentication_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/login_close_server_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/login_logout_smoke_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/signin_authentication/signup_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/status/status_dnd_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/subpath/subpath_login_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/authentication/password_settings_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/compliance/custom_terms_of_service_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/demoted_user_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/environment_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/feature_discovery_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/feature_discovery_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/feature_discovery_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/inactive_users_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/lock_teammate_name_display_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/main_menu_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/mobile_settings_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/plugin_marketplace_url_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/session_length_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/site_configuration/helper.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/site_url_config_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/support_packet_generation_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/true_up_review_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/ui_and_api/custom_site_name_description_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/user_management/users_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/user_management_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/system_console/workspace_deletion_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/archive_team_spec.ts (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/create_a_team_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/invite_members_backdrop_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/invite_members_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/invite_user_to_closed_team_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/manage_members_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/remove_team_icon_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/teammates_pagination_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/team_settings/teams_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/toast/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/toast/new_messages_toast_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/toast/permalink_jump_to_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/toast/permalink_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/toast/toast_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/websocket/handle_new_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/websocket/handle_removed_user/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/adminconsole/analytics_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/api/runs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/app_bar_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/broadcast_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/channel_header_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/general_actions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/playbook_run_actions.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/post_type_components_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/retrospective_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/about_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/checklist_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/header_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/home_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/list_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/start_run_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/status_update_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/template_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs/title_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/run_dialog_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/run_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/slash_command/commands_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/slash_command/info_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/slash_command/owner_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/slash_command/test_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/slash_command/todo_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/channels/update_request_post_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/digest_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/lhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/navigation_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/access_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/creation_button_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/edit/task_actions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/edit_metrics_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/edit_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/feedback_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/list_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/overview_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/pagination_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/start_run_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/playbooks/status_update_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/list_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/permissions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_general_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_main_checklist_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_main_finish_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_main_header_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_main_restore_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_main_retrospective_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_main_statusupdate_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_main_summary_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_main_taskactions_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_rhs_participants_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_rhs_runinfo_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_rhs_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/rdp_rhs_statusupdates_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/runs/taskinbox_spec.js (100%) rename {e2e => e2e-tests}/cypress/tests/integration/playbooks/tours_spec_ignore_.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/client_request.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/db_request.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/external_request.ts (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/file_util.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/get_pdf_content.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/get_recent_email.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/index.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/keycloak_request.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/okta_request.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/post_bot_message.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/post_incoming_webhook.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/post_list_of_messages.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/post_message_as.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/react_to_message_as.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/shell.js (100%) rename {e2e => e2e-tests}/cypress/tests/plugins/url_health_check.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/bots.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/bots.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/brand.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/brand.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/channel.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/channel.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/cloud.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/cloud.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/cloud_default_config.json (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/cluster.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/cluster.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/common.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/common.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/data_retention.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/data_retention.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/helpers.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/index.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/keycloak.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/keycloak.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/keycloak_realm.json (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/ldap.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/ldap.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/on_prem_default_config.json (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/playbooks.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/plugin.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/plugin.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/preference.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/preference.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/role.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/role.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/saml.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/saml.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/scheme.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/scheme.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/setup.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/status.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/status.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/system.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/system.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/team.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/team.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/user.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/user.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/webhooks.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/api/webhooks.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/api_commands.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/assertions.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/client-impl.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/client.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/client.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/common_login_commands.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/common_login_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/constants.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/db_commands.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/email.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/env.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/extended_commands.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/extended_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/external_commands.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/external_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/fetch_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/index.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/index.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/keycloak_commands.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/keycloak_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ldap_commands.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ldap_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ldap_server_commands.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ldap_server_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/notification.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/okta_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/saml_commands.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/shell.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/shell.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/task_commands.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/account_settings_modal.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/account_settings_modal.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/announcement_bar.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/announcement_bar.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/boards.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/boards.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/channel.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/channel.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/channel_header.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/channel_header.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/channel_sidebar.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/cloud_billing.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/cloud_billing.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/common.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/common.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/compliance_export.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/compliance_export.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/data_retention.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/data_retention.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/emoji.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/extend_testing_library.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/extend_testing_library.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/file_preview.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/file_preview.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/global_header.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/global_header.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/index.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/login.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/login.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/menu.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/menu.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/mfa.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/mfa.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/modal.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/modal.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/playbooks.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/post.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/post_dropdown_menu.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/post_dropdown_menu.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/search.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/sidebar_left.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/sidebar_right.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/sidebar_right.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/suggestion_list.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/suggestion_list.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/system.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/system.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/team.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/tooltip.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui/tooltip.js (100%) rename {e2e => e2e-tests}/cypress/tests/support/ui_commands.ts (100%) rename {e2e => e2e-tests}/cypress/tests/support/win.d.ts (100%) rename {e2e => e2e-tests}/cypress/tests/types/index.ts (100%) rename {e2e => e2e-tests}/cypress/tests/utils/admin_console.js (100%) rename {e2e => e2e-tests}/cypress/tests/utils/benchmark.js (100%) rename {e2e => e2e-tests}/cypress/tests/utils/config.js (100%) rename {e2e => e2e-tests}/cypress/tests/utils/constants.js (100%) rename {e2e => e2e-tests}/cypress/tests/utils/email.js (100%) rename {e2e => e2e-tests}/cypress/tests/utils/file.js (100%) rename {e2e => e2e-tests}/cypress/tests/utils/index.js (100%) rename {e2e => e2e-tests}/cypress/tests/utils/plugins.js (100%) rename {e2e => e2e-tests}/cypress/tests/utils/timezone.js (100%) rename {e2e => e2e-tests}/cypress/tsconfig.json (100%) rename {e2e => e2e-tests}/cypress/utils/artifacts.js (100%) rename {e2e => e2e-tests}/cypress/utils/constants.js (100%) rename {e2e => e2e-tests}/cypress/utils/dashboard.js (100%) rename {e2e => e2e-tests}/cypress/utils/even_distribution.js (100%) rename {e2e => e2e-tests}/cypress/utils/even_distribution.test.js (100%) rename {e2e => e2e-tests}/cypress/utils/file.js (100%) rename {e2e => e2e-tests}/cypress/utils/report.js (100%) rename {e2e => e2e-tests}/cypress/utils/test_cases.js (100%) rename {e2e => e2e-tests}/cypress/utils/webhook_utils.js (100%) rename {e2e => e2e-tests}/cypress/webhook_serve.js (100%) rename {e2e => e2e-tests}/playwright/.eslintignore (100%) rename {e2e => e2e-tests}/playwright/.eslintrc.json (100%) rename {e2e => e2e-tests}/playwright/.percy.yml (100%) rename {e2e => e2e-tests}/playwright/.prettierignore (100%) rename {e2e => e2e-tests}/playwright/.prettierrc.json (100%) rename {e2e => e2e-tests}/playwright/README.md (100%) rename {e2e => e2e-tests}/playwright/global_setup.ts (100%) rename {e2e => e2e-tests}/playwright/package-lock.json (100%) rename {e2e => e2e-tests}/playwright/package.json (100%) rename {e2e => e2e-tests}/playwright/playwright.config.ts (100%) rename {e2e => e2e-tests}/playwright/sample.env (100%) rename {e2e => e2e-tests}/playwright/support/asset/mattermost-icon_128x128.png (100%) rename {e2e => e2e-tests}/playwright/support/browser_context.ts (100%) rename {e2e => e2e-tests}/playwright/support/constant.ts (100%) rename {e2e => e2e-tests}/playwright/support/flag.ts (100%) rename {e2e => e2e-tests}/playwright/support/server/channel.ts (100%) rename {e2e => e2e-tests}/playwright/support/server/client.ts (100%) rename {e2e => e2e-tests}/playwright/support/server/default_config.ts (100%) rename {e2e => e2e-tests}/playwright/support/server/index.ts (100%) rename {e2e => e2e-tests}/playwright/support/server/init.ts (100%) rename {e2e => e2e-tests}/playwright/support/server/team.ts (100%) rename {e2e => e2e-tests}/playwright/support/server/user.ts (100%) rename {e2e => e2e-tests}/playwright/support/test_action.ts (100%) rename {e2e => e2e-tests}/playwright/support/test_fixture.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/boards/create_modal.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/boards/sidebar.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/channels/app_bar.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/channels/header.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/channels/post.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/channels/post_create.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/channels/sidebar_right.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/global_header.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/components/index.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/pages/boards_create.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/pages/boards_view.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/pages/channels.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/pages/index.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/pages/landing_login.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/pages/login.ts (100%) rename {e2e => e2e-tests}/playwright/support/ui/pages/signup.ts (100%) rename {e2e => e2e-tests}/playwright/support/util.ts (100%) rename {e2e => e2e-tests}/playwright/support/visual/index.ts (100%) rename {e2e => e2e-tests}/playwright/support/visual/percy.ts (100%) rename {e2e => e2e-tests}/playwright/test.config.ts (100%) rename {e2e => e2e-tests}/playwright/tests/functional/boards/board-creation-and-set-up/create_empty_board.spec.ts (100%) rename {e2e => e2e-tests}/playwright/tests/visual/boards/board_template.spec.ts (100%) rename {e2e => e2e-tests}/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-chrome-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-firefox-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-ipad-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/boards/view_untitled_board.spec.ts (100%) rename {e2e => e2e-tests}/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-chrome-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-firefox-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-ipad-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/channels/intro_channel.spec.ts (100%) rename {e2e => e2e-tests}/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-chrome-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-firefox-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-ipad-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-iphone-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/landing_page.spec.ts (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-chrome-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-firefox-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-ipad-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-iphone-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts-snapshots/login-chrome-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-chrome-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-firefox-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-ipad-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-iphone-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts-snapshots/login-firefox-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts-snapshots/login-ipad-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/login.spec.ts-snapshots/login-iphone-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-chrome-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-chrome-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-firefox-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-ipad-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-iphone-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-firefox-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-ipad-linux.png (100%) rename {e2e => e2e-tests}/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-iphone-linux.png (100%) rename {e2e => e2e-tests}/playwright/tsconfig.json (100%) diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index b4f3aa4145..6b85f522b7 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -14,6 +14,6 @@ paths-ignore: - templates - tests - 'api4/*_local.go' - - webapp/channels/e2e - webapp/channels/tests - - '**/*.test.*' \ No newline at end of file + - '**/*.test.*' + - e2e-tests diff --git a/.github/workflows/channels-ci.yml b/.github/workflows/channels-ci.yml index 5fee62d830..b861650714 100644 --- a/.github/workflows/channels-ci.yml +++ b/.github/workflows/channels-ci.yml @@ -32,14 +32,14 @@ jobs: # with: # path: | # '**/node_modules' - # 'e2e/playwright/node_modules' - # 'e2e/cypress/node_modules' - # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} + # 'e2e-tests/playwright/node_modules' + # 'e2e-tests/cypress/node_modules' + # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }} - name: ci/get-node-modules # if: steps.npm-cache.outputs.cache-hit != 'true' run: | make node_modules - # make channels/e2e/playwright/node_modules + # make channels/e2e-tests/playwright/node_modules - name: ci/lint run: | npm run check @@ -63,14 +63,14 @@ jobs: # with: # path: | # '**/node_modules' - # 'e2e/playwright/node_modules' - # 'e2e/cypress/node_modules' - # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} + # 'e2e-tests/playwright/node_modules' + # 'e2e-tests/cypress/node_modules' + # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }} - name: ci/get-node-modules # if: steps.npm-cache.outputs.cache-hit != 'true' run: | make node_modules - # make channels/e2e/playwright/node_modules + # make channels/e2e-tests/playwright/node_modules - name: ci/lint working-directory: webapp/channels run: | @@ -103,14 +103,14 @@ jobs: # with: # path: | # '**/node_modules' - # 'e2e/playwright/node_modules' - # 'e2e/cypress/node_modules' - # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} + # 'e2e-tests/playwright/node_modules' + # 'e2e-tests/cypress/node_modules' + # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }} - name: ci/get-node-modules # if: steps.npm-cache.outputs.cache-hit != 'true' run: | make node_modules - # make channels/e2e/playwright/node_modules + # make channels/e2e-tests/playwright/node_modules - name: ci/lint run: | npm run check-types @@ -138,14 +138,14 @@ jobs: # with: # path: | # '**/node_modules' - # 'e2e/playwright/node_modules' - # 'e2e/cypress/node_modules' - # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} + # 'e2e-tests/playwright/node_modules' + # 'e2e-tests/cypress/node_modules' + # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }} - name: ci/get-node-modules # if: steps.npm-cache.outputs.cache-hit != 'true' run: | make node_modules - # make channels/e2e/playwright/node_modules + # make channels/e2e-tests/playwright/node_modules - name: ci/test env: NODE_OPTIONS: --max_old_space_size=5120 @@ -174,14 +174,14 @@ jobs: # with: # path: | # '**/node_modules' - # 'e2e/playwright/node_modules' - # 'e2e/cypress/node_modules' - # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} + # 'e2e-tests/playwright/node_modules' + # 'e2e-tests/cypress/node_modules' + # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }} - name: ci/get-node-modules # if: steps.npm-cache.outputs.cache-hit != 'true' run: | make node_modules - # make channels/e2e/playwright/node_modules + # make channels/e2e-tests/playwright/node_modules - name: ci/build run: | npm run build diff --git a/.github/workflows/e2e-ci.yml b/.github/workflows/e2e-tests-ci.yml similarity index 84% rename from .github/workflows/e2e-ci.yml rename to .github/workflows/e2e-tests-ci.yml index 923bb6cea4..075fea0262 100644 --- a/.github/workflows/e2e-ci.yml +++ b/.github/workflows/e2e-tests-ci.yml @@ -1,4 +1,4 @@ -name: mattermost-e2e +name: mattermost-e2e-tests on: pull_request: push: @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-22.04 defaults: run: - working-directory: e2e/cypress + working-directory: e2e-tests/cypress steps: - name: ci/checkout-repo uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 @@ -26,7 +26,7 @@ jobs: with: node-version-file: ".nvmrc" cache: npm - cache-dependency-path: 'e2e/cypress/package-lock.json' + cache-dependency-path: 'e2e-tests/cypress/package-lock.json' - name: ci/cypress/npm-install run: | npm ci @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-22.04 defaults: run: - working-directory: e2e/playwright + working-directory: e2e-tests/playwright steps: - name: ci/checkout-repo uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 @@ -47,7 +47,7 @@ jobs: with: node-version-file: ".nvmrc" cache: npm - cache-dependency-path: 'e2e/playwright/package-lock.json' + cache-dependency-path: 'e2e-tests/playwright/package-lock.json' - name: ci/get-webapp-node-modules working-directory: webapp # requires build of client and types diff --git a/.gitignore b/.gitignore index ee81c1303e..cf5b44c15e 100644 --- a/.gitignore +++ b/.gitignore @@ -23,25 +23,25 @@ config/logging.json /plugins # disable folders generated by Cypress -e2e/cypress/node_modules -e2e/cypress/tests/downloads -e2e/cypress/tests/screenshots -e2e/cypress/tests/videos -e2e/cypress/tests/integration/benchmark/__benchmarks__ -e2e/cypress/tests/integration/performance/logs -e2e/cypress/tests/fixtures/ldap_tmp -e2e/cypress/tests/fixtures/mmctl -e2e/cypress/results -e2e/cypress/.eslintcache +e2e-tests/cypress/node_modules +e2e-tests/cypress/tests/downloads +e2e-tests/cypress/tests/screenshots +e2e-tests/cypress/tests/videos +e2e-tests/cypress/tests/integration/benchmark/__benchmarks__ +e2e-tests/cypress/tests/integration/performance/logs +e2e-tests/cypress/tests/fixtures/ldap_tmp +e2e-tests/cypress/tests/fixtures/mmctl +e2e-tests/cypress/results +e2e-tests/cypress/.eslintcache # disable files/folders generated by Playwright -e2e/playwright/node_modules -e2e/playwright/playwright-report -e2e/playwright/storage_state -e2e/playwright/test-results -e2e/playwright/tests/**/*-darwin.png -e2e/playwright/tests/**/*-window.png -e2e/playwright/.eslintcache +e2e-tests/playwright/node_modules +e2e-tests/playwright/playwright-report +e2e-tests/playwright/storage_state +e2e-tests/playwright/test-results +e2e-tests/playwright/tests/**/*-darwin.png +e2e-tests/playwright/tests/**/*-window.png +e2e-tests/playwright/.eslintcache # Enterprise & products imports files imports/imports.go diff --git a/e2e/.gitignore b/e2e-tests/.gitignore similarity index 100% rename from e2e/.gitignore rename to e2e-tests/.gitignore diff --git a/e2e/cypress/.eslintignore b/e2e-tests/cypress/.eslintignore similarity index 100% rename from e2e/cypress/.eslintignore rename to e2e-tests/cypress/.eslintignore diff --git a/e2e/cypress/.eslintrc.json b/e2e-tests/cypress/.eslintrc.json similarity index 100% rename from e2e/cypress/.eslintrc.json rename to e2e-tests/cypress/.eslintrc.json diff --git a/e2e/cypress/Dockerfile.webhook b/e2e-tests/cypress/Dockerfile.webhook similarity index 100% rename from e2e/cypress/Dockerfile.webhook rename to e2e-tests/cypress/Dockerfile.webhook diff --git a/e2e/cypress/README-Subpath.md b/e2e-tests/cypress/README-Subpath.md similarity index 100% rename from e2e/cypress/README-Subpath.md rename to e2e-tests/cypress/README-Subpath.md diff --git a/e2e/cypress/cypress.config.ts b/e2e-tests/cypress/cypress.config.ts similarity index 100% rename from e2e/cypress/cypress.config.ts rename to e2e-tests/cypress/cypress.config.ts diff --git a/e2e/cypress/generate_test_cycle.js b/e2e-tests/cypress/generate_test_cycle.js similarity index 100% rename from e2e/cypress/generate_test_cycle.js rename to e2e-tests/cypress/generate_test_cycle.js diff --git a/e2e/cypress/package-lock.json b/e2e-tests/cypress/package-lock.json similarity index 100% rename from e2e/cypress/package-lock.json rename to e2e-tests/cypress/package-lock.json diff --git a/e2e/cypress/package.json b/e2e-tests/cypress/package.json similarity index 100% rename from e2e/cypress/package.json rename to e2e-tests/cypress/package.json diff --git a/e2e/cypress/patches/@testing-library+cypress+9.0.0.patch b/e2e-tests/cypress/patches/@testing-library+cypress+9.0.0.patch similarity index 100% rename from e2e/cypress/patches/@testing-library+cypress+9.0.0.patch rename to e2e-tests/cypress/patches/@testing-library+cypress+9.0.0.patch diff --git a/e2e/cypress/run_test_cycle.js b/e2e-tests/cypress/run_test_cycle.js similarity index 100% rename from e2e/cypress/run_test_cycle.js rename to e2e-tests/cypress/run_test_cycle.js diff --git a/e2e/cypress/run_tests.js b/e2e-tests/cypress/run_tests.js similarity index 100% rename from e2e/cypress/run_tests.js rename to e2e-tests/cypress/run_tests.js diff --git a/e2e/cypress/save_report.js b/e2e-tests/cypress/save_report.js similarity index 100% rename from e2e/cypress/save_report.js rename to e2e-tests/cypress/save_report.js diff --git a/e2e/cypress/tests/extensions/Ignore-X-Frame-headers/background.js b/e2e-tests/cypress/tests/extensions/Ignore-X-Frame-headers/background.js similarity index 100% rename from e2e/cypress/tests/extensions/Ignore-X-Frame-headers/background.js rename to e2e-tests/cypress/tests/extensions/Ignore-X-Frame-headers/background.js diff --git a/e2e/cypress/tests/extensions/Ignore-X-Frame-headers/manifest.json b/e2e-tests/cypress/tests/extensions/Ignore-X-Frame-headers/manifest.json similarity index 100% rename from e2e/cypress/tests/extensions/Ignore-X-Frame-headers/manifest.json rename to e2e-tests/cypress/tests/extensions/Ignore-X-Frame-headers/manifest.json diff --git a/e2e/cypress/tests/fixtures/MM-logo-horizontal.png b/e2e-tests/cypress/tests/fixtures/MM-logo-horizontal.png similarity index 100% rename from e2e/cypress/tests/fixtures/MM-logo-horizontal.png rename to e2e-tests/cypress/tests/fixtures/MM-logo-horizontal.png diff --git a/e2e/cypress/tests/fixtures/animated-gif-image-file.gif b/e2e-tests/cypress/tests/fixtures/animated-gif-image-file.gif similarity index 100% rename from e2e/cypress/tests/fixtures/animated-gif-image-file.gif rename to e2e-tests/cypress/tests/fixtures/animated-gif-image-file.gif diff --git a/e2e/cypress/tests/fixtures/bmp-image-file.bmp b/e2e-tests/cypress/tests/fixtures/bmp-image-file.bmp similarity index 100% rename from e2e/cypress/tests/fixtures/bmp-image-file.bmp rename to e2e-tests/cypress/tests/fixtures/bmp-image-file.bmp diff --git a/e2e/cypress/tests/fixtures/bot-default-avatar.png b/e2e-tests/cypress/tests/fixtures/bot-default-avatar.png similarity index 100% rename from e2e/cypress/tests/fixtures/bot-default-avatar.png rename to e2e-tests/cypress/tests/fixtures/bot-default-avatar.png diff --git a/e2e/cypress/tests/fixtures/client_billing.json b/e2e-tests/cypress/tests/fixtures/client_billing.json similarity index 100% rename from e2e/cypress/tests/fixtures/client_billing.json rename to e2e-tests/cypress/tests/fixtures/client_billing.json diff --git a/e2e/cypress/tests/fixtures/console-example-inputs.json b/e2e-tests/cypress/tests/fixtures/console-example-inputs.json similarity index 100% rename from e2e/cypress/tests/fixtures/console-example-inputs.json rename to e2e-tests/cypress/tests/fixtures/console-example-inputs.json diff --git a/e2e/cypress/tests/fixtures/date_time_format.js b/e2e-tests/cypress/tests/fixtures/date_time_format.js similarity index 100% rename from e2e/cypress/tests/fixtures/date_time_format.js rename to e2e-tests/cypress/tests/fixtures/date_time_format.js diff --git a/e2e/cypress/tests/fixtures/favicon-16x16.png b/e2e-tests/cypress/tests/fixtures/favicon-16x16.png similarity index 100% rename from e2e/cypress/tests/fixtures/favicon-16x16.png rename to e2e-tests/cypress/tests/fixtures/favicon-16x16.png diff --git a/e2e/cypress/tests/fixtures/favicon-default-16x16.png b/e2e-tests/cypress/tests/fixtures/favicon-default-16x16.png similarity index 100% rename from e2e/cypress/tests/fixtures/favicon-default-16x16.png rename to e2e-tests/cypress/tests/fixtures/favicon-default-16x16.png diff --git a/e2e/cypress/tests/fixtures/favicon-mentions-16x16.png b/e2e-tests/cypress/tests/fixtures/favicon-mentions-16x16.png similarity index 100% rename from e2e/cypress/tests/fixtures/favicon-mentions-16x16.png rename to e2e-tests/cypress/tests/fixtures/favicon-mentions-16x16.png diff --git a/e2e/cypress/tests/fixtures/favicon-unread-16x16.png b/e2e-tests/cypress/tests/fixtures/favicon-unread-16x16.png similarity index 100% rename from e2e/cypress/tests/fixtures/favicon-unread-16x16.png rename to e2e-tests/cypress/tests/fixtures/favicon-unread-16x16.png diff --git a/e2e/cypress/tests/fixtures/gif-image-file-resized.gif b/e2e-tests/cypress/tests/fixtures/gif-image-file-resized.gif similarity index 100% rename from e2e/cypress/tests/fixtures/gif-image-file-resized.gif rename to e2e-tests/cypress/tests/fixtures/gif-image-file-resized.gif diff --git a/e2e/cypress/tests/fixtures/gif-image-file.gif b/e2e-tests/cypress/tests/fixtures/gif-image-file.gif similarity index 100% rename from e2e/cypress/tests/fixtures/gif-image-file.gif rename to e2e-tests/cypress/tests/fixtures/gif-image-file.gif diff --git a/e2e/cypress/tests/fixtures/hooks/message_menus.json b/e2e-tests/cypress/tests/fixtures/hooks/message_menus.json similarity index 100% rename from e2e/cypress/tests/fixtures/hooks/message_menus.json rename to e2e-tests/cypress/tests/fixtures/hooks/message_menus.json diff --git a/e2e/cypress/tests/fixtures/hooks/message_menus_with_datasource.json b/e2e-tests/cypress/tests/fixtures/hooks/message_menus_with_datasource.json similarity index 100% rename from e2e/cypress/tests/fixtures/hooks/message_menus_with_datasource.json rename to e2e-tests/cypress/tests/fixtures/hooks/message_menus_with_datasource.json diff --git a/e2e/cypress/tests/fixtures/huge-image.jpg b/e2e-tests/cypress/tests/fixtures/huge-image.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/huge-image.jpg rename to e2e-tests/cypress/tests/fixtures/huge-image.jpg diff --git a/e2e/cypress/tests/fixtures/image-1000x40.jpg b/e2e-tests/cypress/tests/fixtures/image-1000x40.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/image-1000x40.jpg rename to e2e-tests/cypress/tests/fixtures/image-1000x40.jpg diff --git a/e2e/cypress/tests/fixtures/image-1600x40.jpg b/e2e-tests/cypress/tests/fixtures/image-1600x40.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/image-1600x40.jpg rename to e2e-tests/cypress/tests/fixtures/image-1600x40.jpg diff --git a/e2e/cypress/tests/fixtures/image-20x20.jpg b/e2e-tests/cypress/tests/fixtures/image-20x20.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/image-20x20.jpg rename to e2e-tests/cypress/tests/fixtures/image-20x20.jpg diff --git a/e2e/cypress/tests/fixtures/image-400x40.jpg b/e2e-tests/cypress/tests/fixtures/image-400x40.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/image-400x40.jpg rename to e2e-tests/cypress/tests/fixtures/image-400x40.jpg diff --git a/e2e/cypress/tests/fixtures/image-400x400.jpg b/e2e-tests/cypress/tests/fixtures/image-400x400.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/image-400x400.jpg rename to e2e-tests/cypress/tests/fixtures/image-400x400.jpg diff --git a/e2e/cypress/tests/fixtures/image-40x400.jpg b/e2e-tests/cypress/tests/fixtures/image-40x400.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/image-40x400.jpg rename to e2e-tests/cypress/tests/fixtures/image-40x400.jpg diff --git a/e2e/cypress/tests/fixtures/image-50x50.jpg b/e2e-tests/cypress/tests/fixtures/image-50x50.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/image-50x50.jpg rename to e2e-tests/cypress/tests/fixtures/image-50x50.jpg diff --git a/e2e/cypress/tests/fixtures/image-60x60.jpg b/e2e-tests/cypress/tests/fixtures/image-60x60.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/image-60x60.jpg rename to e2e-tests/cypress/tests/fixtures/image-60x60.jpg diff --git a/e2e/cypress/tests/fixtures/image-small-height.png b/e2e-tests/cypress/tests/fixtures/image-small-height.png similarity index 100% rename from e2e/cypress/tests/fixtures/image-small-height.png rename to e2e-tests/cypress/tests/fixtures/image-small-height.png diff --git a/e2e/cypress/tests/fixtures/image-small-width.png b/e2e-tests/cypress/tests/fixtures/image-small-width.png similarity index 100% rename from e2e/cypress/tests/fixtures/image-small-width.png rename to e2e-tests/cypress/tests/fixtures/image-small-width.png diff --git a/e2e/cypress/tests/fixtures/interactive_message_menus_options.json b/e2e-tests/cypress/tests/fixtures/interactive_message_menus_options.json similarity index 100% rename from e2e/cypress/tests/fixtures/interactive_message_menus_options.json rename to e2e-tests/cypress/tests/fixtures/interactive_message_menus_options.json diff --git a/e2e/cypress/tests/fixtures/jpg-image-file.jpg b/e2e-tests/cypress/tests/fixtures/jpg-image-file.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/jpg-image-file.jpg rename to e2e-tests/cypress/tests/fixtures/jpg-image-file.jpg diff --git a/e2e/cypress/tests/fixtures/ldap-add-user.ldif b/e2e-tests/cypress/tests/fixtures/ldap-add-user.ldif similarity index 100% rename from e2e/cypress/tests/fixtures/ldap-add-user.ldif rename to e2e-tests/cypress/tests/fixtures/ldap-add-user.ldif diff --git a/e2e/cypress/tests/fixtures/ldap-reset-data.ldif b/e2e-tests/cypress/tests/fixtures/ldap-reset-data.ldif similarity index 100% rename from e2e/cypress/tests/fixtures/ldap-reset-data.ldif rename to e2e-tests/cypress/tests/fixtures/ldap-reset-data.ldif diff --git a/e2e/cypress/tests/fixtures/ldap_users.json b/e2e-tests/cypress/tests/fixtures/ldap_users.json similarity index 100% rename from e2e/cypress/tests/fixtures/ldap_users.json rename to e2e-tests/cypress/tests/fixtures/ldap_users.json diff --git a/e2e/cypress/tests/fixtures/long_text_post.txt b/e2e-tests/cypress/tests/fixtures/long_text_post.txt similarity index 100% rename from e2e/cypress/tests/fixtures/long_text_post.txt rename to e2e-tests/cypress/tests/fixtures/long_text_post.txt diff --git a/e2e/cypress/tests/fixtures/m4a-audio-file.m4a b/e2e-tests/cypress/tests/fixtures/m4a-audio-file.m4a similarity index 100% rename from e2e/cypress/tests/fixtures/m4a-audio-file.m4a rename to e2e-tests/cypress/tests/fixtures/m4a-audio-file.m4a diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_basic.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_basic.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_basic.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_basic.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_basic.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_basic.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_basic.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_basic.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_block_quotes_1.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_block_quotes_1.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_block_quotes_1.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_block_quotes_1.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_block_quotes_1.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_block_quotes_1.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_block_quotes_1.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_block_quotes_1.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_block_quotes_2.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_block_quotes_2.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_block_quotes_2.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_block_quotes_2.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_carriage_return.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_carriage_return.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_carriage_return.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_carriage_return.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_carriage_return.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_carriage_return.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_carriage_return.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_carriage_return.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_carriage_return_two_lines.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_code_block.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_code_block.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_code_block.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_code_block.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_code_block.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_code_block.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_code_block.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_code_block.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_code_syntax.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_code_syntax.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_code_syntax.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_code_syntax.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_escape_characters.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_escape_characters.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_escape_characters.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_escape_characters.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_escape_characters.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_escape_characters.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_escape_characters.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_escape_characters.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_headings.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_headings.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_headings.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_headings.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_headings.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_headings.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_headings.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_headings.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_inline_code.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_code.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_inline_code.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_code.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_inline_code.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_code.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_inline_code.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_code.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_inline_images_1.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_1.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_inline_images_1.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_1.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_inline_images_2.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_2.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_inline_images_2.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_2.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_inline_images_3.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_3.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_inline_images_3.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_3.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_inline_images_4.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_4.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_inline_images_4.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_4.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_inline_images_5.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_5.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_inline_images_5.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_5.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_inline_images_6.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_6.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_inline_images_6.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_inline_images_6.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_latex.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_latex.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_latex.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_latex.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_latex.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_latex.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_latex.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_latex.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_lines.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_lines.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_lines.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_lines.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_lines.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_lines.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_lines.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_lines.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_list.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_list.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_list.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_list.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_not_autolink.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_not_autolink.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_not_autolink.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_not_autolink.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_not_autolink.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_not_autolink.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_not_autolink.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_not_autolink.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_not_in_code_block.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_not_in_code_block.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_not_in_code_block.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_not_in_code_block.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_not_in_code_block.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_not_in_code_block.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_not_in_code_block.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_not_in_code_block.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_postgres.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_postgres.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_postgres.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_postgres.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_postgres.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_postgres.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_postgres.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_postgres.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_python.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_python.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_python.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_python.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_python.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_python.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_python.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_python.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_shell.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_shell.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_shell.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_shell.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_shell.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_shell.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_shell.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_shell.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_tables.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_tables.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_tables.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_tables.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_test_basic.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_test_basic.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_test_basic.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_test_basic.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_text_style.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_text_style.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_text_style.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_text_style.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_text_style.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_text_style.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_text_style.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_text_style.md diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_typescript.html b/e2e-tests/cypress/tests/fixtures/markdown/markdown_typescript.html similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_typescript.html rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_typescript.html diff --git a/e2e/cypress/tests/fixtures/markdown/markdown_typescript.md b/e2e-tests/cypress/tests/fixtures/markdown/markdown_typescript.md similarity index 100% rename from e2e/cypress/tests/fixtures/markdown/markdown_typescript.md rename to e2e-tests/cypress/tests/fixtures/markdown/markdown_typescript.md diff --git a/e2e/cypress/tests/fixtures/mattermost-icon.png b/e2e-tests/cypress/tests/fixtures/mattermost-icon.png similarity index 100% rename from e2e/cypress/tests/fixtures/mattermost-icon.png rename to e2e-tests/cypress/tests/fixtures/mattermost-icon.png diff --git a/e2e/cypress/tests/fixtures/mattermost-icon_128x128.png b/e2e-tests/cypress/tests/fixtures/mattermost-icon_128x128.png similarity index 100% rename from e2e/cypress/tests/fixtures/mattermost-icon_128x128.png rename to e2e-tests/cypress/tests/fixtures/mattermost-icon_128x128.png diff --git a/e2e/cypress/tests/fixtures/messages.js b/e2e-tests/cypress/tests/fixtures/messages.js similarity index 100% rename from e2e/cypress/tests/fixtures/messages.js rename to e2e-tests/cypress/tests/fixtures/messages.js diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Audio/AAC.aac b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/AAC.aac similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Audio/AAC.aac rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/AAC.aac diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Audio/FLAC.flac b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/FLAC.flac similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Audio/FLAC.flac rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/FLAC.flac diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Audio/M4A.m4a b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/M4A.m4a similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Audio/M4A.m4a rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/M4A.m4a diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Audio/M4R.m4r b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/M4R.m4r similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Audio/M4R.m4r rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/M4R.m4r diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Audio/MP3.mp3 b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/MP3.mp3 similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Audio/MP3.mp3 rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/MP3.mp3 diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Audio/OGG.ogg b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/OGG.ogg similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Audio/OGG.ogg rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/OGG.ogg diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Audio/WAV.wav b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/WAV.wav similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Audio/WAV.wav rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/WAV.wav diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Audio/WMA.wma b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/WMA.wma similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Audio/WMA.wma rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Audio/WMA.wma diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Code/JSON b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Code/JSON similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Code/JSON rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Code/JSON diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Code/Patch.diff b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Code/Patch.diff similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Code/Patch.diff rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Code/Patch.diff diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Code/Python b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Code/Python similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Code/Python rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Code/Python diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Documents/Excel.xlsx b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/Excel.xlsx similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Documents/Excel.xlsx rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/Excel.xlsx diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Documents/PDF.pdf b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/PDF.pdf similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Documents/PDF.pdf rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/PDF.pdf diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Documents/PPT.pptx b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/PPT.pptx similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Documents/PPT.pptx rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/PPT.pptx diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Documents/Text.txt b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/Text.txt similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Documents/Text.txt rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/Text.txt diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Documents/Word.docx b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/Word.docx similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Documents/Word.docx rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Documents/Word.docx diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Images/BMP.bmp b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/BMP.bmp similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Images/BMP.bmp rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/BMP.bmp diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Images/GIF.gif b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/GIF.gif similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Images/GIF.gif rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/GIF.gif diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Images/JPG.jpg b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/JPG.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Images/JPG.jpg rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/JPG.jpg diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Images/PNG.png b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/PNG.png similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Images/PNG.png rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/PNG.png diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Images/PSD.psd b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/PSD.psd similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Images/PSD.psd rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/PSD.psd diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Images/TIFF.tif b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/TIFF.tif similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Images/TIFF.tif rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Images/TIFF.tif diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Video/AVI.avi b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/AVI.avi similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Video/AVI.avi rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/AVI.avi diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Video/MKV.mkv b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/MKV.mkv similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Video/MKV.mkv rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/MKV.mkv diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Video/MOV.mov b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/MOV.mov similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Video/MOV.mov rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/MOV.mov diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Video/MP4.mp4 b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/MP4.mp4 similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Video/MP4.mp4 rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/MP4.mp4 diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Video/MPG.mpg b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/MPG.mpg similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Video/MPG.mpg rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/MPG.mpg diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Video/WEBM.webm b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/WEBM.webm similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Video/WEBM.webm rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/WEBM.webm diff --git a/e2e/cypress/tests/fixtures/mm_file_testing/Video/WMV.wmv b/e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/WMV.wmv similarity index 100% rename from e2e/cypress/tests/fixtures/mm_file_testing/Video/WMV.wmv rename to e2e-tests/cypress/tests/fixtures/mm_file_testing/Video/WMV.wmv diff --git a/e2e/cypress/tests/fixtures/mp3-audio-file.mp3 b/e2e-tests/cypress/tests/fixtures/mp3-audio-file.mp3 similarity index 100% rename from e2e/cypress/tests/fixtures/mp3-audio-file.mp3 rename to e2e-tests/cypress/tests/fixtures/mp3-audio-file.mp3 diff --git a/e2e/cypress/tests/fixtures/mp4-video-file.mp4 b/e2e-tests/cypress/tests/fixtures/mp4-video-file.mp4 similarity index 100% rename from e2e/cypress/tests/fixtures/mp4-video-file.mp4 rename to e2e-tests/cypress/tests/fixtures/mp4-video-file.mp4 diff --git a/e2e/cypress/tests/fixtures/mpeg-video-file.mpg b/e2e-tests/cypress/tests/fixtures/mpeg-video-file.mpg similarity index 100% rename from e2e/cypress/tests/fixtures/mpeg-video-file.mpg rename to e2e-tests/cypress/tests/fixtures/mpeg-video-file.mpg diff --git a/e2e/cypress/tests/fixtures/playbook-export.json b/e2e-tests/cypress/tests/fixtures/playbook-export.json similarity index 100% rename from e2e/cypress/tests/fixtures/playbook-export.json rename to e2e-tests/cypress/tests/fixtures/playbook-export.json diff --git a/e2e/cypress/tests/fixtures/png-image-file.png b/e2e-tests/cypress/tests/fixtures/png-image-file.png similarity index 100% rename from e2e/cypress/tests/fixtures/png-image-file.png rename to e2e-tests/cypress/tests/fixtures/png-image-file.png diff --git a/e2e/cypress/tests/fixtures/powerpoint-file.ppt b/e2e-tests/cypress/tests/fixtures/powerpoint-file.ppt similarity index 100% rename from e2e/cypress/tests/fixtures/powerpoint-file.ppt rename to e2e-tests/cypress/tests/fixtures/powerpoint-file.ppt diff --git a/e2e/cypress/tests/fixtures/powerpointx-file.pptx b/e2e-tests/cypress/tests/fixtures/powerpointx-file.pptx similarity index 100% rename from e2e/cypress/tests/fixtures/powerpointx-file.pptx rename to e2e-tests/cypress/tests/fixtures/powerpointx-file.pptx diff --git a/e2e/cypress/tests/fixtures/saml_ldap_users.json b/e2e-tests/cypress/tests/fixtures/saml_ldap_users.json similarity index 100% rename from e2e/cypress/tests/fixtures/saml_ldap_users.json rename to e2e-tests/cypress/tests/fixtures/saml_ldap_users.json diff --git a/e2e/cypress/tests/fixtures/saml_users.json b/e2e-tests/cypress/tests/fixtures/saml_users.json similarity index 100% rename from e2e/cypress/tests/fixtures/saml_users.json rename to e2e-tests/cypress/tests/fixtures/saml_users.json diff --git a/e2e/cypress/tests/fixtures/small-image.png b/e2e-tests/cypress/tests/fixtures/small-image.png similarity index 100% rename from e2e/cypress/tests/fixtures/small-image.png rename to e2e-tests/cypress/tests/fixtures/small-image.png diff --git a/e2e/cypress/tests/fixtures/svg.svg b/e2e-tests/cypress/tests/fixtures/svg.svg similarity index 100% rename from e2e/cypress/tests/fixtures/svg.svg rename to e2e-tests/cypress/tests/fixtures/svg.svg diff --git a/e2e/cypress/tests/fixtures/system-roles-console-access.json b/e2e-tests/cypress/tests/fixtures/system-roles-console-access.json similarity index 100% rename from e2e/cypress/tests/fixtures/system-roles-console-access.json rename to e2e-tests/cypress/tests/fixtures/system-roles-console-access.json diff --git a/e2e/cypress/tests/fixtures/theme.json b/e2e-tests/cypress/tests/fixtures/theme.json similarity index 100% rename from e2e/cypress/tests/fixtures/theme.json rename to e2e-tests/cypress/tests/fixtures/theme.json diff --git a/e2e/cypress/tests/fixtures/tiff-image-file.tif b/e2e-tests/cypress/tests/fixtures/tiff-image-file.tif similarity index 100% rename from e2e/cypress/tests/fixtures/tiff-image-file.tif rename to e2e-tests/cypress/tests/fixtures/tiff-image-file.tif diff --git a/e2e/cypress/tests/fixtures/timeouts.js b/e2e-tests/cypress/tests/fixtures/timeouts.js similarity index 100% rename from e2e/cypress/tests/fixtures/timeouts.js rename to e2e-tests/cypress/tests/fixtures/timeouts.js diff --git a/e2e/cypress/tests/fixtures/txt-changed-as-png.png b/e2e-tests/cypress/tests/fixtures/txt-changed-as-png.png similarity index 100% rename from e2e/cypress/tests/fixtures/txt-changed-as-png.png rename to e2e-tests/cypress/tests/fixtures/txt-changed-as-png.png diff --git a/e2e/cypress/tests/fixtures/webhook_icon.jpg b/e2e-tests/cypress/tests/fixtures/webhook_icon.jpg similarity index 100% rename from e2e/cypress/tests/fixtures/webhook_icon.jpg rename to e2e-tests/cypress/tests/fixtures/webhook_icon.jpg diff --git a/e2e/cypress/tests/fixtures/webhook_override_icon.png b/e2e-tests/cypress/tests/fixtures/webhook_override_icon.png similarity index 100% rename from e2e/cypress/tests/fixtures/webhook_override_icon.png rename to e2e-tests/cypress/tests/fixtures/webhook_override_icon.png diff --git a/e2e/cypress/tests/fixtures/word-file.doc b/e2e-tests/cypress/tests/fixtures/word-file.doc similarity index 100% rename from e2e/cypress/tests/fixtures/word-file.doc rename to e2e-tests/cypress/tests/fixtures/word-file.doc diff --git a/e2e/cypress/tests/fixtures/wordx-file.docx b/e2e-tests/cypress/tests/fixtures/wordx-file.docx similarity index 100% rename from e2e/cypress/tests/fixtures/wordx-file.docx rename to e2e-tests/cypress/tests/fixtures/wordx-file.docx diff --git a/e2e/cypress/tests/integration/boards/card_badges_spec.ts b/e2e-tests/cypress/tests/integration/boards/card_badges_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/boards/card_badges_spec.ts rename to e2e-tests/cypress/tests/integration/boards/card_badges_spec.ts diff --git a/e2e/cypress/tests/integration/boards/card_urlproperty_spec.ts b/e2e-tests/cypress/tests/integration/boards/card_urlproperty_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/boards/card_urlproperty_spec.ts rename to e2e-tests/cypress/tests/integration/boards/card_urlproperty_spec.ts diff --git a/e2e/cypress/tests/integration/boards/create_board_spec.ts b/e2e-tests/cypress/tests/integration/boards/create_board_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/boards/create_board_spec.ts rename to e2e-tests/cypress/tests/integration/boards/create_board_spec.ts diff --git a/e2e/cypress/tests/integration/boards/group_by_property_spec.ts b/e2e-tests/cypress/tests/integration/boards/group_by_property_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/boards/group_by_property_spec.ts rename to e2e-tests/cypress/tests/integration/boards/group_by_property_spec.ts diff --git a/e2e/cypress/tests/integration/boards/manage_groups_spec.ts b/e2e-tests/cypress/tests/integration/boards/manage_groups_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/boards/manage_groups_spec.ts rename to e2e-tests/cypress/tests/integration/boards/manage_groups_spec.ts diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_buttons_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_buttons_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_buttons_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_buttons_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_dropdowns_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_dropdowns_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_dropdowns_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_dropdowns_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_image_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_image_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_image_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_image_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_popovers_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_popovers_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_popovers_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_popovers_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js diff --git a/e2e/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts rename to e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/account_settings_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/account_settings_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/account_settings_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/account_settings_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/email_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/email_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/email_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/email_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/help_text_link_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/help_text_link_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/help_text_link_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/help_text_link_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/profile/username_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/username_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/profile/username_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/profile/username_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/security/access_history_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/security/access_history_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/security/access_history_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/security/access_history_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts diff --git a/e2e/cypress/tests/integration/channels/account_settings/security/password_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/security/password_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/account_settings/security/password_spec.ts rename to e2e-tests/cypress/tests/integration/channels/account_settings/security/password_spec.ts diff --git a/e2e/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.js b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.js rename to e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.js diff --git a/e2e/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.js b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.js rename to e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.js diff --git a/e2e/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.js b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.js rename to e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.js diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archive_channel_header_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_header_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archive_channel_header_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_header_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archive_channel_member_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_member_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archive_channel_member_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_member_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archive_channel_operations_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_operations_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archive_channel_operations_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_operations_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archived_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archived_channel_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archived_channel_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archived_channel_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/archived_leave_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archived_leave_channel_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/archived_leave_channel_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/archived_leave_channel_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/helpers.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/helpers.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/helpers.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/helpers.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts diff --git a/e2e/cypress/tests/integration/channels/archived_channel/post_menu_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/post_menu_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/archived_channel/post_menu_spec.ts rename to e2e-tests/cypress/tests/integration/channels/archived_channel/post_menu_spec.ts diff --git a/e2e/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts rename to e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts diff --git a/e2e/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts rename to e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts diff --git a/e2e/cypress/tests/integration/channels/auth_sso/authentication_3_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_3_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/auth_sso/authentication_3_spec.ts rename to e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_3_spec.ts diff --git a/e2e/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts rename to e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts diff --git a/e2e/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts rename to e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts diff --git a/e2e/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts rename to e2e-tests/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts diff --git a/e2e/cypress/tests/integration/channels/autocomplete/common_test.ts b/e2e-tests/cypress/tests/integration/channels/autocomplete/common_test.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/autocomplete/common_test.ts rename to e2e-tests/cypress/tests/integration/channels/autocomplete/common_test.ts diff --git a/e2e/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.js b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.js rename to e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.js diff --git a/e2e/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.js b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.js rename to e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.js diff --git a/e2e/cypress/tests/integration/channels/autocomplete/database/users_spec.js b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/autocomplete/database/users_spec.js rename to e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_spec.js diff --git a/e2e/cypress/tests/integration/channels/autocomplete/helpers.ts b/e2e-tests/cypress/tests/integration/channels/autocomplete/helpers.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/autocomplete/helpers.ts rename to e2e-tests/cypress/tests/integration/channels/autocomplete/helpers.ts diff --git a/e2e/cypress/tests/integration/channels/benchmark/message_spec.ts b/e2e-tests/cypress/tests/integration/channels/benchmark/message_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/benchmark/message_spec.ts rename to e2e-tests/cypress/tests/integration/channels/benchmark/message_spec.ts diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/create_bot_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/create_bot_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/create_bot_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/create_bot_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/crud_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/crud_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/display_name_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/display_name_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/display_name_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/display_name_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/helpers.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/helpers.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/helpers.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/post_message_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/post_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/post_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/post_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.js diff --git a/e2e/cypress/tests/integration/channels/bot_accounts/tags_spec.js b/e2e-tests/cypress/tests/integration/channels/bot_accounts/tags_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/bot_accounts/tags_spec.js rename to e2e-tests/cypress/tests/integration/channels/bot_accounts/tags_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/archived_channels_1_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/archived_channels_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/archived_channels_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/archived_channels_2_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/archived_channels_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/archived_channels_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/channel_info_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/channel_info_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/channel_info_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/channel_info_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/channel_members_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/channel_members_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/channel_members_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/channel_members_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/channel_routing_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/channel_routing_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/channel_routing_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/channel_routing_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/channel_settings_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/channel_settings_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/channel_settings_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/channel_settings_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/channel_switcher_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/channel_switcher_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/channel_switcher_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/channel_switcher_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/close_direct_group_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/close_direct_group_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/close_direct_group_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/close_direct_group_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/convert_channel_to_private_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/convert_channel_to_private_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/convert_channel_to_private_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/convert_channel_to_private_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/leave_and_archive_channel_destructive_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/leave_and_archive_channel_destructive_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/leave_and_archive_channel_destructive_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel/leave_and_archive_channel_destructive_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel/leave_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/leave_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/leave_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/leave_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/more_channels_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/more_channels_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/more_channels_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/more_channels_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/more_public_channels_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/more_public_channels_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/more_public_channels_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/more_public_channels_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/new_channel_with_board_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/new_channel_with_board_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/new_channel_with_board_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/new_channel_with_board_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_settings/more_unreads_position_with_scroll_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_settings/more_unreads_position_with_scroll_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_settings/more_unreads_position_with_scroll_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_settings/more_unreads_position_with_scroll_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/category.d.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category.d.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/category.d.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/category.d.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/helpers.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/helpers.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/helpers.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/helpers.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts diff --git a/e2e/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts rename to e2e-tests/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/crt_settings_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/crt_settings_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/crt_settings_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/crt_settings_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/crt_tour_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/crt_tour_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/crt_tour_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/crt_tour_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.js diff --git a/e2e/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.js b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/commands/leave_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/commands/leave_channel_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/commands/leave_channel_spec.ts rename to e2e-tests/cypress/tests/integration/channels/commands/leave_channel_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_1_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_1_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_1_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_2_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_2_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_2_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_3_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_3_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_3_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_3_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_4_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_4_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_4_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_4_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_6_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_6_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_6_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_6_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_1_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_1_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_1_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_2_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_2_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_2_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_3_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_3_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_3_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_3_spec.ts diff --git a/e2e/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_4_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_4_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_4_spec.ts rename to e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_expiry/custom_status_expiry_4_spec.ts diff --git a/e2e/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts rename to e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts diff --git a/e2e/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts rename to e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts diff --git a/e2e/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts rename to e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts diff --git a/e2e/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts rename to e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts diff --git a/e2e/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts rename to e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts diff --git a/e2e/cypress/tests/integration/channels/emoji/helpers.js b/e2e-tests/cypress/tests/integration/channels/emoji/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/helpers.js rename to e2e-tests/cypress/tests/integration/channels/emoji/helpers.js diff --git a/e2e/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts rename to e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts diff --git a/e2e/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts rename to e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts diff --git a/e2e/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts rename to e2e-tests/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/billing_history_free_trial_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/billing_history_free_trial_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/billing_history_free_trial_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/billing_history_free_trial_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/downgrade_feedback_modal_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/downgrade_feedback_modal_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/downgrade_feedback_modal_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/downgrade_feedback_modal_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/payment_free_trial_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/payment_free_trial_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/payment_free_trial_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/payment_free_trial_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_with_special_characters_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_with_special_characters_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_with_special_characters_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_with_special_characters_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers/index.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers/index.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers/index.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers/index.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.js b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_email_login_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_email_login_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_email_login_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_email_login_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/extend_session/session_length_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/session_length_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/extend_session/session_length_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/session_length_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/group_mentions/helpers.js b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/group_mentions/helpers.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/helpers.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/helpers.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/helpers.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/helpers.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/helpers.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec_user_a_b_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec_user_a_b_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec_user_a_b_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec_user_a_b_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/saml/saml_metadata_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_metadata_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/saml/saml_metadata_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_metadata_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts rename to e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/about/starter_edition_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/about/starter_edition_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/about/starter_edition_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/about/starter_edition_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/channel_mentions_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/channel_mentions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/channel_mentions_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/channel_mentions_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/constants.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/constants.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/constants.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/constants.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/create_posts_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/create_posts_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/create_posts_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/create_posts_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/cluster_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/cluster_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/cluster_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/cluster_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_multiple_post_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_multiple_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_multiple_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_multiple_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_2_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_3_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_3_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_3_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_3_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_4_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_4_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_4_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_4_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/download_bot_compliance_export_file_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/download_bot_compliance_export_file_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/download_bot_compliance_export_file_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/download_bot_compliance_export_file_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/download_compliance_export_file_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/download_compliance_export_file_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/download_compliance_export_file_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/download_compliance_export_file_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/helpers.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/helpers.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/helpers.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/limited_console_access_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/main_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/main_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/main_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/main_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/support_packet_generation_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/support_packet_generation_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/support_packet_generation_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/support_packet_generation_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/system_console/ui_and_api/notifications_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/ui_and_api/notifications_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/system_console/ui_and_api/notifications_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/system_console/ui_and_api/notifications_spec.js diff --git a/e2e/cypress/tests/integration/channels/enterprise/teams/search_teams_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/teams/search_teams_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/enterprise/teams/search_teams_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/teams/search_teams_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/cancel_file_upload_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/cancel_file_upload_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/cancel_file_upload_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/cancel_file_upload_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/edit_message_with_attachment_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/edit_message_with_attachment_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/edit_message_with_attachment_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/edit_message_with_attachment_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/helpers.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/helpers.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/helpers.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/image_link_preview_1_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/image_link_preview_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/image_link_preview_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/image_link_preview_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/image_link_preview_new_window_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/image_link_preview_new_window_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/image_link_preview_new_window_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/image_link_preview_new_window_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/image_link_preview_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/image_link_preview_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/image_link_preview_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/image_link_preview_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/paste_image_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/paste_image_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/paste_image_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/paste_image_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js diff --git a/e2e/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js rename to e2e-tests/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js diff --git a/e2e/cypress/tests/integration/channels/insights/last_viewed_spec.js b/e2e-tests/cypress/tests/integration/channels/insights/last_viewed_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/insights/last_viewed_spec.js rename to e2e-tests/cypress/tests/integration/channels/insights/last_viewed_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/helper.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/helper.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/helper.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/helper.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/user_status_commands_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/user_status_commands_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/user_status_commands_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/user_status_commands_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js b/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js rename to e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js diff --git a/e2e/cypress/tests/integration/channels/integrations/custom_slash_commands/slash_commands_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/slash_commands_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/custom_slash_commands/slash_commands_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/slash_commands_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/basic_formatting_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/basic_formatting_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/basic_formatting_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/basic_formatting_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/cancel_out_of_edit_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/cancel_out_of_edit_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/cancel_out_of_edit_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/cancel_out_of_edit_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/copy_icon_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/copy_icon_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/copy_icon_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/copy_icon_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/delete_incoming_webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/delete_incoming_webhook_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/delete_incoming_webhook_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/delete_incoming_webhook_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/description_length_check_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/description_length_check_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/description_length_check_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/description_length_check_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/edit_incoming_webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/edit_incoming_webhook_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/edit_incoming_webhook_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/edit_incoming_webhook_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/helpers.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/helpers.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/helpers.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_creates_dm_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_creates_dm_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_creates_dm_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_creates_dm_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_is_image_only_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_is_image_only_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_is_image_only_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/incoming_webhook_is_image_only_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/integrations_display_on_team_where_created_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/integrations_display_on_team_where_created_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/integrations_display_on_team_where_created_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/integrations_display_on_team_where_created_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/long_url_embedded_image_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/long_url_embedded_image_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/long_url_embedded_image_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/long_url_embedded_image_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/setup_incoming_webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/setup_incoming_webhook_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/setup_incoming_webhook_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/setup_incoming_webhook_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/slack_formatting_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/slack_formatting_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/slack_formatting_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/slack_formatting_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/integrations_page_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/integrations_page_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/integrations_page_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/integrations_page_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/integrations_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/integrations_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/integrations_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/integrations_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/token_copy_icon_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/token_copy_icon_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/outgoing_webhook/token_copy_icon_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/token_copy_icon_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/poll_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/poll_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/poll_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/poll_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/regen_token_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/regen_token_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/regen_token_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/regen_token_spec.js diff --git a/e2e/cypress/tests/integration/channels/integrations/slash_commands_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/slash_commands_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/integrations/slash_commands_spec.js rename to e2e-tests/cypress/tests/integration/channels/integrations/slash_commands_spec.js diff --git a/e2e/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js rename to e2e-tests/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js diff --git a/e2e/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts rename to e2e-tests/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts diff --git a/e2e/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js rename to e2e-tests/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js diff --git a/e2e/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js rename to e2e-tests/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js diff --git a/e2e/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js rename to e2e-tests/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js diff --git a/e2e/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js rename to e2e-tests/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js diff --git a/e2e/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js rename to e2e-tests/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js diff --git a/e2e/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js rename to e2e-tests/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/backspace_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/backspace_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/backspace_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/backspace_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_alt_I_toggles_channel_info_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_alt_I_toggles_channel_info_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_alt_I_toggles_channel_info_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_alt_I_toggles_channel_info_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_at_username_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_at_username_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_at_username_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_at_username_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_channel_switch_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_channel_switch_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_channel_switch_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_channel_switch_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_gm_with_mouse_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_gm_with_mouse_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_gm_with_mouse_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_gm_with_mouse_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_user_from_other_team_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_user_from_other_team_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_user_from_other_team_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_user_from_other_team_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_l_set_message_focus_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_l_set_message_focus_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_l_set_message_focus_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_l_set_message_focus_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_a_account_settings_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_a_account_settings_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_a_account_settings_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_a_account_settings_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_l_does_not_change_focus_to_msgbox_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_l_does_not_change_focus_to_msgbox_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_l_does_not_change_focus_to_msgbox_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_l_does_not_change_focus_to_msgbox_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_m_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_m_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_m_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_m_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/esc_close_modal_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/esc_close_modal_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/esc_close_modal_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/esc_close_modal_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/shift_up_focuses_on_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/shift_up_focuses_on_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/shift_up_focuses_on_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/shift_up_focuses_on_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/system_message_not_open_for_edit_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/system_message_not_open_for_edit_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/system_message_not_open_for_edit_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/system_message_not_open_for_edit_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts rename to e2e-tests/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/archive_channel_mark_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/archive_channel_mark_as_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/archive_channel_mark_as_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/archive_channel_mark_as_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/helpers.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/helpers.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/helpers.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/mark_dm_post_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_dm_post_as_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/mark_dm_post_as_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_dm_post_as_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/mark_as_unread/unread_toast_count_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/unread_toast_count_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/mark_as_unread/unread_toast_count_spec.js rename to e2e-tests/cypress/tests/integration/channels/mark_as_unread/unread_toast_count_spec.js diff --git a/e2e/cypress/tests/integration/channels/markdown/markdown_image_spec.js b/e2e-tests/cypress/tests/integration/channels/markdown/markdown_image_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/markdown/markdown_image_spec.js rename to e2e-tests/cypress/tests/integration/channels/markdown/markdown_image_spec.js diff --git a/e2e/cypress/tests/integration/channels/markdown/markdown_text_spec.js b/e2e-tests/cypress/tests/integration/channels/markdown/markdown_text_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/markdown/markdown_text_spec.js rename to e2e-tests/cypress/tests/integration/channels/markdown/markdown_text_spec.js diff --git a/e2e/cypress/tests/integration/channels/menus/main_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/menus/main_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/menus/main_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/menus/main_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/menus/status_dropdown_spec.js b/e2e-tests/cypress/tests/integration/channels/menus/status_dropdown_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/menus/status_dropdown_spec.js rename to e2e-tests/cypress/tests/integration/channels/menus/status_dropdown_spec.js diff --git a/e2e/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js rename to e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js diff --git a/e2e/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js rename to e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js diff --git a/e2e/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/at_mentions_user_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/at_mentions_user_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/at_mentions_user_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/at_mentions_user_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/autocomplete_shown_each_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_shown_each_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/autocomplete_shown_each_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_shown_each_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/autocomplete_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/autocomplete_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/autocomplete_with_space_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_with_space_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/autocomplete_with_space_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_with_space_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/channel_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/channel_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/channel_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/channel_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/channel_users_interactions_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/channel_users_interactions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/channel_users_interactions_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/channel_users_interactions_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/collapse_link_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/collapse_link_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/collapse_link_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/collapse_link_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/collapsed_message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/collapsed_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/collapsed_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/collapsed_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/copy_post_text_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/copy_post_text_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/copy_post_text_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/copy_post_text_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/ctrl_cmd_k_find_gm_by_matching_name_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/ctrl_cmd_k_find_gm_by_matching_name_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/ctrl_cmd_k_find_gm_by_matching_name_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/ctrl_cmd_k_find_gm_by_matching_name_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/date_separator_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/date_separator_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/date_separator_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/date_separator_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/direct_message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/direct_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/direct_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/direct_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/draft_with_only_2_byte_characters_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/draft_with_only_2_byte_characters_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/draft_with_only_2_byte_characters_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/draft_with_only_2_byte_characters_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/edit_message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/edit_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/edit_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/edit_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_followed_by_punctuation_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_followed_by_punctuation_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_followed_by_punctuation_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_followed_by_punctuation_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_gender_spec.ts b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_gender_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_gender_spec.ts rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_gender_spec.ts diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_insert_position_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_insert_position_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_insert_position_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_insert_position_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_keyboard_entry_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_keyboard_entry_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_keyboard_entry_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_keyboard_entry_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_no_overlap_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_no_overlap_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_no_overlap_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_no_overlap_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_picker_keyboard_usability_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_picker_keyboard_usability_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_picker_keyboard_usability_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_picker_keyboard_usability_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_size_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_size_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_size_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_size_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_skin_tone_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_skin_tone_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_skin_tone_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_skin_tone_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/file_upload_in_center_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/file_upload_in_center_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/file_upload_in_center_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/file_upload_in_center_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/focus_move_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/focus_move_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/focus_move_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/focus_move_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/group_message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/group_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/group_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/group_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/header_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/header_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/header_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/header_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/helpers.js b/e2e-tests/cypress/tests/integration/channels/messaging/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/helpers.js rename to e2e-tests/cypress/tests/integration/channels/messaging/helpers.js diff --git a/e2e/cypress/tests/integration/channels/messaging/image_attachment_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/image_attachment_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/image_attachment_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/image_attachment_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/inline_images_open_preview_window_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/inline_images_open_preview_window_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/inline_images_open_preview_window_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/inline_images_open_preview_window_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/inline_markdown_image_link_open_link_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/inline_markdown_image_link_open_link_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/inline_markdown_image_link_open_link_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/inline_markdown_image_link_open_link_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/input_box_expands_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/input_box_expands_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/input_box_expands_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/input_box_expands_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/invalid_emojis_as_text_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/invalid_emojis_as_text_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/invalid_emojis_as_text_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/invalid_emojis_as_text_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/local_date_time_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/local_date_time_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/local_date_time_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/local_date_time_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/long_draft_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/long_draft_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/long_draft_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/long_draft_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/markdown_preview_inline_image_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/markdown_preview_inline_image_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/markdown_preview_inline_image_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/markdown_preview_inline_image_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/markdown_quotation_paragraphs_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/markdown_quotation_paragraphs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/markdown_quotation_paragraphs_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/markdown_quotation_paragraphs_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/markdown_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/markdown_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/markdown_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/markdown_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_auto_response_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_auto_response_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_auto_response_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_auto_response_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_bullets_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_bullets_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_bullets_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_bullets_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_by_aeroplane_icon_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_by_aeroplane_icon_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_by_aeroplane_icon_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_by_aeroplane_icon_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_deletion_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_deletion_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_deletion_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_deletion_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_draft_persistance_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_draft_persistance_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_draft_persistance_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_draft_persistance_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_draft_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_draft_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_draft_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_draft_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_draft_then_switch_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_draft_then_switch_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_draft_then_switch_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_draft_then_switch_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_draft_with_attachment_then_switch_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_draft_with_attachment_then_switch_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_draft_with_attachment_then_switch_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_draft_with_attachment_then_switch_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts rename to e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts diff --git a/e2e/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_emoji_jumbo_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_emoji_jumbo_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_emoji_jumbo_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_emoji_jumbo_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_ephemeral_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_ephemeral_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_ephemeral_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_ephemeral_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_in_another_language_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_in_another_language_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_in_another_language_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_in_another_language_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_parse_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_parse_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_parse_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_parse_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_permalink_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_permalink_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_permalink_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_permalink_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_pinning_unpinning_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_pinning_unpinning_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_pinning_unpinning_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_pinning_unpinning_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reaction_gm_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reaction_gm_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reaction_gm_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reaction_gm_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reaction_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reaction_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reaction_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reaction_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reply_bot_post_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_bot_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reply_bot_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reply_bot_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reply_scrollable_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_scrollable_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reply_scrollable_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reply_scrollable_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reply_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reply_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reply_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_reply_too_long_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_too_long_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_reply_too_long_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_reply_too_long_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_shortlinking_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_shortlinking_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_shortlinking_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_shortlinking_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/message_with_gif_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_with_gif_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/message_with_gif_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/message_with_gif_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/mobile_message_deletion_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/mobile_message_deletion_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/mobile_message_deletion_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/mobile_message_deletion_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/no_matches_for_autocomplete_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/no_matches_for_autocomplete_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/no_matches_for_autocomplete_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/no_matches_for_autocomplete_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/permalink_click_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_click_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/permalink_click_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/permalink_click_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/pinned_parent_post_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/pinned_parent_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/pinned_parent_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/pinned_parent_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/pinned_posts_1_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/pinned_posts_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/pinned_posts_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/pinned_posts_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/post_header_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/post_header_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/post_header_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/post_header_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/post_html_table_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/post_html_table_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/post_html_table_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/post_html_table_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/post_options_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/post_options_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/post_options_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/post_options_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/post_pre_header_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/post_pre_header_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/post_pre_header_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/post_pre_header_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/post_textbox_height_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/post_textbox_height_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/post_textbox_height_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/post_textbox_height_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/private_channel_open_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/private_channel_open_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/private_channel_open_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/private_channel_open_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/quick_send_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/quick_send_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/quick_send_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/quick_send_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/quote_notation_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/quote_notation_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/quote_notation_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/quote_notation_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/reactions_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/reactions_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/remove_gif_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/remove_gif_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/remove_gif_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/remove_gif_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/save_post_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/save_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/save_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/save_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/strikethrough_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/strikethrough_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/strikethrough_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/strikethrough_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/system_message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/system_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/system_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/system_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/thread_appears_and_scrollable_in_the_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/thread_appears_and_scrollable_in_the_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/thread_appears_and_scrollable_in_the_rhs_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/thread_appears_and_scrollable_in_the_rhs_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/tooltip_visual_verification_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/tooltip_visual_verification_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/tooltip_visual_verification_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/tooltip_visual_verification_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js diff --git a/e2e/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js rename to e2e-tests/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js diff --git a/e2e/cypress/tests/integration/channels/modals/quick_switcher_spec.js b/e2e-tests/cypress/tests/integration/channels/modals/quick_switcher_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/modals/quick_switcher_spec.js rename to e2e-tests/cypress/tests/integration/channels/modals/quick_switcher_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/channel_user_count_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/channel_user_count_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/channel_user_count_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/channel_user_count_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/close_gm_via_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/close_gm_via_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/close_gm_via_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/close_gm_via_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/dm_more_searching_from_page_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/dm_more_searching_from_page_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/dm_more_searching_from_page_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/dm_more_searching_from_page_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/favorite_and_close_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/favorite_and_close_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/favorite_and_close_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/favorite_and_close_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/join_open_team_from_dm_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/join_open_team_from_dm_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/join_open_team_from_dm_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/join_open_team_from_dm_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/max_gm_members_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/max_gm_members_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/max_gm_members_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/max_gm_members_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/multi_team_and_dm/town_square_not_marked_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/town_square_not_marked_as_unread_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/multi_team_and_dm/town_square_not_marked_as_unread_spec.js rename to e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/town_square_not_marked_as_unread_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/at_icon_still_shows_mentions_list_with_deactivated_triggers_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/at_icon_still_shows_mentions_list_with_deactivated_triggers_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/at_icon_still_shows_mentions_list_with_deactivated_triggers_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/at_icon_still_shows_mentions_list_with_deactivated_triggers_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/at_mentions_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/at_mentions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/at_mentions_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/at_mentions_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/direct_messages_do_not_add_indicator_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/direct_messages_do_not_add_indicator_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/direct_messages_do_not_add_indicator_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/direct_messages_do_not_add_indicator_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/helper.js b/e2e-tests/cypress/tests/integration/channels/notifications/helper.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/helper.js rename to e2e-tests/cypress/tests/integration/channels/notifications/helper.js diff --git a/e2e/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/message_bar_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/message_bar_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/message_bar_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/message_bar_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/reply_notifications_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/reply_notifications_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/reply_notifications_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/reply_notifications_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js diff --git a/e2e/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js rename to e2e-tests/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js diff --git a/e2e/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js rename to e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js diff --git a/e2e/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js rename to e2e-tests/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js diff --git a/e2e/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js rename to e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js diff --git a/e2e/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js rename to e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js diff --git a/e2e/cypress/tests/integration/channels/performance/channel_switch_spec.js b/e2e-tests/cypress/tests/integration/channels/performance/channel_switch_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/performance/channel_switch_spec.js rename to e2e-tests/cypress/tests/integration/channels/performance/channel_switch_spec.js diff --git a/e2e/cypress/tests/integration/channels/performance/team_switch_spec.js b/e2e-tests/cypress/tests/integration/channels/performance/team_switch_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/performance/team_switch_spec.js rename to e2e-tests/cypress/tests/integration/channels/performance/team_switch_spec.js diff --git a/e2e/cypress/tests/integration/channels/performance/utils.js b/e2e-tests/cypress/tests/integration/channels/performance/utils.js similarity index 100% rename from e2e/cypress/tests/integration/channels/performance/utils.js rename to e2e-tests/cypress/tests/integration/channels/performance/utils.js diff --git a/e2e/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/helpers.js b/e2e-tests/cypress/tests/integration/channels/plugins/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/helpers.js rename to e2e-tests/cypress/tests/integration/channels/plugins/helpers.js diff --git a/e2e/cypress/tests/integration/channels/plugins/link_tooltip_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/link_tooltip_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/link_tooltip_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/link_tooltip_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/marketplace/helpers.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/marketplace/helpers.js rename to e2e-tests/cypress/tests/integration/channels/plugins/marketplace/helpers.js diff --git a/e2e/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/marketplace/not_render_in_main_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/not_render_in_main_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/marketplace/not_render_in_main_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/marketplace/not_render_in_main_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/plugin_install_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_install_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/plugin_install_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/plugin_install_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js diff --git a/e2e/cypress/tests/integration/channels/plugins/upgrade_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/upgrade_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/plugins/upgrade_spec.js rename to e2e-tests/cypress/tests/integration/channels/plugins/upgrade_spec.js diff --git a/e2e/cypress/tests/integration/channels/profile_settings/profile_settings_spec.js b/e2e-tests/cypress/tests/integration/channels/profile_settings/profile_settings_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/profile_settings/profile_settings_spec.js rename to e2e-tests/cypress/tests/integration/channels/profile_settings/profile_settings_spec.js diff --git a/e2e/cypress/tests/integration/channels/scroll/channel_scroll_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/channel_scroll_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/scroll/channel_scroll_spec.js rename to e2e-tests/cypress/tests/integration/channels/scroll/channel_scroll_spec.js diff --git a/e2e/cypress/tests/integration/channels/scroll/default_images_collapsed_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/default_images_collapsed_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/scroll/default_images_collapsed_spec.js rename to e2e-tests/cypress/tests/integration/channels/scroll/default_images_collapsed_spec.js diff --git a/e2e/cypress/tests/integration/channels/scroll/deleting_image_scroll_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/deleting_image_scroll_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/scroll/deleting_image_scroll_spec.js rename to e2e-tests/cypress/tests/integration/channels/scroll/deleting_image_scroll_spec.js diff --git a/e2e/cypress/tests/integration/channels/scroll/deleting_scroll_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/deleting_scroll_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/scroll/deleting_scroll_spec.js rename to e2e-tests/cypress/tests/integration/channels/scroll/deleting_scroll_spec.js diff --git a/e2e/cypress/tests/integration/channels/scroll/editing_scroll_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/editing_scroll_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/scroll/editing_scroll_spec.js rename to e2e-tests/cypress/tests/integration/channels/scroll/editing_scroll_spec.js diff --git a/e2e/cypress/tests/integration/channels/scroll/fixed_width_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/fixed_width_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/scroll/fixed_width_spec.js rename to e2e-tests/cypress/tests/integration/channels/scroll/fixed_width_spec.js diff --git a/e2e/cypress/tests/integration/channels/scroll/helpers.js b/e2e-tests/cypress/tests/integration/channels/scroll/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/scroll/helpers.js rename to e2e-tests/cypress/tests/integration/channels/scroll/helpers.js diff --git a/e2e/cypress/tests/integration/channels/scroll/image_aspect_ratio_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/image_aspect_ratio_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/scroll/image_aspect_ratio_spec.js rename to e2e-tests/cypress/tests/integration/channels/scroll/image_aspect_ratio_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/clear_input_spec.js b/e2e-tests/cypress/tests/integration/channels/search/clear_input_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/clear_input_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/clear_input_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/cleared_search_term_spec.js b/e2e-tests/cypress/tests/integration/channels/search/cleared_search_term_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/cleared_search_term_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/cleared_search_term_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/mobile_search_spec.js b/e2e-tests/cypress/tests/integration/channels/search/mobile_search_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/mobile_search_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/mobile_search_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/post_search_display_spec.js b/e2e-tests/cypress/tests/integration/channels/search/post_search_display_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/post_search_display_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/post_search_display_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/results_post_comment_spec.js b/e2e-tests/cypress/tests/integration/channels/search/results_post_comment_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/results_post_comment_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/results_post_comment_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/results_post_spec.js b/e2e-tests/cypress/tests/integration/channels/search/results_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/results_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/results_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/search_bar_popup_focus_spec.js b/e2e-tests/cypress/tests/integration/channels/search/search_bar_popup_focus_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/search_bar_popup_focus_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/search_bar_popup_focus_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/search_group_message_spec.js b/e2e-tests/cypress/tests/integration/channels/search/search_group_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/search_group_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/search_group_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/search_user_file_spec.js b/e2e-tests/cypress/tests/integration/channels/search/search_user_file_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/search_user_file_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/search_user_file_spec.js diff --git a/e2e/cypress/tests/integration/channels/search/search_user_post_spec.js b/e2e-tests/cypress/tests/integration/channels/search/search_user_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search/search_user_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/search/search_user_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_autocomplete/channels_spec.js b/e2e-tests/cypress/tests/integration/channels/search_autocomplete/channels_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_autocomplete/channels_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_autocomplete/channels_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js b/e2e-tests/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_autocomplete/scroll_spec.js b/e2e-tests/cypress/tests/integration/channels/search_autocomplete/scroll_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_autocomplete/scroll_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_autocomplete/scroll_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/after_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/after_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/after_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/after_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/before_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/before_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/before_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/before_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/edit_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/edit_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/edit_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/edit_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/future_date_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/future_date_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/future_date_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/future_date_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/helpers.js b/e2e-tests/cypress/tests/integration/channels/search_filter/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/helpers.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/helpers.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/input_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/input_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/input_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/input_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/invalid_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/invalid_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/invalid_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/invalid_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/mixed_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/mixed_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/mixed_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/mixed_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/negative_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/negative_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/negative_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/negative_spec.js diff --git a/e2e/cypress/tests/integration/channels/search_filter/on_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/on_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/search_filter/on_spec.js rename to e2e-tests/cypress/tests/integration/channels/search_filter/on_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/channel_display_mode_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/channel_display_mode_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/channel_display_mode_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/channel_display_mode_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/message_display_mode_colorize_username_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/message_display_mode_colorize_username_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/message_display_mode_colorize_username_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/message_display_mode_colorize_username_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/theme/settings_view_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/settings_view_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/theme/settings_view_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/theme/settings_view_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/sidebar/channel_switcher_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/sidebar/channel_switcher_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/sidebar/channel_switcher_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/sidebar/channel_switcher_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js diff --git a/e2e/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js rename to e2e-tests/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/authentication_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/authentication_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/authentication_spec.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/authentication_spec.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/helpers.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/helpers.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/helpers.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/login_close_server_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/login_close_server_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/login_close_server_spec.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/login_close_server_spec.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/login_logout_smoke_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/login_logout_smoke_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/login_logout_smoke_spec.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/login_logout_smoke_spec.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js diff --git a/e2e/cypress/tests/integration/channels/signin_authentication/signup_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/signin_authentication/signup_spec.js rename to e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js diff --git a/e2e/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js b/e2e-tests/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js rename to e2e-tests/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js diff --git a/e2e/cypress/tests/integration/channels/status/status_dnd_1_spec.js b/e2e-tests/cypress/tests/integration/channels/status/status_dnd_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/status/status_dnd_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/status/status_dnd_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js b/e2e-tests/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js rename to e2e-tests/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js diff --git a/e2e/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js b/e2e-tests/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js rename to e2e-tests/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js diff --git a/e2e/cypress/tests/integration/channels/subpath/subpath_login_spec.js b/e2e-tests/cypress/tests/integration/channels/subpath/subpath_login_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/subpath/subpath_login_spec.js rename to e2e-tests/cypress/tests/integration/channels/subpath/subpath_login_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/authentication/password_settings_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/authentication/password_settings_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/authentication/password_settings_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/authentication/password_settings_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/compliance/custom_terms_of_service_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/compliance/custom_terms_of_service_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/compliance/custom_terms_of_service_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/compliance/custom_terms_of_service_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/demoted_user_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/demoted_user_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/demoted_user_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/demoted_user_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/environment_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/environment_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/environment_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/environment_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/feature_discovery_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/feature_discovery_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/feature_discovery_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/feature_discovery_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/feature_discovery_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/feature_discovery_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/feature_discovery_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/feature_discovery_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/feature_discovery_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/feature_discovery_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/feature_discovery_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/feature_discovery_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/inactive_users_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/inactive_users_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/inactive_users_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/inactive_users_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/lock_teammate_name_display_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/lock_teammate_name_display_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/lock_teammate_name_display_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/lock_teammate_name_display_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/main_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/main_menu_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/main_menu_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/main_menu_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/mobile_settings_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/mobile_settings_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/mobile_settings_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/mobile_settings_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/plugin_marketplace_url_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/plugin_marketplace_url_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/plugin_marketplace_url_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/plugin_marketplace_url_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/session_length_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/session_length_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/session_length_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/session_length_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/site_configuration/helper.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/helper.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/site_configuration/helper.js rename to e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/helper.js diff --git a/e2e/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/site_url_config_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_url_config_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/site_url_config_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/site_url_config_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/support_packet_generation_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/support_packet_generation_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/support_packet_generation_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/support_packet_generation_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/true_up_review_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/true_up_review_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/true_up_review_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/true_up_review_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/ui_and_api/custom_site_name_description_spec.ts b/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/custom_site_name_description_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/ui_and_api/custom_site_name_description_spec.ts rename to e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/custom_site_name_description_spec.ts diff --git a/e2e/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/user_management/users_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/user_management/users_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/user_management_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/user_management_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/user_management_spec.js diff --git a/e2e/cypress/tests/integration/channels/system_console/workspace_deletion_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/workspace_deletion_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/system_console/workspace_deletion_spec.js rename to e2e-tests/cypress/tests/integration/channels/system_console/workspace_deletion_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/archive_team_spec.ts b/e2e-tests/cypress/tests/integration/channels/team_settings/archive_team_spec.ts similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/archive_team_spec.ts rename to e2e-tests/cypress/tests/integration/channels/team_settings/archive_team_spec.ts diff --git a/e2e/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/create_a_team_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/create_a_team_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/create_a_team_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/create_a_team_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/helpers.js b/e2e-tests/cypress/tests/integration/channels/team_settings/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/helpers.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/helpers.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/invite_members_backdrop_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/invite_members_backdrop_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/invite_members_backdrop_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/invite_members_backdrop_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/invite_members_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/invite_members_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/invite_members_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/invite_members_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/invite_user_to_closed_team_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/invite_user_to_closed_team_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/invite_user_to_closed_team_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/invite_user_to_closed_team_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/manage_members_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/manage_members_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/manage_members_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/manage_members_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/remove_team_icon_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/remove_team_icon_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/remove_team_icon_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/remove_team_icon_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/teammates_pagination_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/teammates_pagination_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/teammates_pagination_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/teammates_pagination_spec.js diff --git a/e2e/cypress/tests/integration/channels/team_settings/teams_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/teams_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/team_settings/teams_spec.js rename to e2e-tests/cypress/tests/integration/channels/team_settings/teams_spec.js diff --git a/e2e/cypress/tests/integration/channels/toast/helpers.js b/e2e-tests/cypress/tests/integration/channels/toast/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/toast/helpers.js rename to e2e-tests/cypress/tests/integration/channels/toast/helpers.js diff --git a/e2e/cypress/tests/integration/channels/toast/new_messages_toast_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/new_messages_toast_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/toast/new_messages_toast_spec.js rename to e2e-tests/cypress/tests/integration/channels/toast/new_messages_toast_spec.js diff --git a/e2e/cypress/tests/integration/channels/toast/permalink_jump_to_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/permalink_jump_to_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/toast/permalink_jump_to_spec.js rename to e2e-tests/cypress/tests/integration/channels/toast/permalink_jump_to_spec.js diff --git a/e2e/cypress/tests/integration/channels/toast/permalink_post_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/permalink_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/toast/permalink_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/toast/permalink_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js rename to e2e-tests/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js diff --git a/e2e/cypress/tests/integration/channels/toast/toast_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/toast_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/toast/toast_spec.js rename to e2e-tests/cypress/tests/integration/channels/toast/toast_spec.js diff --git a/e2e/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js rename to e2e-tests/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js diff --git a/e2e/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js b/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js rename to e2e-tests/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js diff --git a/e2e/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js b/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js rename to e2e-tests/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js diff --git a/e2e/cypress/tests/integration/channels/websocket/handle_new_post_spec.js b/e2e-tests/cypress/tests/integration/channels/websocket/handle_new_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/websocket/handle_new_post_spec.js rename to e2e-tests/cypress/tests/integration/channels/websocket/handle_new_post_spec.js diff --git a/e2e/cypress/tests/integration/channels/websocket/handle_removed_user/helpers.js b/e2e-tests/cypress/tests/integration/channels/websocket/handle_removed_user/helpers.js similarity index 100% rename from e2e/cypress/tests/integration/channels/websocket/handle_removed_user/helpers.js rename to e2e-tests/cypress/tests/integration/channels/websocket/handle_removed_user/helpers.js diff --git a/e2e/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js b/e2e-tests/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js similarity index 100% rename from e2e/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js rename to e2e-tests/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/adminconsole/analytics_spec.js b/e2e-tests/cypress/tests/integration/playbooks/adminconsole/analytics_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/adminconsole/analytics_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/adminconsole/analytics_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/api/runs_spec.js b/e2e-tests/cypress/tests/integration/playbooks/api/runs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/api/runs_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/api/runs_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/app_bar_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/app_bar_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/app_bar_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/app_bar_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/broadcast_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/broadcast_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/broadcast_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/broadcast_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/channel_header_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/channel_header_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/channel_header_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/channel_header_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/general_actions_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/general_actions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/general_actions_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/general_actions_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/playbook_run_actions.js b/e2e-tests/cypress/tests/integration/playbooks/channels/playbook_run_actions.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/playbook_run_actions.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/playbook_run_actions.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/post_type_components_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/post_type_components_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/post_type_components_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/post_type_components_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/retrospective_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/retrospective_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/retrospective_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/retrospective_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/about_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/about_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/about_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/about_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/checklist_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/checklist_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/checklist_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/checklist_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/header_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/header_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/header_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/header_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/home_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/home_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/home_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/home_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/list_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/list_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/list_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/list_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/start_run_rhs_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/start_run_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/start_run_rhs_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/start_run_rhs_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/status_update_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/status_update_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/status_update_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/status_update_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/template_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/template_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/template_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/template_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs/title_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs/title_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs/title_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs/title_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/rhs_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/rhs_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/rhs_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/run_dialog_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/run_dialog_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/run_dialog_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/run_dialog_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/run_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/run_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/run_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/run_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/slash_command/commands_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/commands_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/slash_command/commands_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/commands_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/slash_command/info_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/info_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/slash_command/info_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/info_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/slash_command/owner_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/owner_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/slash_command/owner_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/owner_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/slash_command/test_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/test_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/slash_command/test_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/test_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/slash_command/todo_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/todo_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/slash_command/todo_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/slash_command/todo_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/channels/update_request_post_spec.js b/e2e-tests/cypress/tests/integration/playbooks/channels/update_request_post_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/channels/update_request_post_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/channels/update_request_post_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/digest_spec.js b/e2e-tests/cypress/tests/integration/playbooks/digest_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/digest_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/digest_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/lhs_spec.js b/e2e-tests/cypress/tests/integration/playbooks/lhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/lhs_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/lhs_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/navigation_spec.js b/e2e-tests/cypress/tests/integration/playbooks/navigation_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/navigation_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/navigation_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/access_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/access_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/access_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/access_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/creation_button_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/creation_button_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/creation_button_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/creation_button_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/edit/task_actions_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/edit/task_actions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/edit/task_actions_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/edit/task_actions_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/edit_metrics_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/edit_metrics_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/edit_metrics_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/edit_metrics_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/edit_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/edit_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/edit_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/edit_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/feedback_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/feedback_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/feedback_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/feedback_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/list_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/list_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/list_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/list_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/overview_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/overview_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/overview_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/overview_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/pagination_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/pagination_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/pagination_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/pagination_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/start_run_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/start_run_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/start_run_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/start_run_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/playbooks/status_update_spec.js b/e2e-tests/cypress/tests/integration/playbooks/playbooks/status_update_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/playbooks/status_update_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/playbooks/status_update_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/list_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/list_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/list_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/list_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/permissions_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/permissions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/permissions_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/permissions_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_general_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_general_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_general_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_general_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_main_checklist_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_checklist_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_main_checklist_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_checklist_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_main_finish_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_finish_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_main_finish_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_finish_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_main_header_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_header_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_main_header_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_header_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_main_restore_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_restore_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_main_restore_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_restore_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_main_retrospective_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_retrospective_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_main_retrospective_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_retrospective_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_main_statusupdate_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_statusupdate_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_main_statusupdate_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_statusupdate_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_main_summary_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_summary_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_main_summary_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_summary_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_main_taskactions_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_taskactions_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_main_taskactions_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_main_taskactions_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_rhs_participants_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_rhs_participants_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_rhs_participants_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_rhs_participants_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_rhs_runinfo_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_rhs_runinfo_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_rhs_runinfo_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_rhs_runinfo_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_rhs_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_rhs_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_rhs_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_rhs_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/rdp_rhs_statusupdates_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/rdp_rhs_statusupdates_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/rdp_rhs_statusupdates_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/rdp_rhs_statusupdates_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/runs/taskinbox_spec.js b/e2e-tests/cypress/tests/integration/playbooks/runs/taskinbox_spec.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/runs/taskinbox_spec.js rename to e2e-tests/cypress/tests/integration/playbooks/runs/taskinbox_spec.js diff --git a/e2e/cypress/tests/integration/playbooks/tours_spec_ignore_.js b/e2e-tests/cypress/tests/integration/playbooks/tours_spec_ignore_.js similarity index 100% rename from e2e/cypress/tests/integration/playbooks/tours_spec_ignore_.js rename to e2e-tests/cypress/tests/integration/playbooks/tours_spec_ignore_.js diff --git a/e2e/cypress/tests/plugins/client_request.js b/e2e-tests/cypress/tests/plugins/client_request.js similarity index 100% rename from e2e/cypress/tests/plugins/client_request.js rename to e2e-tests/cypress/tests/plugins/client_request.js diff --git a/e2e/cypress/tests/plugins/db_request.js b/e2e-tests/cypress/tests/plugins/db_request.js similarity index 100% rename from e2e/cypress/tests/plugins/db_request.js rename to e2e-tests/cypress/tests/plugins/db_request.js diff --git a/e2e/cypress/tests/plugins/external_request.ts b/e2e-tests/cypress/tests/plugins/external_request.ts similarity index 100% rename from e2e/cypress/tests/plugins/external_request.ts rename to e2e-tests/cypress/tests/plugins/external_request.ts diff --git a/e2e/cypress/tests/plugins/file_util.js b/e2e-tests/cypress/tests/plugins/file_util.js similarity index 100% rename from e2e/cypress/tests/plugins/file_util.js rename to e2e-tests/cypress/tests/plugins/file_util.js diff --git a/e2e/cypress/tests/plugins/get_pdf_content.js b/e2e-tests/cypress/tests/plugins/get_pdf_content.js similarity index 100% rename from e2e/cypress/tests/plugins/get_pdf_content.js rename to e2e-tests/cypress/tests/plugins/get_pdf_content.js diff --git a/e2e/cypress/tests/plugins/get_recent_email.js b/e2e-tests/cypress/tests/plugins/get_recent_email.js similarity index 100% rename from e2e/cypress/tests/plugins/get_recent_email.js rename to e2e-tests/cypress/tests/plugins/get_recent_email.js diff --git a/e2e/cypress/tests/plugins/index.js b/e2e-tests/cypress/tests/plugins/index.js similarity index 100% rename from e2e/cypress/tests/plugins/index.js rename to e2e-tests/cypress/tests/plugins/index.js diff --git a/e2e/cypress/tests/plugins/keycloak_request.js b/e2e-tests/cypress/tests/plugins/keycloak_request.js similarity index 100% rename from e2e/cypress/tests/plugins/keycloak_request.js rename to e2e-tests/cypress/tests/plugins/keycloak_request.js diff --git a/e2e/cypress/tests/plugins/okta_request.js b/e2e-tests/cypress/tests/plugins/okta_request.js similarity index 100% rename from e2e/cypress/tests/plugins/okta_request.js rename to e2e-tests/cypress/tests/plugins/okta_request.js diff --git a/e2e/cypress/tests/plugins/post_bot_message.js b/e2e-tests/cypress/tests/plugins/post_bot_message.js similarity index 100% rename from e2e/cypress/tests/plugins/post_bot_message.js rename to e2e-tests/cypress/tests/plugins/post_bot_message.js diff --git a/e2e/cypress/tests/plugins/post_incoming_webhook.js b/e2e-tests/cypress/tests/plugins/post_incoming_webhook.js similarity index 100% rename from e2e/cypress/tests/plugins/post_incoming_webhook.js rename to e2e-tests/cypress/tests/plugins/post_incoming_webhook.js diff --git a/e2e/cypress/tests/plugins/post_list_of_messages.js b/e2e-tests/cypress/tests/plugins/post_list_of_messages.js similarity index 100% rename from e2e/cypress/tests/plugins/post_list_of_messages.js rename to e2e-tests/cypress/tests/plugins/post_list_of_messages.js diff --git a/e2e/cypress/tests/plugins/post_message_as.js b/e2e-tests/cypress/tests/plugins/post_message_as.js similarity index 100% rename from e2e/cypress/tests/plugins/post_message_as.js rename to e2e-tests/cypress/tests/plugins/post_message_as.js diff --git a/e2e/cypress/tests/plugins/react_to_message_as.js b/e2e-tests/cypress/tests/plugins/react_to_message_as.js similarity index 100% rename from e2e/cypress/tests/plugins/react_to_message_as.js rename to e2e-tests/cypress/tests/plugins/react_to_message_as.js diff --git a/e2e/cypress/tests/plugins/shell.js b/e2e-tests/cypress/tests/plugins/shell.js similarity index 100% rename from e2e/cypress/tests/plugins/shell.js rename to e2e-tests/cypress/tests/plugins/shell.js diff --git a/e2e/cypress/tests/plugins/url_health_check.js b/e2e-tests/cypress/tests/plugins/url_health_check.js similarity index 100% rename from e2e/cypress/tests/plugins/url_health_check.js rename to e2e-tests/cypress/tests/plugins/url_health_check.js diff --git a/e2e/cypress/tests/support/api/bots.d.ts b/e2e-tests/cypress/tests/support/api/bots.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/bots.d.ts rename to e2e-tests/cypress/tests/support/api/bots.d.ts diff --git a/e2e/cypress/tests/support/api/bots.js b/e2e-tests/cypress/tests/support/api/bots.js similarity index 100% rename from e2e/cypress/tests/support/api/bots.js rename to e2e-tests/cypress/tests/support/api/bots.js diff --git a/e2e/cypress/tests/support/api/brand.d.ts b/e2e-tests/cypress/tests/support/api/brand.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/brand.d.ts rename to e2e-tests/cypress/tests/support/api/brand.d.ts diff --git a/e2e/cypress/tests/support/api/brand.js b/e2e-tests/cypress/tests/support/api/brand.js similarity index 100% rename from e2e/cypress/tests/support/api/brand.js rename to e2e-tests/cypress/tests/support/api/brand.js diff --git a/e2e/cypress/tests/support/api/channel.d.ts b/e2e-tests/cypress/tests/support/api/channel.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/channel.d.ts rename to e2e-tests/cypress/tests/support/api/channel.d.ts diff --git a/e2e/cypress/tests/support/api/channel.js b/e2e-tests/cypress/tests/support/api/channel.js similarity index 100% rename from e2e/cypress/tests/support/api/channel.js rename to e2e-tests/cypress/tests/support/api/channel.js diff --git a/e2e/cypress/tests/support/api/cloud.d.ts b/e2e-tests/cypress/tests/support/api/cloud.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/cloud.d.ts rename to e2e-tests/cypress/tests/support/api/cloud.d.ts diff --git a/e2e/cypress/tests/support/api/cloud.js b/e2e-tests/cypress/tests/support/api/cloud.js similarity index 100% rename from e2e/cypress/tests/support/api/cloud.js rename to e2e-tests/cypress/tests/support/api/cloud.js diff --git a/e2e/cypress/tests/support/api/cloud_default_config.json b/e2e-tests/cypress/tests/support/api/cloud_default_config.json similarity index 100% rename from e2e/cypress/tests/support/api/cloud_default_config.json rename to e2e-tests/cypress/tests/support/api/cloud_default_config.json diff --git a/e2e/cypress/tests/support/api/cluster.d.ts b/e2e-tests/cypress/tests/support/api/cluster.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/cluster.d.ts rename to e2e-tests/cypress/tests/support/api/cluster.d.ts diff --git a/e2e/cypress/tests/support/api/cluster.js b/e2e-tests/cypress/tests/support/api/cluster.js similarity index 100% rename from e2e/cypress/tests/support/api/cluster.js rename to e2e-tests/cypress/tests/support/api/cluster.js diff --git a/e2e/cypress/tests/support/api/common.d.ts b/e2e-tests/cypress/tests/support/api/common.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/common.d.ts rename to e2e-tests/cypress/tests/support/api/common.d.ts diff --git a/e2e/cypress/tests/support/api/common.js b/e2e-tests/cypress/tests/support/api/common.js similarity index 100% rename from e2e/cypress/tests/support/api/common.js rename to e2e-tests/cypress/tests/support/api/common.js diff --git a/e2e/cypress/tests/support/api/data_retention.d.ts b/e2e-tests/cypress/tests/support/api/data_retention.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/data_retention.d.ts rename to e2e-tests/cypress/tests/support/api/data_retention.d.ts diff --git a/e2e/cypress/tests/support/api/data_retention.js b/e2e-tests/cypress/tests/support/api/data_retention.js similarity index 100% rename from e2e/cypress/tests/support/api/data_retention.js rename to e2e-tests/cypress/tests/support/api/data_retention.js diff --git a/e2e/cypress/tests/support/api/helpers.js b/e2e-tests/cypress/tests/support/api/helpers.js similarity index 100% rename from e2e/cypress/tests/support/api/helpers.js rename to e2e-tests/cypress/tests/support/api/helpers.js diff --git a/e2e/cypress/tests/support/api/index.js b/e2e-tests/cypress/tests/support/api/index.js similarity index 100% rename from e2e/cypress/tests/support/api/index.js rename to e2e-tests/cypress/tests/support/api/index.js diff --git a/e2e/cypress/tests/support/api/keycloak.d.ts b/e2e-tests/cypress/tests/support/api/keycloak.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/keycloak.d.ts rename to e2e-tests/cypress/tests/support/api/keycloak.d.ts diff --git a/e2e/cypress/tests/support/api/keycloak.js b/e2e-tests/cypress/tests/support/api/keycloak.js similarity index 100% rename from e2e/cypress/tests/support/api/keycloak.js rename to e2e-tests/cypress/tests/support/api/keycloak.js diff --git a/e2e/cypress/tests/support/api/keycloak_realm.json b/e2e-tests/cypress/tests/support/api/keycloak_realm.json similarity index 100% rename from e2e/cypress/tests/support/api/keycloak_realm.json rename to e2e-tests/cypress/tests/support/api/keycloak_realm.json diff --git a/e2e/cypress/tests/support/api/ldap.d.ts b/e2e-tests/cypress/tests/support/api/ldap.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/ldap.d.ts rename to e2e-tests/cypress/tests/support/api/ldap.d.ts diff --git a/e2e/cypress/tests/support/api/ldap.js b/e2e-tests/cypress/tests/support/api/ldap.js similarity index 100% rename from e2e/cypress/tests/support/api/ldap.js rename to e2e-tests/cypress/tests/support/api/ldap.js diff --git a/e2e/cypress/tests/support/api/on_prem_default_config.json b/e2e-tests/cypress/tests/support/api/on_prem_default_config.json similarity index 100% rename from e2e/cypress/tests/support/api/on_prem_default_config.json rename to e2e-tests/cypress/tests/support/api/on_prem_default_config.json diff --git a/e2e/cypress/tests/support/api/playbooks.js b/e2e-tests/cypress/tests/support/api/playbooks.js similarity index 100% rename from e2e/cypress/tests/support/api/playbooks.js rename to e2e-tests/cypress/tests/support/api/playbooks.js diff --git a/e2e/cypress/tests/support/api/plugin.d.ts b/e2e-tests/cypress/tests/support/api/plugin.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/plugin.d.ts rename to e2e-tests/cypress/tests/support/api/plugin.d.ts diff --git a/e2e/cypress/tests/support/api/plugin.js b/e2e-tests/cypress/tests/support/api/plugin.js similarity index 100% rename from e2e/cypress/tests/support/api/plugin.js rename to e2e-tests/cypress/tests/support/api/plugin.js diff --git a/e2e/cypress/tests/support/api/preference.d.ts b/e2e-tests/cypress/tests/support/api/preference.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/preference.d.ts rename to e2e-tests/cypress/tests/support/api/preference.d.ts diff --git a/e2e/cypress/tests/support/api/preference.js b/e2e-tests/cypress/tests/support/api/preference.js similarity index 100% rename from e2e/cypress/tests/support/api/preference.js rename to e2e-tests/cypress/tests/support/api/preference.js diff --git a/e2e/cypress/tests/support/api/role.d.ts b/e2e-tests/cypress/tests/support/api/role.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/role.d.ts rename to e2e-tests/cypress/tests/support/api/role.d.ts diff --git a/e2e/cypress/tests/support/api/role.js b/e2e-tests/cypress/tests/support/api/role.js similarity index 100% rename from e2e/cypress/tests/support/api/role.js rename to e2e-tests/cypress/tests/support/api/role.js diff --git a/e2e/cypress/tests/support/api/saml.d.ts b/e2e-tests/cypress/tests/support/api/saml.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/saml.d.ts rename to e2e-tests/cypress/tests/support/api/saml.d.ts diff --git a/e2e/cypress/tests/support/api/saml.js b/e2e-tests/cypress/tests/support/api/saml.js similarity index 100% rename from e2e/cypress/tests/support/api/saml.js rename to e2e-tests/cypress/tests/support/api/saml.js diff --git a/e2e/cypress/tests/support/api/scheme.d.ts b/e2e-tests/cypress/tests/support/api/scheme.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/scheme.d.ts rename to e2e-tests/cypress/tests/support/api/scheme.d.ts diff --git a/e2e/cypress/tests/support/api/scheme.js b/e2e-tests/cypress/tests/support/api/scheme.js similarity index 100% rename from e2e/cypress/tests/support/api/scheme.js rename to e2e-tests/cypress/tests/support/api/scheme.js diff --git a/e2e/cypress/tests/support/api/setup.ts b/e2e-tests/cypress/tests/support/api/setup.ts similarity index 100% rename from e2e/cypress/tests/support/api/setup.ts rename to e2e-tests/cypress/tests/support/api/setup.ts diff --git a/e2e/cypress/tests/support/api/status.d.ts b/e2e-tests/cypress/tests/support/api/status.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/status.d.ts rename to e2e-tests/cypress/tests/support/api/status.d.ts diff --git a/e2e/cypress/tests/support/api/status.js b/e2e-tests/cypress/tests/support/api/status.js similarity index 100% rename from e2e/cypress/tests/support/api/status.js rename to e2e-tests/cypress/tests/support/api/status.js diff --git a/e2e/cypress/tests/support/api/system.d.ts b/e2e-tests/cypress/tests/support/api/system.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/system.d.ts rename to e2e-tests/cypress/tests/support/api/system.d.ts diff --git a/e2e/cypress/tests/support/api/system.js b/e2e-tests/cypress/tests/support/api/system.js similarity index 100% rename from e2e/cypress/tests/support/api/system.js rename to e2e-tests/cypress/tests/support/api/system.js diff --git a/e2e/cypress/tests/support/api/team.d.ts b/e2e-tests/cypress/tests/support/api/team.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/team.d.ts rename to e2e-tests/cypress/tests/support/api/team.d.ts diff --git a/e2e/cypress/tests/support/api/team.js b/e2e-tests/cypress/tests/support/api/team.js similarity index 100% rename from e2e/cypress/tests/support/api/team.js rename to e2e-tests/cypress/tests/support/api/team.js diff --git a/e2e/cypress/tests/support/api/user.d.ts b/e2e-tests/cypress/tests/support/api/user.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/user.d.ts rename to e2e-tests/cypress/tests/support/api/user.d.ts diff --git a/e2e/cypress/tests/support/api/user.js b/e2e-tests/cypress/tests/support/api/user.js similarity index 100% rename from e2e/cypress/tests/support/api/user.js rename to e2e-tests/cypress/tests/support/api/user.js diff --git a/e2e/cypress/tests/support/api/webhooks.d.ts b/e2e-tests/cypress/tests/support/api/webhooks.d.ts similarity index 100% rename from e2e/cypress/tests/support/api/webhooks.d.ts rename to e2e-tests/cypress/tests/support/api/webhooks.d.ts diff --git a/e2e/cypress/tests/support/api/webhooks.js b/e2e-tests/cypress/tests/support/api/webhooks.js similarity index 100% rename from e2e/cypress/tests/support/api/webhooks.js rename to e2e-tests/cypress/tests/support/api/webhooks.js diff --git a/e2e/cypress/tests/support/api_commands.ts b/e2e-tests/cypress/tests/support/api_commands.ts similarity index 100% rename from e2e/cypress/tests/support/api_commands.ts rename to e2e-tests/cypress/tests/support/api_commands.ts diff --git a/e2e/cypress/tests/support/assertions.js b/e2e-tests/cypress/tests/support/assertions.js similarity index 100% rename from e2e/cypress/tests/support/assertions.js rename to e2e-tests/cypress/tests/support/assertions.js diff --git a/e2e/cypress/tests/support/client-impl.js b/e2e-tests/cypress/tests/support/client-impl.js similarity index 100% rename from e2e/cypress/tests/support/client-impl.js rename to e2e-tests/cypress/tests/support/client-impl.js diff --git a/e2e/cypress/tests/support/client.d.ts b/e2e-tests/cypress/tests/support/client.d.ts similarity index 100% rename from e2e/cypress/tests/support/client.d.ts rename to e2e-tests/cypress/tests/support/client.d.ts diff --git a/e2e/cypress/tests/support/client.js b/e2e-tests/cypress/tests/support/client.js similarity index 100% rename from e2e/cypress/tests/support/client.js rename to e2e-tests/cypress/tests/support/client.js diff --git a/e2e/cypress/tests/support/common_login_commands.d.ts b/e2e-tests/cypress/tests/support/common_login_commands.d.ts similarity index 100% rename from e2e/cypress/tests/support/common_login_commands.d.ts rename to e2e-tests/cypress/tests/support/common_login_commands.d.ts diff --git a/e2e/cypress/tests/support/common_login_commands.js b/e2e-tests/cypress/tests/support/common_login_commands.js similarity index 100% rename from e2e/cypress/tests/support/common_login_commands.js rename to e2e-tests/cypress/tests/support/common_login_commands.js diff --git a/e2e/cypress/tests/support/constants.js b/e2e-tests/cypress/tests/support/constants.js similarity index 100% rename from e2e/cypress/tests/support/constants.js rename to e2e-tests/cypress/tests/support/constants.js diff --git a/e2e/cypress/tests/support/db_commands.ts b/e2e-tests/cypress/tests/support/db_commands.ts similarity index 100% rename from e2e/cypress/tests/support/db_commands.ts rename to e2e-tests/cypress/tests/support/db_commands.ts diff --git a/e2e/cypress/tests/support/email.ts b/e2e-tests/cypress/tests/support/email.ts similarity index 100% rename from e2e/cypress/tests/support/email.ts rename to e2e-tests/cypress/tests/support/email.ts diff --git a/e2e/cypress/tests/support/env.ts b/e2e-tests/cypress/tests/support/env.ts similarity index 100% rename from e2e/cypress/tests/support/env.ts rename to e2e-tests/cypress/tests/support/env.ts diff --git a/e2e/cypress/tests/support/extended_commands.d.ts b/e2e-tests/cypress/tests/support/extended_commands.d.ts similarity index 100% rename from e2e/cypress/tests/support/extended_commands.d.ts rename to e2e-tests/cypress/tests/support/extended_commands.d.ts diff --git a/e2e/cypress/tests/support/extended_commands.js b/e2e-tests/cypress/tests/support/extended_commands.js similarity index 100% rename from e2e/cypress/tests/support/extended_commands.js rename to e2e-tests/cypress/tests/support/extended_commands.js diff --git a/e2e/cypress/tests/support/external_commands.d.ts b/e2e-tests/cypress/tests/support/external_commands.d.ts similarity index 100% rename from e2e/cypress/tests/support/external_commands.d.ts rename to e2e-tests/cypress/tests/support/external_commands.d.ts diff --git a/e2e/cypress/tests/support/external_commands.js b/e2e-tests/cypress/tests/support/external_commands.js similarity index 100% rename from e2e/cypress/tests/support/external_commands.js rename to e2e-tests/cypress/tests/support/external_commands.js diff --git a/e2e/cypress/tests/support/fetch_commands.js b/e2e-tests/cypress/tests/support/fetch_commands.js similarity index 100% rename from e2e/cypress/tests/support/fetch_commands.js rename to e2e-tests/cypress/tests/support/fetch_commands.js diff --git a/e2e/cypress/tests/support/index.d.ts b/e2e-tests/cypress/tests/support/index.d.ts similarity index 100% rename from e2e/cypress/tests/support/index.d.ts rename to e2e-tests/cypress/tests/support/index.d.ts diff --git a/e2e/cypress/tests/support/index.js b/e2e-tests/cypress/tests/support/index.js similarity index 100% rename from e2e/cypress/tests/support/index.js rename to e2e-tests/cypress/tests/support/index.js diff --git a/e2e/cypress/tests/support/keycloak_commands.d.ts b/e2e-tests/cypress/tests/support/keycloak_commands.d.ts similarity index 100% rename from e2e/cypress/tests/support/keycloak_commands.d.ts rename to e2e-tests/cypress/tests/support/keycloak_commands.d.ts diff --git a/e2e/cypress/tests/support/keycloak_commands.js b/e2e-tests/cypress/tests/support/keycloak_commands.js similarity index 100% rename from e2e/cypress/tests/support/keycloak_commands.js rename to e2e-tests/cypress/tests/support/keycloak_commands.js diff --git a/e2e/cypress/tests/support/ldap_commands.d.ts b/e2e-tests/cypress/tests/support/ldap_commands.d.ts similarity index 100% rename from e2e/cypress/tests/support/ldap_commands.d.ts rename to e2e-tests/cypress/tests/support/ldap_commands.d.ts diff --git a/e2e/cypress/tests/support/ldap_commands.js b/e2e-tests/cypress/tests/support/ldap_commands.js similarity index 100% rename from e2e/cypress/tests/support/ldap_commands.js rename to e2e-tests/cypress/tests/support/ldap_commands.js diff --git a/e2e/cypress/tests/support/ldap_server_commands.d.ts b/e2e-tests/cypress/tests/support/ldap_server_commands.d.ts similarity index 100% rename from e2e/cypress/tests/support/ldap_server_commands.d.ts rename to e2e-tests/cypress/tests/support/ldap_server_commands.d.ts diff --git a/e2e/cypress/tests/support/ldap_server_commands.js b/e2e-tests/cypress/tests/support/ldap_server_commands.js similarity index 100% rename from e2e/cypress/tests/support/ldap_server_commands.js rename to e2e-tests/cypress/tests/support/ldap_server_commands.js diff --git a/e2e/cypress/tests/support/notification.ts b/e2e-tests/cypress/tests/support/notification.ts similarity index 100% rename from e2e/cypress/tests/support/notification.ts rename to e2e-tests/cypress/tests/support/notification.ts diff --git a/e2e/cypress/tests/support/okta_commands.js b/e2e-tests/cypress/tests/support/okta_commands.js similarity index 100% rename from e2e/cypress/tests/support/okta_commands.js rename to e2e-tests/cypress/tests/support/okta_commands.js diff --git a/e2e/cypress/tests/support/saml_commands.js b/e2e-tests/cypress/tests/support/saml_commands.js similarity index 100% rename from e2e/cypress/tests/support/saml_commands.js rename to e2e-tests/cypress/tests/support/saml_commands.js diff --git a/e2e/cypress/tests/support/shell.d.ts b/e2e-tests/cypress/tests/support/shell.d.ts similarity index 100% rename from e2e/cypress/tests/support/shell.d.ts rename to e2e-tests/cypress/tests/support/shell.d.ts diff --git a/e2e/cypress/tests/support/shell.js b/e2e-tests/cypress/tests/support/shell.js similarity index 100% rename from e2e/cypress/tests/support/shell.js rename to e2e-tests/cypress/tests/support/shell.js diff --git a/e2e/cypress/tests/support/task_commands.ts b/e2e-tests/cypress/tests/support/task_commands.ts similarity index 100% rename from e2e/cypress/tests/support/task_commands.ts rename to e2e-tests/cypress/tests/support/task_commands.ts diff --git a/e2e/cypress/tests/support/ui/account_settings_modal.d.ts b/e2e-tests/cypress/tests/support/ui/account_settings_modal.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/account_settings_modal.d.ts rename to e2e-tests/cypress/tests/support/ui/account_settings_modal.d.ts diff --git a/e2e/cypress/tests/support/ui/account_settings_modal.js b/e2e-tests/cypress/tests/support/ui/account_settings_modal.js similarity index 100% rename from e2e/cypress/tests/support/ui/account_settings_modal.js rename to e2e-tests/cypress/tests/support/ui/account_settings_modal.js diff --git a/e2e/cypress/tests/support/ui/announcement_bar.d.ts b/e2e-tests/cypress/tests/support/ui/announcement_bar.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/announcement_bar.d.ts rename to e2e-tests/cypress/tests/support/ui/announcement_bar.d.ts diff --git a/e2e/cypress/tests/support/ui/announcement_bar.js b/e2e-tests/cypress/tests/support/ui/announcement_bar.js similarity index 100% rename from e2e/cypress/tests/support/ui/announcement_bar.js rename to e2e-tests/cypress/tests/support/ui/announcement_bar.js diff --git a/e2e/cypress/tests/support/ui/boards.d.ts b/e2e-tests/cypress/tests/support/ui/boards.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/boards.d.ts rename to e2e-tests/cypress/tests/support/ui/boards.d.ts diff --git a/e2e/cypress/tests/support/ui/boards.js b/e2e-tests/cypress/tests/support/ui/boards.js similarity index 100% rename from e2e/cypress/tests/support/ui/boards.js rename to e2e-tests/cypress/tests/support/ui/boards.js diff --git a/e2e/cypress/tests/support/ui/channel.d.ts b/e2e-tests/cypress/tests/support/ui/channel.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/channel.d.ts rename to e2e-tests/cypress/tests/support/ui/channel.d.ts diff --git a/e2e/cypress/tests/support/ui/channel.js b/e2e-tests/cypress/tests/support/ui/channel.js similarity index 100% rename from e2e/cypress/tests/support/ui/channel.js rename to e2e-tests/cypress/tests/support/ui/channel.js diff --git a/e2e/cypress/tests/support/ui/channel_header.d.ts b/e2e-tests/cypress/tests/support/ui/channel_header.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/channel_header.d.ts rename to e2e-tests/cypress/tests/support/ui/channel_header.d.ts diff --git a/e2e/cypress/tests/support/ui/channel_header.js b/e2e-tests/cypress/tests/support/ui/channel_header.js similarity index 100% rename from e2e/cypress/tests/support/ui/channel_header.js rename to e2e-tests/cypress/tests/support/ui/channel_header.js diff --git a/e2e/cypress/tests/support/ui/channel_sidebar.js b/e2e-tests/cypress/tests/support/ui/channel_sidebar.js similarity index 100% rename from e2e/cypress/tests/support/ui/channel_sidebar.js rename to e2e-tests/cypress/tests/support/ui/channel_sidebar.js diff --git a/e2e/cypress/tests/support/ui/cloud_billing.d.ts b/e2e-tests/cypress/tests/support/ui/cloud_billing.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/cloud_billing.d.ts rename to e2e-tests/cypress/tests/support/ui/cloud_billing.d.ts diff --git a/e2e/cypress/tests/support/ui/cloud_billing.js b/e2e-tests/cypress/tests/support/ui/cloud_billing.js similarity index 100% rename from e2e/cypress/tests/support/ui/cloud_billing.js rename to e2e-tests/cypress/tests/support/ui/cloud_billing.js diff --git a/e2e/cypress/tests/support/ui/common.d.ts b/e2e-tests/cypress/tests/support/ui/common.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/common.d.ts rename to e2e-tests/cypress/tests/support/ui/common.d.ts diff --git a/e2e/cypress/tests/support/ui/common.js b/e2e-tests/cypress/tests/support/ui/common.js similarity index 100% rename from e2e/cypress/tests/support/ui/common.js rename to e2e-tests/cypress/tests/support/ui/common.js diff --git a/e2e/cypress/tests/support/ui/compliance_export.d.ts b/e2e-tests/cypress/tests/support/ui/compliance_export.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/compliance_export.d.ts rename to e2e-tests/cypress/tests/support/ui/compliance_export.d.ts diff --git a/e2e/cypress/tests/support/ui/compliance_export.js b/e2e-tests/cypress/tests/support/ui/compliance_export.js similarity index 100% rename from e2e/cypress/tests/support/ui/compliance_export.js rename to e2e-tests/cypress/tests/support/ui/compliance_export.js diff --git a/e2e/cypress/tests/support/ui/data_retention.d.ts b/e2e-tests/cypress/tests/support/ui/data_retention.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/data_retention.d.ts rename to e2e-tests/cypress/tests/support/ui/data_retention.d.ts diff --git a/e2e/cypress/tests/support/ui/data_retention.js b/e2e-tests/cypress/tests/support/ui/data_retention.js similarity index 100% rename from e2e/cypress/tests/support/ui/data_retention.js rename to e2e-tests/cypress/tests/support/ui/data_retention.js diff --git a/e2e/cypress/tests/support/ui/emoji.ts b/e2e-tests/cypress/tests/support/ui/emoji.ts similarity index 100% rename from e2e/cypress/tests/support/ui/emoji.ts rename to e2e-tests/cypress/tests/support/ui/emoji.ts diff --git a/e2e/cypress/tests/support/ui/extend_testing_library.d.ts b/e2e-tests/cypress/tests/support/ui/extend_testing_library.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/extend_testing_library.d.ts rename to e2e-tests/cypress/tests/support/ui/extend_testing_library.d.ts diff --git a/e2e/cypress/tests/support/ui/extend_testing_library.js b/e2e-tests/cypress/tests/support/ui/extend_testing_library.js similarity index 100% rename from e2e/cypress/tests/support/ui/extend_testing_library.js rename to e2e-tests/cypress/tests/support/ui/extend_testing_library.js diff --git a/e2e/cypress/tests/support/ui/file_preview.d.ts b/e2e-tests/cypress/tests/support/ui/file_preview.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/file_preview.d.ts rename to e2e-tests/cypress/tests/support/ui/file_preview.d.ts diff --git a/e2e/cypress/tests/support/ui/file_preview.js b/e2e-tests/cypress/tests/support/ui/file_preview.js similarity index 100% rename from e2e/cypress/tests/support/ui/file_preview.js rename to e2e-tests/cypress/tests/support/ui/file_preview.js diff --git a/e2e/cypress/tests/support/ui/global_header.d.ts b/e2e-tests/cypress/tests/support/ui/global_header.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/global_header.d.ts rename to e2e-tests/cypress/tests/support/ui/global_header.d.ts diff --git a/e2e/cypress/tests/support/ui/global_header.js b/e2e-tests/cypress/tests/support/ui/global_header.js similarity index 100% rename from e2e/cypress/tests/support/ui/global_header.js rename to e2e-tests/cypress/tests/support/ui/global_header.js diff --git a/e2e/cypress/tests/support/ui/index.js b/e2e-tests/cypress/tests/support/ui/index.js similarity index 100% rename from e2e/cypress/tests/support/ui/index.js rename to e2e-tests/cypress/tests/support/ui/index.js diff --git a/e2e/cypress/tests/support/ui/login.d.ts b/e2e-tests/cypress/tests/support/ui/login.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/login.d.ts rename to e2e-tests/cypress/tests/support/ui/login.d.ts diff --git a/e2e/cypress/tests/support/ui/login.js b/e2e-tests/cypress/tests/support/ui/login.js similarity index 100% rename from e2e/cypress/tests/support/ui/login.js rename to e2e-tests/cypress/tests/support/ui/login.js diff --git a/e2e/cypress/tests/support/ui/menu.d.ts b/e2e-tests/cypress/tests/support/ui/menu.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/menu.d.ts rename to e2e-tests/cypress/tests/support/ui/menu.d.ts diff --git a/e2e/cypress/tests/support/ui/menu.js b/e2e-tests/cypress/tests/support/ui/menu.js similarity index 100% rename from e2e/cypress/tests/support/ui/menu.js rename to e2e-tests/cypress/tests/support/ui/menu.js diff --git a/e2e/cypress/tests/support/ui/mfa.d.ts b/e2e-tests/cypress/tests/support/ui/mfa.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/mfa.d.ts rename to e2e-tests/cypress/tests/support/ui/mfa.d.ts diff --git a/e2e/cypress/tests/support/ui/mfa.js b/e2e-tests/cypress/tests/support/ui/mfa.js similarity index 100% rename from e2e/cypress/tests/support/ui/mfa.js rename to e2e-tests/cypress/tests/support/ui/mfa.js diff --git a/e2e/cypress/tests/support/ui/modal.d.ts b/e2e-tests/cypress/tests/support/ui/modal.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/modal.d.ts rename to e2e-tests/cypress/tests/support/ui/modal.d.ts diff --git a/e2e/cypress/tests/support/ui/modal.js b/e2e-tests/cypress/tests/support/ui/modal.js similarity index 100% rename from e2e/cypress/tests/support/ui/modal.js rename to e2e-tests/cypress/tests/support/ui/modal.js diff --git a/e2e/cypress/tests/support/ui/playbooks.js b/e2e-tests/cypress/tests/support/ui/playbooks.js similarity index 100% rename from e2e/cypress/tests/support/ui/playbooks.js rename to e2e-tests/cypress/tests/support/ui/playbooks.js diff --git a/e2e/cypress/tests/support/ui/post.ts b/e2e-tests/cypress/tests/support/ui/post.ts similarity index 100% rename from e2e/cypress/tests/support/ui/post.ts rename to e2e-tests/cypress/tests/support/ui/post.ts diff --git a/e2e/cypress/tests/support/ui/post_dropdown_menu.d.ts b/e2e-tests/cypress/tests/support/ui/post_dropdown_menu.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/post_dropdown_menu.d.ts rename to e2e-tests/cypress/tests/support/ui/post_dropdown_menu.d.ts diff --git a/e2e/cypress/tests/support/ui/post_dropdown_menu.js b/e2e-tests/cypress/tests/support/ui/post_dropdown_menu.js similarity index 100% rename from e2e/cypress/tests/support/ui/post_dropdown_menu.js rename to e2e-tests/cypress/tests/support/ui/post_dropdown_menu.js diff --git a/e2e/cypress/tests/support/ui/search.js b/e2e-tests/cypress/tests/support/ui/search.js similarity index 100% rename from e2e/cypress/tests/support/ui/search.js rename to e2e-tests/cypress/tests/support/ui/search.js diff --git a/e2e/cypress/tests/support/ui/sidebar_left.ts b/e2e-tests/cypress/tests/support/ui/sidebar_left.ts similarity index 100% rename from e2e/cypress/tests/support/ui/sidebar_left.ts rename to e2e-tests/cypress/tests/support/ui/sidebar_left.ts diff --git a/e2e/cypress/tests/support/ui/sidebar_right.d.ts b/e2e-tests/cypress/tests/support/ui/sidebar_right.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/sidebar_right.d.ts rename to e2e-tests/cypress/tests/support/ui/sidebar_right.d.ts diff --git a/e2e/cypress/tests/support/ui/sidebar_right.js b/e2e-tests/cypress/tests/support/ui/sidebar_right.js similarity index 100% rename from e2e/cypress/tests/support/ui/sidebar_right.js rename to e2e-tests/cypress/tests/support/ui/sidebar_right.js diff --git a/e2e/cypress/tests/support/ui/suggestion_list.d.ts b/e2e-tests/cypress/tests/support/ui/suggestion_list.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/suggestion_list.d.ts rename to e2e-tests/cypress/tests/support/ui/suggestion_list.d.ts diff --git a/e2e/cypress/tests/support/ui/suggestion_list.js b/e2e-tests/cypress/tests/support/ui/suggestion_list.js similarity index 100% rename from e2e/cypress/tests/support/ui/suggestion_list.js rename to e2e-tests/cypress/tests/support/ui/suggestion_list.js diff --git a/e2e/cypress/tests/support/ui/system.d.ts b/e2e-tests/cypress/tests/support/ui/system.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/system.d.ts rename to e2e-tests/cypress/tests/support/ui/system.d.ts diff --git a/e2e/cypress/tests/support/ui/system.js b/e2e-tests/cypress/tests/support/ui/system.js similarity index 100% rename from e2e/cypress/tests/support/ui/system.js rename to e2e-tests/cypress/tests/support/ui/system.js diff --git a/e2e/cypress/tests/support/ui/team.js b/e2e-tests/cypress/tests/support/ui/team.js similarity index 100% rename from e2e/cypress/tests/support/ui/team.js rename to e2e-tests/cypress/tests/support/ui/team.js diff --git a/e2e/cypress/tests/support/ui/tooltip.d.ts b/e2e-tests/cypress/tests/support/ui/tooltip.d.ts similarity index 100% rename from e2e/cypress/tests/support/ui/tooltip.d.ts rename to e2e-tests/cypress/tests/support/ui/tooltip.d.ts diff --git a/e2e/cypress/tests/support/ui/tooltip.js b/e2e-tests/cypress/tests/support/ui/tooltip.js similarity index 100% rename from e2e/cypress/tests/support/ui/tooltip.js rename to e2e-tests/cypress/tests/support/ui/tooltip.js diff --git a/e2e/cypress/tests/support/ui_commands.ts b/e2e-tests/cypress/tests/support/ui_commands.ts similarity index 100% rename from e2e/cypress/tests/support/ui_commands.ts rename to e2e-tests/cypress/tests/support/ui_commands.ts diff --git a/e2e/cypress/tests/support/win.d.ts b/e2e-tests/cypress/tests/support/win.d.ts similarity index 100% rename from e2e/cypress/tests/support/win.d.ts rename to e2e-tests/cypress/tests/support/win.d.ts diff --git a/e2e/cypress/tests/types/index.ts b/e2e-tests/cypress/tests/types/index.ts similarity index 100% rename from e2e/cypress/tests/types/index.ts rename to e2e-tests/cypress/tests/types/index.ts diff --git a/e2e/cypress/tests/utils/admin_console.js b/e2e-tests/cypress/tests/utils/admin_console.js similarity index 100% rename from e2e/cypress/tests/utils/admin_console.js rename to e2e-tests/cypress/tests/utils/admin_console.js diff --git a/e2e/cypress/tests/utils/benchmark.js b/e2e-tests/cypress/tests/utils/benchmark.js similarity index 100% rename from e2e/cypress/tests/utils/benchmark.js rename to e2e-tests/cypress/tests/utils/benchmark.js diff --git a/e2e/cypress/tests/utils/config.js b/e2e-tests/cypress/tests/utils/config.js similarity index 100% rename from e2e/cypress/tests/utils/config.js rename to e2e-tests/cypress/tests/utils/config.js diff --git a/e2e/cypress/tests/utils/constants.js b/e2e-tests/cypress/tests/utils/constants.js similarity index 100% rename from e2e/cypress/tests/utils/constants.js rename to e2e-tests/cypress/tests/utils/constants.js diff --git a/e2e/cypress/tests/utils/email.js b/e2e-tests/cypress/tests/utils/email.js similarity index 100% rename from e2e/cypress/tests/utils/email.js rename to e2e-tests/cypress/tests/utils/email.js diff --git a/e2e/cypress/tests/utils/file.js b/e2e-tests/cypress/tests/utils/file.js similarity index 100% rename from e2e/cypress/tests/utils/file.js rename to e2e-tests/cypress/tests/utils/file.js diff --git a/e2e/cypress/tests/utils/index.js b/e2e-tests/cypress/tests/utils/index.js similarity index 100% rename from e2e/cypress/tests/utils/index.js rename to e2e-tests/cypress/tests/utils/index.js diff --git a/e2e/cypress/tests/utils/plugins.js b/e2e-tests/cypress/tests/utils/plugins.js similarity index 100% rename from e2e/cypress/tests/utils/plugins.js rename to e2e-tests/cypress/tests/utils/plugins.js diff --git a/e2e/cypress/tests/utils/timezone.js b/e2e-tests/cypress/tests/utils/timezone.js similarity index 100% rename from e2e/cypress/tests/utils/timezone.js rename to e2e-tests/cypress/tests/utils/timezone.js diff --git a/e2e/cypress/tsconfig.json b/e2e-tests/cypress/tsconfig.json similarity index 100% rename from e2e/cypress/tsconfig.json rename to e2e-tests/cypress/tsconfig.json diff --git a/e2e/cypress/utils/artifacts.js b/e2e-tests/cypress/utils/artifacts.js similarity index 100% rename from e2e/cypress/utils/artifacts.js rename to e2e-tests/cypress/utils/artifacts.js diff --git a/e2e/cypress/utils/constants.js b/e2e-tests/cypress/utils/constants.js similarity index 100% rename from e2e/cypress/utils/constants.js rename to e2e-tests/cypress/utils/constants.js diff --git a/e2e/cypress/utils/dashboard.js b/e2e-tests/cypress/utils/dashboard.js similarity index 100% rename from e2e/cypress/utils/dashboard.js rename to e2e-tests/cypress/utils/dashboard.js diff --git a/e2e/cypress/utils/even_distribution.js b/e2e-tests/cypress/utils/even_distribution.js similarity index 100% rename from e2e/cypress/utils/even_distribution.js rename to e2e-tests/cypress/utils/even_distribution.js diff --git a/e2e/cypress/utils/even_distribution.test.js b/e2e-tests/cypress/utils/even_distribution.test.js similarity index 100% rename from e2e/cypress/utils/even_distribution.test.js rename to e2e-tests/cypress/utils/even_distribution.test.js diff --git a/e2e/cypress/utils/file.js b/e2e-tests/cypress/utils/file.js similarity index 100% rename from e2e/cypress/utils/file.js rename to e2e-tests/cypress/utils/file.js diff --git a/e2e/cypress/utils/report.js b/e2e-tests/cypress/utils/report.js similarity index 100% rename from e2e/cypress/utils/report.js rename to e2e-tests/cypress/utils/report.js diff --git a/e2e/cypress/utils/test_cases.js b/e2e-tests/cypress/utils/test_cases.js similarity index 100% rename from e2e/cypress/utils/test_cases.js rename to e2e-tests/cypress/utils/test_cases.js diff --git a/e2e/cypress/utils/webhook_utils.js b/e2e-tests/cypress/utils/webhook_utils.js similarity index 100% rename from e2e/cypress/utils/webhook_utils.js rename to e2e-tests/cypress/utils/webhook_utils.js diff --git a/e2e/cypress/webhook_serve.js b/e2e-tests/cypress/webhook_serve.js similarity index 100% rename from e2e/cypress/webhook_serve.js rename to e2e-tests/cypress/webhook_serve.js diff --git a/e2e/playwright/.eslintignore b/e2e-tests/playwright/.eslintignore similarity index 100% rename from e2e/playwright/.eslintignore rename to e2e-tests/playwright/.eslintignore diff --git a/e2e/playwright/.eslintrc.json b/e2e-tests/playwright/.eslintrc.json similarity index 100% rename from e2e/playwright/.eslintrc.json rename to e2e-tests/playwright/.eslintrc.json diff --git a/e2e/playwright/.percy.yml b/e2e-tests/playwright/.percy.yml similarity index 100% rename from e2e/playwright/.percy.yml rename to e2e-tests/playwright/.percy.yml diff --git a/e2e/playwright/.prettierignore b/e2e-tests/playwright/.prettierignore similarity index 100% rename from e2e/playwright/.prettierignore rename to e2e-tests/playwright/.prettierignore diff --git a/e2e/playwright/.prettierrc.json b/e2e-tests/playwright/.prettierrc.json similarity index 100% rename from e2e/playwright/.prettierrc.json rename to e2e-tests/playwright/.prettierrc.json diff --git a/e2e/playwright/README.md b/e2e-tests/playwright/README.md similarity index 100% rename from e2e/playwright/README.md rename to e2e-tests/playwright/README.md diff --git a/e2e/playwright/global_setup.ts b/e2e-tests/playwright/global_setup.ts similarity index 100% rename from e2e/playwright/global_setup.ts rename to e2e-tests/playwright/global_setup.ts diff --git a/e2e/playwright/package-lock.json b/e2e-tests/playwright/package-lock.json similarity index 100% rename from e2e/playwright/package-lock.json rename to e2e-tests/playwright/package-lock.json diff --git a/e2e/playwright/package.json b/e2e-tests/playwright/package.json similarity index 100% rename from e2e/playwright/package.json rename to e2e-tests/playwright/package.json diff --git a/e2e/playwright/playwright.config.ts b/e2e-tests/playwright/playwright.config.ts similarity index 100% rename from e2e/playwright/playwright.config.ts rename to e2e-tests/playwright/playwright.config.ts diff --git a/e2e/playwright/sample.env b/e2e-tests/playwright/sample.env similarity index 100% rename from e2e/playwright/sample.env rename to e2e-tests/playwright/sample.env diff --git a/e2e/playwright/support/asset/mattermost-icon_128x128.png b/e2e-tests/playwright/support/asset/mattermost-icon_128x128.png similarity index 100% rename from e2e/playwright/support/asset/mattermost-icon_128x128.png rename to e2e-tests/playwright/support/asset/mattermost-icon_128x128.png diff --git a/e2e/playwright/support/browser_context.ts b/e2e-tests/playwright/support/browser_context.ts similarity index 100% rename from e2e/playwright/support/browser_context.ts rename to e2e-tests/playwright/support/browser_context.ts diff --git a/e2e/playwright/support/constant.ts b/e2e-tests/playwright/support/constant.ts similarity index 100% rename from e2e/playwright/support/constant.ts rename to e2e-tests/playwright/support/constant.ts diff --git a/e2e/playwright/support/flag.ts b/e2e-tests/playwright/support/flag.ts similarity index 100% rename from e2e/playwright/support/flag.ts rename to e2e-tests/playwright/support/flag.ts diff --git a/e2e/playwright/support/server/channel.ts b/e2e-tests/playwright/support/server/channel.ts similarity index 100% rename from e2e/playwright/support/server/channel.ts rename to e2e-tests/playwright/support/server/channel.ts diff --git a/e2e/playwright/support/server/client.ts b/e2e-tests/playwright/support/server/client.ts similarity index 100% rename from e2e/playwright/support/server/client.ts rename to e2e-tests/playwright/support/server/client.ts diff --git a/e2e/playwright/support/server/default_config.ts b/e2e-tests/playwright/support/server/default_config.ts similarity index 100% rename from e2e/playwright/support/server/default_config.ts rename to e2e-tests/playwright/support/server/default_config.ts diff --git a/e2e/playwright/support/server/index.ts b/e2e-tests/playwright/support/server/index.ts similarity index 100% rename from e2e/playwright/support/server/index.ts rename to e2e-tests/playwright/support/server/index.ts diff --git a/e2e/playwright/support/server/init.ts b/e2e-tests/playwright/support/server/init.ts similarity index 100% rename from e2e/playwright/support/server/init.ts rename to e2e-tests/playwright/support/server/init.ts diff --git a/e2e/playwright/support/server/team.ts b/e2e-tests/playwright/support/server/team.ts similarity index 100% rename from e2e/playwright/support/server/team.ts rename to e2e-tests/playwright/support/server/team.ts diff --git a/e2e/playwright/support/server/user.ts b/e2e-tests/playwright/support/server/user.ts similarity index 100% rename from e2e/playwright/support/server/user.ts rename to e2e-tests/playwright/support/server/user.ts diff --git a/e2e/playwright/support/test_action.ts b/e2e-tests/playwright/support/test_action.ts similarity index 100% rename from e2e/playwright/support/test_action.ts rename to e2e-tests/playwright/support/test_action.ts diff --git a/e2e/playwright/support/test_fixture.ts b/e2e-tests/playwright/support/test_fixture.ts similarity index 100% rename from e2e/playwright/support/test_fixture.ts rename to e2e-tests/playwright/support/test_fixture.ts diff --git a/e2e/playwright/support/ui/components/boards/create_modal.ts b/e2e-tests/playwright/support/ui/components/boards/create_modal.ts similarity index 100% rename from e2e/playwright/support/ui/components/boards/create_modal.ts rename to e2e-tests/playwright/support/ui/components/boards/create_modal.ts diff --git a/e2e/playwright/support/ui/components/boards/sidebar.ts b/e2e-tests/playwright/support/ui/components/boards/sidebar.ts similarity index 100% rename from e2e/playwright/support/ui/components/boards/sidebar.ts rename to e2e-tests/playwright/support/ui/components/boards/sidebar.ts diff --git a/e2e/playwright/support/ui/components/channels/app_bar.ts b/e2e-tests/playwright/support/ui/components/channels/app_bar.ts similarity index 100% rename from e2e/playwright/support/ui/components/channels/app_bar.ts rename to e2e-tests/playwright/support/ui/components/channels/app_bar.ts diff --git a/e2e/playwright/support/ui/components/channels/header.ts b/e2e-tests/playwright/support/ui/components/channels/header.ts similarity index 100% rename from e2e/playwright/support/ui/components/channels/header.ts rename to e2e-tests/playwright/support/ui/components/channels/header.ts diff --git a/e2e/playwright/support/ui/components/channels/post.ts b/e2e-tests/playwright/support/ui/components/channels/post.ts similarity index 100% rename from e2e/playwright/support/ui/components/channels/post.ts rename to e2e-tests/playwright/support/ui/components/channels/post.ts diff --git a/e2e/playwright/support/ui/components/channels/post_create.ts b/e2e-tests/playwright/support/ui/components/channels/post_create.ts similarity index 100% rename from e2e/playwright/support/ui/components/channels/post_create.ts rename to e2e-tests/playwright/support/ui/components/channels/post_create.ts diff --git a/e2e/playwright/support/ui/components/channels/sidebar_right.ts b/e2e-tests/playwright/support/ui/components/channels/sidebar_right.ts similarity index 100% rename from e2e/playwright/support/ui/components/channels/sidebar_right.ts rename to e2e-tests/playwright/support/ui/components/channels/sidebar_right.ts diff --git a/e2e/playwright/support/ui/components/global_header.ts b/e2e-tests/playwright/support/ui/components/global_header.ts similarity index 100% rename from e2e/playwright/support/ui/components/global_header.ts rename to e2e-tests/playwright/support/ui/components/global_header.ts diff --git a/e2e/playwright/support/ui/components/index.ts b/e2e-tests/playwright/support/ui/components/index.ts similarity index 100% rename from e2e/playwright/support/ui/components/index.ts rename to e2e-tests/playwright/support/ui/components/index.ts diff --git a/e2e/playwright/support/ui/pages/boards_create.ts b/e2e-tests/playwright/support/ui/pages/boards_create.ts similarity index 100% rename from e2e/playwright/support/ui/pages/boards_create.ts rename to e2e-tests/playwright/support/ui/pages/boards_create.ts diff --git a/e2e/playwright/support/ui/pages/boards_view.ts b/e2e-tests/playwright/support/ui/pages/boards_view.ts similarity index 100% rename from e2e/playwright/support/ui/pages/boards_view.ts rename to e2e-tests/playwright/support/ui/pages/boards_view.ts diff --git a/e2e/playwright/support/ui/pages/channels.ts b/e2e-tests/playwright/support/ui/pages/channels.ts similarity index 100% rename from e2e/playwright/support/ui/pages/channels.ts rename to e2e-tests/playwright/support/ui/pages/channels.ts diff --git a/e2e/playwright/support/ui/pages/index.ts b/e2e-tests/playwright/support/ui/pages/index.ts similarity index 100% rename from e2e/playwright/support/ui/pages/index.ts rename to e2e-tests/playwright/support/ui/pages/index.ts diff --git a/e2e/playwright/support/ui/pages/landing_login.ts b/e2e-tests/playwright/support/ui/pages/landing_login.ts similarity index 100% rename from e2e/playwright/support/ui/pages/landing_login.ts rename to e2e-tests/playwright/support/ui/pages/landing_login.ts diff --git a/e2e/playwright/support/ui/pages/login.ts b/e2e-tests/playwright/support/ui/pages/login.ts similarity index 100% rename from e2e/playwright/support/ui/pages/login.ts rename to e2e-tests/playwright/support/ui/pages/login.ts diff --git a/e2e/playwright/support/ui/pages/signup.ts b/e2e-tests/playwright/support/ui/pages/signup.ts similarity index 100% rename from e2e/playwright/support/ui/pages/signup.ts rename to e2e-tests/playwright/support/ui/pages/signup.ts diff --git a/e2e/playwright/support/util.ts b/e2e-tests/playwright/support/util.ts similarity index 100% rename from e2e/playwright/support/util.ts rename to e2e-tests/playwright/support/util.ts diff --git a/e2e/playwright/support/visual/index.ts b/e2e-tests/playwright/support/visual/index.ts similarity index 100% rename from e2e/playwright/support/visual/index.ts rename to e2e-tests/playwright/support/visual/index.ts diff --git a/e2e/playwright/support/visual/percy.ts b/e2e-tests/playwright/support/visual/percy.ts similarity index 100% rename from e2e/playwright/support/visual/percy.ts rename to e2e-tests/playwright/support/visual/percy.ts diff --git a/e2e/playwright/test.config.ts b/e2e-tests/playwright/test.config.ts similarity index 100% rename from e2e/playwright/test.config.ts rename to e2e-tests/playwright/test.config.ts diff --git a/e2e/playwright/tests/functional/boards/board-creation-and-set-up/create_empty_board.spec.ts b/e2e-tests/playwright/tests/functional/boards/board-creation-and-set-up/create_empty_board.spec.ts similarity index 100% rename from e2e/playwright/tests/functional/boards/board-creation-and-set-up/create_empty_board.spec.ts rename to e2e-tests/playwright/tests/functional/boards/board-creation-and-set-up/create_empty_board.spec.ts diff --git a/e2e/playwright/tests/visual/boards/board_template.spec.ts b/e2e-tests/playwright/tests/visual/boards/board_template.spec.ts similarity index 100% rename from e2e/playwright/tests/visual/boards/board_template.spec.ts rename to e2e-tests/playwright/tests/visual/boards/board_template.spec.ts diff --git a/e2e/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-chrome-linux.png b/e2e-tests/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-chrome-linux.png similarity index 100% rename from e2e/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-chrome-linux.png rename to e2e-tests/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-chrome-linux.png diff --git a/e2e/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-firefox-linux.png b/e2e-tests/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-firefox-linux.png similarity index 100% rename from e2e/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-firefox-linux.png rename to e2e-tests/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-firefox-linux.png diff --git a/e2e/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-ipad-linux.png b/e2e-tests/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-ipad-linux.png similarity index 100% rename from e2e/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-ipad-linux.png rename to e2e-tests/playwright/tests/visual/boards/board_template.spec.ts-snapshots/board-template-ipad-linux.png diff --git a/e2e/playwright/tests/visual/boards/view_untitled_board.spec.ts b/e2e-tests/playwright/tests/visual/boards/view_untitled_board.spec.ts similarity index 100% rename from e2e/playwright/tests/visual/boards/view_untitled_board.spec.ts rename to e2e-tests/playwright/tests/visual/boards/view_untitled_board.spec.ts diff --git a/e2e/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-chrome-linux.png b/e2e-tests/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-chrome-linux.png similarity index 100% rename from e2e/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-chrome-linux.png rename to e2e-tests/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-chrome-linux.png diff --git a/e2e/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-firefox-linux.png b/e2e-tests/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-firefox-linux.png similarity index 100% rename from e2e/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-firefox-linux.png rename to e2e-tests/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-firefox-linux.png diff --git a/e2e/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-ipad-linux.png b/e2e-tests/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-ipad-linux.png similarity index 100% rename from e2e/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-ipad-linux.png rename to e2e-tests/playwright/tests/visual/boards/view_untitled_board.spec.ts-snapshots/view-untitled-board-ipad-linux.png diff --git a/e2e/playwright/tests/visual/channels/intro_channel.spec.ts b/e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts similarity index 100% rename from e2e/playwright/tests/visual/channels/intro_channel.spec.ts rename to e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts diff --git a/e2e/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-chrome-linux.png b/e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-chrome-linux.png similarity index 100% rename from e2e/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-chrome-linux.png rename to e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-chrome-linux.png diff --git a/e2e/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-firefox-linux.png b/e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-firefox-linux.png similarity index 100% rename from e2e/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-firefox-linux.png rename to e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-firefox-linux.png diff --git a/e2e/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-ipad-linux.png b/e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-ipad-linux.png similarity index 100% rename from e2e/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-ipad-linux.png rename to e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-ipad-linux.png diff --git a/e2e/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-iphone-linux.png b/e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-iphone-linux.png similarity index 100% rename from e2e/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-iphone-linux.png rename to e2e-tests/playwright/tests/visual/channels/intro_channel.spec.ts-snapshots/intro-to-channel-as-regular-user-iphone-linux.png diff --git a/e2e/playwright/tests/visual/common/landing_page.spec.ts b/e2e-tests/playwright/tests/visual/common/landing_page.spec.ts similarity index 100% rename from e2e/playwright/tests/visual/common/landing_page.spec.ts rename to e2e-tests/playwright/tests/visual/common/landing_page.spec.ts diff --git a/e2e/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-chrome-linux.png b/e2e-tests/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-chrome-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-chrome-linux.png rename to e2e-tests/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-chrome-linux.png diff --git a/e2e/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-firefox-linux.png b/e2e-tests/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-firefox-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-firefox-linux.png rename to e2e-tests/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-firefox-linux.png diff --git a/e2e/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-ipad-linux.png b/e2e-tests/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-ipad-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-ipad-linux.png rename to e2e-tests/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-ipad-linux.png diff --git a/e2e/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-iphone-linux.png b/e2e-tests/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-iphone-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-iphone-linux.png rename to e2e-tests/playwright/tests/visual/common/landing_page.spec.ts-snapshots/landing-login-iphone-linux.png diff --git a/e2e/playwright/tests/visual/common/login.spec.ts b/e2e-tests/playwright/tests/visual/common/login.spec.ts similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts rename to e2e-tests/playwright/tests/visual/common/login.spec.ts diff --git a/e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-chrome-linux.png b/e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-chrome-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-chrome-linux.png rename to e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-chrome-linux.png diff --git a/e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-chrome-linux.png b/e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-chrome-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-chrome-linux.png rename to e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-chrome-linux.png diff --git a/e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-firefox-linux.png b/e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-firefox-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-firefox-linux.png rename to e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-firefox-linux.png diff --git a/e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-ipad-linux.png b/e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-ipad-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-ipad-linux.png rename to e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-ipad-linux.png diff --git a/e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-iphone-linux.png b/e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-iphone-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-iphone-linux.png rename to e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-error-iphone-linux.png diff --git a/e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-firefox-linux.png b/e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-firefox-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-firefox-linux.png rename to e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-firefox-linux.png diff --git a/e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-ipad-linux.png b/e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-ipad-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-ipad-linux.png rename to e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-ipad-linux.png diff --git a/e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-iphone-linux.png b/e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-iphone-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/login.spec.ts-snapshots/login-iphone-linux.png rename to e2e-tests/playwright/tests/visual/common/login.spec.ts-snapshots/login-iphone-linux.png diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-chrome-linux.png b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-chrome-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-chrome-linux.png rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-chrome-linux.png diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-chrome-linux.png b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-chrome-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-chrome-linux.png rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-chrome-linux.png diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-firefox-linux.png b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-firefox-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-firefox-linux.png rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-firefox-linux.png diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-ipad-linux.png b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-ipad-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-ipad-linux.png rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-ipad-linux.png diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-iphone-linux.png b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-iphone-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-iphone-linux.png rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-error-iphone-linux.png diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-firefox-linux.png b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-firefox-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-firefox-linux.png rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-firefox-linux.png diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-ipad-linux.png b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-ipad-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-ipad-linux.png rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-ipad-linux.png diff --git a/e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-iphone-linux.png b/e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-iphone-linux.png similarity index 100% rename from e2e/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-iphone-linux.png rename to e2e-tests/playwright/tests/visual/common/signup_email.spec.ts-snapshots/signup-email-iphone-linux.png diff --git a/e2e/playwright/tsconfig.json b/e2e-tests/playwright/tsconfig.json similarity index 100% rename from e2e/playwright/tsconfig.json rename to e2e-tests/playwright/tsconfig.json From b7be613ed7602beaede859d9f895f65542a7688f Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Tue, 28 Mar 2023 21:45:36 +0530 Subject: [PATCH 10/11] MM-51744: Ignore http.ErrServerClosed from Playbooks metricsServer (#22708) https://mattermost.atlassian.net/browse/MM-51744 ```release-note NONE ``` --- server/playbooks/product/playbooks_product.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/playbooks/product/playbooks_product.go b/server/playbooks/product/playbooks_product.go index 77360db7cd..8f2f98dcdf 100644 --- a/server/playbooks/product/playbooks_product.go +++ b/server/playbooks/product/playbooks_product.go @@ -582,7 +582,7 @@ func (pp *playbooksProduct) runMetricsServer() { // Run server to expose metrics go func() { err := pp.metricsServer.Run() - if err != nil { + if err != nil && !errors.Is(err, http.ErrServerClosed) { logrus.WithError(err).Error("Metrics server could not be started") } }() From bb939e28c9b7c8b0ca131b6a11a410f7711ad26a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Andr=C3=A9s=20V=C3=A9lez=20Vidal?= Date: Tue, 28 Mar 2023 18:57:09 +0200 Subject: [PATCH 11/11] MM-49869 - add channels button lhs sidebar (#22701) --- .../src/actions/views/add_channel_dropdown.ts | 7 + .../add_channels_cta_button.test.tsx.snap | 46 ++++++ .../invite_members_button.test.tsx.snap | 2 +- .../sidebar/add_channel_dropdown.tsx | 14 +- .../sidebar/add_channels_cta_button.test.tsx | 148 +++++++++++++++++ .../sidebar/add_channels_cta_button.tsx | 155 ++++++++++++++++++ .../sidebar/invite_members_button.tsx | 6 +- .../sidebar_category/sidebar_category.tsx | 10 ++ webapp/channels/src/i18n/en.json | 3 + .../views/add_channel_cta_dropdown.ts | 21 +++ webapp/channels/src/reducers/views/index.ts | 2 + .../src/sass/layout/_sidebar-left.scss | 79 ++++++--- .../selectors/views/add_channel_dropdown.ts | 4 + webapp/channels/src/types/store/views.ts | 4 + webapp/channels/src/utils/constants.tsx | 2 + 15 files changed, 464 insertions(+), 39 deletions(-) create mode 100644 webapp/channels/src/components/sidebar/__snapshots__/add_channels_cta_button.test.tsx.snap create mode 100644 webapp/channels/src/components/sidebar/add_channels_cta_button.test.tsx create mode 100644 webapp/channels/src/components/sidebar/add_channels_cta_button.tsx create mode 100644 webapp/channels/src/reducers/views/add_channel_cta_dropdown.ts diff --git a/webapp/channels/src/actions/views/add_channel_dropdown.ts b/webapp/channels/src/actions/views/add_channel_dropdown.ts index 55bef92f84..251d2acf5e 100644 --- a/webapp/channels/src/actions/views/add_channel_dropdown.ts +++ b/webapp/channels/src/actions/views/add_channel_dropdown.ts @@ -9,3 +9,10 @@ export function setAddChannelDropdown(open: boolean) { open, }; } + +export function setAddChannelCtaDropdown(open: boolean) { + return { + type: ActionTypes.ADD_CHANNEL_CTA_DROPDOWN_TOGGLE, + open, + }; +} diff --git a/webapp/channels/src/components/sidebar/__snapshots__/add_channels_cta_button.test.tsx.snap b/webapp/channels/src/components/sidebar/__snapshots__/add_channels_cta_button.test.tsx.snap new file mode 100644 index 0000000000..6b9383a1d6 --- /dev/null +++ b/webapp/channels/src/components/sidebar/__snapshots__/add_channels_cta_button.test.tsx.snap @@ -0,0 +1,46 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`components/new_channel_modal should match snapshot 1`] = ` + + + + + + + + + +`; diff --git a/webapp/channels/src/components/sidebar/__snapshots__/invite_members_button.test.tsx.snap b/webapp/channels/src/components/sidebar/__snapshots__/invite_members_button.test.tsx.snap index 16252a1eb0..809f40e20d 100644 --- a/webapp/channels/src/components/sidebar/__snapshots__/invite_members_button.test.tsx.snap +++ b/webapp/channels/src/components/sidebar/__snapshots__/invite_members_button.test.tsx.snap @@ -82,7 +82,7 @@ exports[`components/sidebar/invite_members_button should match snapshot 1`] = ` >
  • - <> - - + { + const original = jest.requireActual('actions/telemetry_actions.jsx'); + return { + ...original, + trackEvent: jest.fn(), + }; +}); + +const mockDispatch = jest.fn(); +let mockState: GlobalState; + +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux') as typeof import('react-redux'), + useSelector: (selector: (state: typeof mockState) => unknown) => selector(mockState), + useDispatch: () => mockDispatch, +})); + +describe('components/new_channel_modal', () => { + beforeEach(() => { + mockState = { + entities: { + general: { + config: {}, + }, + channels: { + currentChannelId: 'current_channel_id', + channels: {}, + roles: { + current_channel_id: [ + 'channel_user', + 'channel_admin', + ], + }, + }, + teams: { + currentTeamId: 'current_team_id', + myMembers: { + current_team_id: { + roles: 'team_user team_admin', + }, + }, + teams: { + current_team_id: { + id: 'current_team_id', + description: 'Curent team description', + name: 'current-team', + }, + }, + }, + preferences: { + myPreferences: {}, + }, + users: { + currentUserId: 'current_user_id', + profiles: { + current_user_id: {roles: 'system_user'}, + }, + }, + roles: { + roles: { + guest_user: { + permissions: [], + }, + system_user: { + permissions: [Permissions.JOIN_PUBLIC_CHANNELS, Permissions.CREATE_PRIVATE_CHANNEL, Permissions.CREATE_PUBLIC_CHANNEL], + }, + }, + }, + }, + views: { + addChannelCtaDropdown: { + isOpen: false, + }, + }, + } as unknown as GlobalState; + }); + + test('should match snapshot', () => { + expect( + shallow( + , + ), + ).toMatchSnapshot(); + }); + + test('should find the add channels button when user has permissions', () => { + const wrapper = mountWithIntl( + , + ); + expect(wrapper.find('.AddChannelsCtaDropdown').exists()).toBeTruthy(); + }); + + test('should return nothing when user does not have permissions', () => { + const guestUser = { + currentUserId: 'guest_user_id', + profiles: { + user_id: { + id: 'guest_user_id', + roles: 'team_role', + }, + }, + } as unknown as UsersState; + mockState = {...mockState, entities: {...mockState.entities, users: guestUser}}; + + const wrapper = mountWithIntl( + , + ); + expect(wrapper.find('.AddChannelsCtaDropdown').exists()).toBeFalsy(); + }); + + test('should fire dispatch to save preferences when button is clicked', () => { + const wrapper = mountWithIntl( + , + ); + const button = wrapper.find('.AddChannelsCtaDropdown button'); + expect(mockDispatch).not.toHaveBeenCalled(); + button.simulate('click'); + expect(mockDispatch).toHaveBeenCalled(); + }); + + test('should fire trackEvent to send telemetry when button is clicked', () => { + const wrapper = mountWithIntl( + , + ); + + const button = wrapper.find('.AddChannelsCtaDropdown button'); + expect(mockDispatch).not.toHaveBeenCalled(); + button.simulate('click'); + + expect(trackEvent).toHaveBeenCalledWith('ui', 'add_channels_cta_button_clicked'); + }); +}); diff --git a/webapp/channels/src/components/sidebar/add_channels_cta_button.tsx b/webapp/channels/src/components/sidebar/add_channels_cta_button.tsx new file mode 100644 index 0000000000..07ed64b9e5 --- /dev/null +++ b/webapp/channels/src/components/sidebar/add_channels_cta_button.tsx @@ -0,0 +1,155 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React, {useCallback} from 'react'; + +import {useIntl} from 'react-intl'; + +import {useSelector, useDispatch} from 'react-redux'; + +import MenuWrapper from 'components/widgets/menu/menu_wrapper'; +import Menu from 'components/widgets/menu/menu'; +import MoreChannels from 'components/more_channels'; +import NewChannelModal from 'components/new_channel_modal/new_channel_modal'; + +import {isAddChannelCtaDropdownOpen} from 'selectors/views/add_channel_dropdown'; + +import {GlobalState} from 'types/store'; + +import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams'; +import {haveICurrentChannelPermission} from 'mattermost-redux/selectors/entities/roles'; +import {DispatchFunc} from 'mattermost-redux/types/actions'; +import Permissions from 'mattermost-redux/constants/permissions'; +import {getBool} from 'mattermost-redux/selectors/entities/preferences'; +import {savePreferences} from 'mattermost-redux/actions/preferences'; +import {getCurrentUserId} from 'mattermost-redux/selectors/entities/common'; + +import {setAddChannelCtaDropdown} from 'actions/views/add_channel_dropdown'; +import {openModal} from 'actions/views/modals'; +import {trackEvent} from 'actions/telemetry_actions'; + +import {ModalIdentifiers, Preferences, Touched} from 'utils/constants'; + +const AddChannelsCtaButton = (): JSX.Element | null => { + const dispatch = useDispatch(); + const currentTeamId = useSelector(getCurrentTeamId); + const intl = useIntl(); + const touchedAddChannelsCtaButton = useSelector((state: GlobalState) => getBool(state, Preferences.TOUCHED, Touched.ADD_CHANNELS_CTA)); + + const canCreatePublicChannel = useSelector((state: GlobalState) => haveICurrentChannelPermission(state, Permissions.CREATE_PUBLIC_CHANNEL)); + const canCreatePrivateChannel = useSelector((state: GlobalState) => haveICurrentChannelPermission(state, Permissions.CREATE_PRIVATE_CHANNEL)); + const canCreateChannel = canCreatePrivateChannel || canCreatePublicChannel; + const canJoinPublicChannel = useSelector((state: GlobalState) => haveICurrentChannelPermission(state, Permissions.JOIN_PUBLIC_CHANNELS)); + const isAddChannelCtaOpen = useSelector(isAddChannelCtaDropdownOpen); + const currentUserId = useSelector(getCurrentUserId); + const openAddChannelsCtaOpen = useCallback((open: boolean) => { + dispatch(setAddChannelCtaDropdown(open)); + }, []); + + let buttonClass = 'SidebarChannelNavigator__addChannelsCtaLhsButton'; + + if (!touchedAddChannelsCtaButton) { + buttonClass += ' SidebarChannelNavigator__addChannelsCtaLhsButton--untouched'; + } + + if ((!canCreateChannel && !canJoinPublicChannel) || !currentTeamId) { + return null; + } + + const showMoreChannelsModal = () => { + dispatch(openModal({ + modalId: ModalIdentifiers.MORE_CHANNELS, + dialogType: MoreChannels, + dialogProps: {morePublicChannelsModalType: 'public'}, + })); + trackEvent('ui', 'browse_channels_button_is_clicked'); + }; + + const showNewChannelModal = () => { + dispatch(openModal({ + modalId: ModalIdentifiers.NEW_CHANNEL_MODAL, + dialogType: NewChannelModal, + })); + trackEvent('ui', 'create_new_channel_button_is_clicked'); + }; + + const renderDropdownItems = () => { + let joinPublicChannel; + if (canJoinPublicChannel) { + joinPublicChannel = ( + + ); + } + + let createChannel; + if (canCreateChannel) { + createChannel = ( + + ); + } + + return ( + <> + + {createChannel} + {joinPublicChannel} + + + ); + }; + + const trackOpen = (opened: boolean) => { + openAddChannelsCtaOpen(opened); + trackEvent('ui', 'add_channels_cta_button_clicked'); + if (!touchedAddChannelsCtaButton) { + dispatch(savePreferences( + currentUserId, + [{ + category: Preferences.TOUCHED, + user_id: currentUserId, + name: Touched.ADD_CHANNELS_CTA, + value: 'true', + }], + )); + } + }; + + return ( + + + + {renderDropdownItems()} + + + ); +}; + +export default AddChannelsCtaButton; diff --git a/webapp/channels/src/components/sidebar/invite_members_button.tsx b/webapp/channels/src/components/sidebar/invite_members_button.tsx index 0ff3799858..0f3f602d5f 100644 --- a/webapp/channels/src/components/sidebar/invite_members_button.tsx +++ b/webapp/channels/src/components/sidebar/invite_members_button.tsx @@ -32,7 +32,7 @@ type Props = { isAdmin: boolean; } -const InviteMembersButton: React.FC = (props: Props): JSX.Element | null => { +const InviteMembersButton = (props: Props): JSX.Element | null => { const dispatch = useDispatch(); const intl = useIntl(); @@ -50,10 +50,10 @@ const InviteMembersButton: React.FC = (props: Props): JSX.Element | null props.onClick(); }; - let buttonClass = 'SidebarChannelNavigator_inviteMembersLhsButton'; + let buttonClass = 'SidebarChannelNavigator__inviteMembersLhsButton'; if (!props.touchedInviteMembersButton && Number(totalUserCount) <= Constants.USER_LIMIT) { - buttonClass += ' SidebarChannelNavigator_inviteMembersLhsButton--untouched'; + buttonClass += ' SidebarChannelNavigator__inviteMembersLhsButton--untouched'; } if (!currentTeamId || !totalUserCount) { diff --git a/webapp/channels/src/components/sidebar/sidebar_category/sidebar_category.tsx b/webapp/channels/src/components/sidebar/sidebar_category/sidebar_category.tsx index fe33dd7da6..c770a146f6 100644 --- a/webapp/channels/src/components/sidebar/sidebar_category/sidebar_category.tsx +++ b/webapp/channels/src/components/sidebar/sidebar_category/sidebar_category.tsx @@ -24,6 +24,8 @@ import KeyboardShortcutSequence, { KEYBOARD_SHORTCUTS, } from 'components/keyboard_shortcuts/keyboard_shortcuts_sequence'; +import AddChannelsCtaButton from '../add_channels_cta_button'; + import SidebarCategorySortingMenu from './sidebar_category_sorting_menu'; import SidebarCategoryMenu from './sidebar_category_menu'; @@ -342,6 +344,13 @@ export default class SidebarCategory extends React.PureComponent { ); } + let addChannelsCtaButton = null; + if (category.type === 'channels' && !category.collapsed) { + addChannelsCtaButton = ( + + ); + } + return (
    { }} {inviteMembersButton} + {addChannelsCtaButton}
    ); }} diff --git a/webapp/channels/src/i18n/en.json b/webapp/channels/src/i18n/en.json index 2b69918b75..b7458e403a 100644 --- a/webapp/channels/src/i18n/en.json +++ b/webapp/channels/src/i18n/en.json @@ -4854,6 +4854,7 @@ "shortcuts.team_nav.prev.mac": "Previous team:\t⌘|⌥|Up", "shortcuts.team_nav.switcher": "Navigate to a specific team:\tCtrl|Alt|[1-9]", "shortcuts.team_nav.switcher.mac": "Navigate to a specific team:\t⌘|⌥|[1-9]", + "sidebar_left.add_channel_cta_dropdown.dropdownAriaLabel": "Add Channel Dropdown", "sidebar_left.add_channel_dropdown.browseChannels": "Browse Channels", "sidebar_left.add_channel_dropdown.browseOrCreateChannels": "Browse or create channels", "sidebar_left.add_channel_dropdown.createCategory": "Create New Category", @@ -4863,6 +4864,7 @@ "sidebar_left.add_channel_dropdown.invitePeopleExtraText": "Add people to the team", "sidebar_left.add_channel_dropdown.work_template": "Create from a template", "sidebar_left.add_channel_dropdown.work_template_extra": "Set up a channel with linked boards, and playbooks", + "sidebar_left.addChannelsCta": "Add channels", "sidebar_left.channel_filter.filterByUnread": "Filter by unread", "sidebar_left.channel_filter.filterUnreadAria": "unreads filter", "sidebar_left.channel_filter.showAllChannels": "Show all channels", @@ -4901,6 +4903,7 @@ "sidebar_left.sidebar_channel_menu.unfavoriteChannel": "Unfavorite", "sidebar_left.sidebar_channel_menu.unmuteChannel": "Unmute Channel", "sidebar_left.sidebar_channel_menu.unmuteConversation": "Unmute Conversation", + "sidebar_left.sidebar_channel_navigator.addChannelsCta": "Add channels", "sidebar_left.sidebar_channel_navigator.inviteUsers": "Invite Users", "sidebar_left.sidebar_channel.selectedCount": "{count} selected", "sidebar_right_menu.console": "System Console", diff --git a/webapp/channels/src/reducers/views/add_channel_cta_dropdown.ts b/webapp/channels/src/reducers/views/add_channel_cta_dropdown.ts new file mode 100644 index 0000000000..c468169bac --- /dev/null +++ b/webapp/channels/src/reducers/views/add_channel_cta_dropdown.ts @@ -0,0 +1,21 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {combineReducers} from 'redux'; + +import {GenericAction} from 'mattermost-redux/types/actions'; + +import {ActionTypes} from 'utils/constants'; + +export function isOpen(state = false, action: GenericAction) { + switch (action.type) { + case ActionTypes.ADD_CHANNEL_CTA_DROPDOWN_TOGGLE: + return action.open; + default: + return state; + } +} + +export default combineReducers({ + isOpen, +}); diff --git a/webapp/channels/src/reducers/views/index.ts b/webapp/channels/src/reducers/views/index.ts index 2f574e32ba..6d305e40d8 100644 --- a/webapp/channels/src/reducers/views/index.ts +++ b/webapp/channels/src/reducers/views/index.ts @@ -25,6 +25,7 @@ import productMenu from './product_menu'; import textbox from './textbox'; import statusDropdown from './status_dropdown'; import addChannelDropdown from './add_channel_dropdown'; +import addChannelCtaDropdown from './add_channel_cta_dropdown'; import threads from './threads'; import onboardingTasks from './onboarding_tasks'; @@ -50,6 +51,7 @@ export default combineReducers({ channelSidebar, statusDropdown, addChannelDropdown, + addChannelCtaDropdown, onboardingTasks, threads, productMenu, diff --git a/webapp/channels/src/sass/layout/_sidebar-left.scss b/webapp/channels/src/sass/layout/_sidebar-left.scss index 8baf4ac923..c670182893 100644 --- a/webapp/channels/src/sass/layout/_sidebar-left.scss +++ b/webapp/channels/src/sass/layout/_sidebar-left.scss @@ -178,6 +178,46 @@ $sidebarOpacityAnimationDuration: 0.15s; } } + &__inviteMembersLhsButton, + &__addChannelsCtaLhsButton { + display: flex; + padding: 6px 0; + margin-left: 15px; + color: rgba(var(--sidebar-text-rgb), 0.72); + line-height: 20px; + list-style: none; + + i { + font-size: 20px; + } + + span { + align-self: flex-end; + margin-top: -2px; + margin-left: 5px; + } + + &--untouched { + color: var(--sidebar-unread-text); + font-weight: $font-weight--semibold; + + i::before { + font-weight: $font-weight--semibold; + } + } + } + + &__addChannelsCtaLhsButton { + border: none; + margin-left: 0; + background: none; + + li { + display: flex; + margin-left: 15px; + } + } + .AddChannelDropdown_dropdownButton, .SidebarChannelNavigator_inviteUsers, .SidebarChannelNavigator_jumpToButton, @@ -700,35 +740,12 @@ $sidebarOpacityAnimationDuration: 0.15s; } } - .SidebarChannelNavigator_inviteMembersLhsButton { - display: flex; - padding: 6px 0; - margin-left: 15px; - color: rgba(var(--sidebar-text-rgb), 0.72); - line-height: 20px; - list-style: none; - - i { - font-size: 20px; - } - - span { - align-self: flex-end; - margin-top: -2px; - margin-left: 5px; - } - - &--untouched { - color: var(--sidebar-unread-text); - font-weight: $font-weight--semibold; - - i::before { - font-weight: $font-weight--semibold; - } - } + .AddChannelsCtaDropdown .dropdown-menu { + margin-left: 20px; } - #introTextInvite { + #introTextInvite, + #addChannelsCta { display: flex; width: 100%; @@ -737,6 +754,14 @@ $sidebarOpacityAnimationDuration: 0.15s; } } + #AddChannelCtaDropdown { + position: fixed; + + ul { + min-width: 232px !important; + } + } + .SidebarChannelNavigator_inviteUsersSticky { position: absolute; z-index: 2; diff --git a/webapp/channels/src/selectors/views/add_channel_dropdown.ts b/webapp/channels/src/selectors/views/add_channel_dropdown.ts index a106cb8602..84f41d9e9c 100644 --- a/webapp/channels/src/selectors/views/add_channel_dropdown.ts +++ b/webapp/channels/src/selectors/views/add_channel_dropdown.ts @@ -6,3 +6,7 @@ import {GlobalState} from 'types/store'; export function isAddChannelDropdownOpen(state: GlobalState) { return state.views.addChannelDropdown.isOpen; } + +export function isAddChannelCtaDropdownOpen(state: GlobalState) { + return state.views.addChannelCtaDropdown.isOpen; +} diff --git a/webapp/channels/src/types/store/views.ts b/webapp/channels/src/types/store/views.ts index 5e67a97ddd..19f34b7744 100644 --- a/webapp/channels/src/types/store/views.ts +++ b/webapp/channels/src/types/store/views.ts @@ -180,6 +180,10 @@ export type ViewsState = { isOpen: boolean; }; + addChannelCtaDropdown: { + isOpen: boolean; + }; + onboardingTasks: { isShowOnboardingTaskCompletion: boolean; isShowOnboardingCompleteProfileTour: boolean; diff --git a/webapp/channels/src/utils/constants.tsx b/webapp/channels/src/utils/constants.tsx index 5a5825ec5a..ad18170d15 100644 --- a/webapp/channels/src/utils/constants.tsx +++ b/webapp/channels/src/utils/constants.tsx @@ -163,6 +163,7 @@ export const Preferences = { // For one off things that have a special, attention-grabbing UI until you interact with them export const Touched = { INVITE_MEMBERS: 'invite_members', + ADD_CHANNELS_CTA: 'add_channels_cta', }; // Category for actions/interactions that will happen just once @@ -264,6 +265,7 @@ export const ActionTypes = keyMirror({ STATUS_DROPDOWN_TOGGLE: null, ADD_CHANNEL_DROPDOWN_TOGGLE: null, + ADD_CHANNEL_CTA_DROPDOWN_TOGGLE: null, SHOW_ONBOARDING_TASK_COMPLETION: null, SHOW_ONBOARDING_COMPLETE_PROFILE_TOUR: null,