Compare commits

..

29 Commits

Author SHA1 Message Date
565c19ca64 Test file release.
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2023-03-09 22:19:15 +01:00
b4acbef5f5 Prevent duplicate checkout.
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-09 11:39:21 +01:00
0a766bfb65 Revert "Directory node_modules permission."
Some checks failed
continuous-integration/drone/push Build is failing
This reverts commit b7cc411c3b.

Permission fix step.
2023-03-09 11:17:32 +01:00
b7cc411c3b Directory node_modules permission.
Some checks failed
continuous-integration/drone/push Build is failing
2023-03-09 11:04:03 +01:00
04b35959a3 FIX yml syntax
Some checks failed
continuous-integration/drone/push Build is failing
2023-03-09 10:41:43 +01:00
e639e69d46 First build try.
Some checks failed
continuous-integration/drone/push Build encountered an error
2023-03-09 10:40:46 +01:00
Elisabeth Kulzer
07aa748cd7 Detox: Android fix MM-T4728_2 - should match elements on channel list… (#7156)
* Detox: Android fix MM-T4728_1 - should match elements on channel list screen

* Address comments

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2023-03-07 21:26:33 +01:00
Daniel Espino García
01b5fc0f9e Bump app build number to 461 (#7192) 2023-03-07 20:28:41 +01:00
Daniel Espino García
9b932c401a Performance fixes and fix manual sort (#7190)
* Performance fixes and fix manual sort

* Fix test

* Use combineLatestWith

* Revert unread on top
2023-03-07 19:24:40 +01:00
Daniel Espino García
5ccf45622d Fix race condition when the same websocket gets initialized twice (#7185)
* Fix race condition when the same websocket gets initialized twice

* Bump network library
2023-03-07 19:11:28 +01:00
Weblate
279b601b2a Added translation using Weblate (Arabic) 2023-03-07 10:57:36 +02:00
Tom De Moor
049e763204 Deleted translation using Weblate (Arabic) 2023-03-07 10:57:36 +02:00
Weblate
d6e7889afc Added translation using Weblate (Arabic) 2023-03-07 10:57:36 +02:00
MArtin Johnson
46df588a6a Translated using Weblate (Swedish)
Currently translated at 99.9% (1007 of 1008 strings)

Translation: mattermost-languages-shipped/mattermost-mobile-v2
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-mobile-v2/sv/
2023-03-07 10:57:36 +02:00
Konstantin
a92574cdf3 Translated using Weblate (Russian)
Currently translated at 100.0% (1008 of 1008 strings)

Translation: mattermost-languages-shipped/mattermost-mobile-v2
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-mobile-v2/ru/
2023-03-07 10:57:36 +02:00
mini-bomba
fdd0bed294 Translated using Weblate (Polish)
Currently translated at 100.0% (1008 of 1008 strings)

Translation: mattermost-languages-shipped/mattermost-mobile-v2
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-mobile-v2/pl/
2023-03-07 10:57:36 +02:00
Elisabeth Kulzer
72c5271598 Detox: Fix ios connect issue. (#7187)
Co-authored-by: Mattermost Build <build@mattermost.com>
2023-03-07 09:00:39 +01:00
Elisabeth Kulzer
6454a19a37 Detox: Android - fix invite ppl. (#7162)
* Detox: Android - fix invite ppl.

* Remove config modifications.

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2023-03-03 19:04:19 +01:00
Pantelis Vratsalis
71805ed79d Bump app build number to 460 2023-03-03 17:37:48 +02:00
Elias Nahum
fe916ec740 Refactor category channels to react to setting changes and apply the correct order (#7170)
* Refactor category channels to react to setting changes and apply the correct order

* feedback review
2023-03-03 15:53:29 +02:00
Elias Nahum
3c046ae39c Fix push notification token registration race/missing (#7183) 2023-03-03 12:14:08 +02:00
Elias Nahum
a804a7331f support WS connection over TLS1.3 (#7182)
* support WS connection over TLS1.3

* fix updateDraftMessage on unmount
2023-03-03 11:33:01 +02:00
Elias Nahum
903aaf62b5 Fix display name when open own DM (#7181) 2023-03-02 16:57:49 +02:00
Elias Nahum
ef4fb9c8e0 fix entry for tablets (#7179) 2023-03-02 16:52:54 +02:00
Elias Nahum
af07f511f7 use sourceScreen instead of location in post options (#7176) 2023-03-02 12:46:18 +02:00
Elias Nahum
abd388986f trigger Search when hardware keyboard enter key is pressed (#7174) 2023-03-01 14:38:23 +02:00
Elias Nahum
0938045b7d Fix potential reaction crash (#7172) 2023-03-01 13:24:11 +02:00
Elias Nahum
9347e736e5 ignore leading and trailing spaces when editing profile (#7173) 2023-03-01 13:22:35 +02:00
Elias Nahum
276bcba956 Fix iOS push notification when set as generic message with sender name (#7171) 2023-03-01 12:59:07 +02:00
17 changed files with 124 additions and 406 deletions

29
.drone.yml Normal file
View File

@@ -0,0 +1,29 @@
kind: pipeline
name: default
steps:
- name: permissions
image: alpine/git
commands:
- chmod -R 777 .
#- name: build
# image: cimg/android:2022.09.2-node
# environment:
# CIRCLECI: true
# NODE_OPTIONS: --max_old_space_size=12000
# NODE_ENV: production
# BABEL_ENV: production
# MATTERMOST_RELEASE_STORE_FILE: /root/mattermost.keystore
# MATTERMOST_RELEASE_KEY_ALIAS: mattermost-google-key
# MATTERMOST_RELEASE_PASSWORD: 123456
# commands:
# - 'npm run build:android'
- name: gitea_release
image: plugins/gitea-release
settings:
api_key:
from_secret: repo_pass
base_url: https://git.ivasoft.cz/SW/mattermost-mobile
files: package.json

View File

@@ -110,7 +110,7 @@ android {
applicationId "com.mattermost.rnbeta"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 459
versionCode 461
versionName "2.1.0"
testBuildType System.getProperty('testBuildType', 'debug')
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'

1
assets/base/i18n/ar.json Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -321,7 +321,7 @@
"post_body.check_for_out_of_channel_groups_mentions.message": "nie zostali powiadomieni poprzez tą wzmiankę, ponieważ nie są na kanale. Nie można ich dodać do kanału, ponieważ nie są członkami grup połączonych. Aby dodać je do tego kanału, muszą zostać dodane do połączonych grup.",
"post_body.check_for_out_of_channel_mentions.link.and": " i ",
"post_body.check_for_out_of_channel_mentions.link.private": "dodaj je do tego prywatnego kanału",
"post_body.check_for_out_of_channel_mentions.link.public": "dodaj je do kanału",
"post_body.check_for_out_of_channel_mentions.link.public": "dodać ich do kanału",
"post_body.check_for_out_of_channel_mentions.message_last": "? Będą mieć dostęp do całej historii wiadomości.",
"post_body.check_for_out_of_channel_mentions.message.multiple": "zostały wspomniane, ale nie są w kanale. Czy chciałbyś ",
"post_body.check_for_out_of_channel_mentions.message.one": "został wspomniany, ale nie ma go w kanale. Czy chciałbyś ",

View File

@@ -433,7 +433,7 @@
"mobile.create_direct_message.you": "@{username} - вы",
"mobile.create_direct_message.start": "Начать разговор",
"mobile.create_channel.title": "Новый канал",
"mobile.components.select_server_view.msg_description": "Сервер - это коммуникационный узел вашей команды, доступ к которому осуществляется через уникальный URL-адрес",
"mobile.components.select_server_view.msg_description": "Сервер - это коммуникационный узел вашей команды, доступ к которому осуществляется по уникальному URL-адресу",
"mobile.components.select_server_view.msg_connect": "Давайте подключимся к серверу",
"mobile.components.select_server_view.displayName": "Отображаемое имя",
"mobile.components.select_server_view.displayHelp": "Выберите отображаемое имя для вашего сервера",
@@ -992,5 +992,19 @@
"mobile.calls_recording_start_no_permissions": "У вас нет прав для начала записи. Пожалуйста, попросите ведущего звонка начать запись.",
"mobile.calls_recording_start_in_progress": "Запись уже ведется.",
"mobile.calls_host_rec_error_title": "Что-то пошло не так с записью",
"mobile.calls_host_rec_error": "Пожалуйста, попробуйте записать еще раз. Вы также можете обратиться к системному администратору за помощью в устранении неполадок."
"mobile.calls_host_rec_error": "Пожалуйста, попробуйте записать еще раз. Вы также можете обратиться к системному администратору за помощью в устранении неполадок.",
"notification.no_post": "Сообщение не найдено.",
"notification.no_connection": "Сервер недоступен, и мы не смогли получить уведомления канала / команды.",
"invite.summary.back": "Вернуться назад",
"channel_notification_preferences.unmute_content": "Включить уведомления",
"channel_notification_preferences.thread_replies": "Ответы на обсуждения",
"channel_notification_preferences.reset_default": "Сбросить до значений по умолчанию",
"channel_notification_preferences.notify_about": "Уведомить меня о...",
"channel_notification_preferences.notification.thread_replies": "Уведомлять меня об ответах на обсуждения, за которыми я слежу в этом канале",
"channel_notification_preferences.notification.none": "Ничего",
"channel_notification_preferences.notification.mention": "Только упоминания, личные сообщения",
"channel_notification_preferences.notification.all": "Все новые сообщения",
"channel_notification_preferences.muted_title": "На этом канале уведомления отключены",
"channel_notification_preferences.muted_content": "Вы можете изменить настройки уведомлений, но вы не будете получать уведомления, пока вы не включите их для канала обратно.",
"channel_notification_preferences.default": "(по умолчанию)"
}

View File

@@ -992,5 +992,18 @@
"mobile.calls_recording_start_no_permissions": "Du har inte behörighet att starta en inspelning. Be samtalsvärden att starta en inspelning.",
"mobile.calls_recording_start_in_progress": "En inspelning pågår redan.",
"mobile.calls_host_rec_error_title": "Något gick fel med inspelningen",
"mobile.calls_host_rec_error": "Försök att spela in igen. Du kan också kontakta din systemadministratör för att få hjälp med felsökning."
"mobile.calls_host_rec_error": "Försök att spela in igen. Du kan också kontakta din systemadministratör för att få hjälp med felsökning.",
"notification.no_post": "Meddelandet hittades inte.",
"invite.summary.back": "Gå tillbaka",
"channel_notification_preferences.unmute_content": "Stäng av mjutad kanal",
"channel_notification_preferences.thread_replies": "Svar i trådar",
"channel_notification_preferences.reset_default": "Återställ till standardinställningen",
"channel_notification_preferences.notify_about": "Notifiera mig om...",
"channel_notification_preferences.notification.thread_replies": "Notifiera mig om svar i trådar som jag följer i denna kanal",
"channel_notification_preferences.notification.none": "Inget",
"channel_notification_preferences.notification.mention": "Endast omnämnanden och direktmeddelanden",
"channel_notification_preferences.notification.all": "Alla nya meddelanden",
"channel_notification_preferences.muted_title": "Kanalen är mjutad",
"channel_notification_preferences.muted_content": "Du kan ändra notifieringsinställningarna, men eftersom kanalen är mjutad kommer du inte få notifieringar.",
"channel_notification_preferences.default": "(standard)"
}

View File

@@ -1,305 +0,0 @@
{
"ServiceSettings": {
"SiteURL": "http://localhost:8065",
"WebsocketURL": "",
"LicenseFileLocation": "",
"ListenAddress": ":8065",
"ConnectionSecurity": "",
"TLSCertFile": "",
"TLSKeyFile": "",
"TLSMinVer": "1.2",
"TLSStrictTransport": false,
"TLSStrictTransportMaxAge": 63072000,
"TLSOverwriteCiphers": [],
"UseLetsEncrypt": false,
"Forward80To443": false,
"TrustedProxyIPHeader": [],
"ReadTimeout": 300,
"WriteTimeout": 300,
"IdleTimeout": 300,
"MaximumLoginAttempts": 10,
"GoroutineHealthThreshold": -1,
"GoogleDeveloperKey": "",
"EnableOAuthServiceProvider": false,
"EnableIncomingWebhooks": true,
"EnableOutgoingWebhooks": true,
"EnableCommands": true,
"EnableOnlyAdminIntegrations": true,
"EnablePostUsernameOverride": false,
"EnablePostIconOverride": false,
"EnableLinkPreviews": false,
"EnableTesting": false,
"EnableDeveloper": false,
"EnableOpenTracing": false,
"EnableSecurityFixAlert": true,
"EnableInsecureOutgoingConnections": false,
"AllowedUntrustedInternalConnections": "localhost",
"EnableMultifactorAuthentication": false,
"EnforceMultifactorAuthentication": false,
"EnableUserAccessTokens": false,
"AllowCorsFrom": "",
"CorsExposedHeaders": "",
"CorsAllowCredentials": false,
"CorsDebug": false,
"AllowCookiesForSubdomains": false,
"ExtendSessionLengthWithActivity": true,
"SessionLengthWebInDays": 30,
"SessionLengthMobileInDays": 30,
"SessionLengthSSOInDays": 30,
"SessionCacheInMinutes": 10,
"SessionIdleTimeoutInMinutes": 43200,
"WebsocketSecurePort": 443,
"WebsocketPort": 80,
"WebserverMode": "gzip",
"EnableCustomEmoji": false,
"EnableEmojiPicker": true,
"EnableGifPicker": false,
"GfycatApiKey": "2_KtH_W5",
"GfycatApiSecret": "3wLVZPiswc3DnaiaFoLkDvB4X0IV6CpMkj4tf2inJRsBY6-FnkT08zGmppWFgeof",
"RestrictCustomEmojiCreation": "all",
"RestrictPostDelete": "all",
"AllowEditPost": "always",
"PostEditTimeLimit": -1,
"TimeBetweenUserTypingUpdatesMilliseconds": 5000,
"EnablePostSearch": true,
"MinimumHashtagLength": 3,
"EnableUserTypingMessages": true,
"EnableChannelViewedMessages": true,
"EnableUserStatuses": true,
"ExperimentalEnableAuthenticationTransfer": true,
"CloseUnusedDirectMessages": false,
"EnablePreviewFeatures": true,
"ExperimentalEnableDefaultChannelLeaveJoinMessages": true,
"ExperimentalGroupUnreadChannels": "disabled",
"ExperimentalChannelOrganization": false,
"ExperimentalChannelSidebarOrganization": "disabled",
"EnableAPIChannelDeletion": true,
"EnableAPITeamDeletion": true,
"ExperimentalEnableHardenedMode": false,
"DisableLegacyMFA": true,
"ExperimentalStrictCSRFEnforcement": false,
"EnableEmailInvitations": true,
"DisableBotsWhenOwnerIsDeactivated": true,
"EnableBotAccountCreation": true,
"EnableSVGs": true,
"EnableLatex": true,
"EnableInlineLatex": true,
"CollapsedThreads": "always_on"
},
"TeamSettings": {
"SiteName": "Mattermost",
"MaxUsersPerTeam": 2000,
"EnableTeamCreation": true,
"EnableUserCreation": true,
"EnableOpenServer": true,
"EnableUserDeactivation": false,
"EnableCustomUserStatuses": true,
"RestrictCreationToDomains": "",
"EnableCustomBrand": false,
"CustomBrandText": "",
"CustomDescriptionText": "",
"RestrictDirectMessage": "any",
"RestrictTeamInvite": "all",
"RestrictPublicChannelManagement": "all",
"RestrictPrivateChannelManagement": "all",
"RestrictPublicChannelCreation": "all",
"RestrictPrivateChannelCreation": "all",
"RestrictPublicChannelDeletion": "all",
"RestrictPrivateChannelDeletion": "all",
"RestrictPrivateChannelManageMembers": "all",
"EnableXToLeaveChannelsFromLHS": false,
"UserStatusAwayTimeout": 300,
"MaxChannelsPerTeam": 2000,
"MaxNotificationsPerChannel": 1000,
"EnableConfirmNotificationsToChannel": true,
"TeammateNameDisplay": "username",
"ExperimentalViewArchivedChannels": true,
"ExperimentalEnableAutomaticReplies": true,
"ExperimentalHideTownSquareinLHS": false,
"ExperimentalTownSquareIsReadOnly": false,
"LockTeammateNameDisplay": false,
"ExperimentalPrimaryTeam": "",
"ExperimentalDefaultChannels": []
},
"ClientRequirements": {
"AndroidLatestVersion": "",
"AndroidMinVersion": "",
"DesktopLatestVersion": "",
"DesktopMinVersion": "",
"IosLatestVersion": "",
"IosMinVersion": ""
},
"LogSettings": {
"EnableConsole": true
},
"NotificationLogSettings": {
"EnableConsole": true
},
"PasswordSettings": {
"MinimumLength": 5,
"Lowercase": false,
"Number": false,
"Uppercase": false,
"Symbol": false,
"Enable": false
},
"FileSettings": {
"EnableFileAttachments": true,
"EnableMobileUpload": true,
"EnableMobileDownload": true,
"MaxFileSize": 52428800,
"DriverName": "local",
"Directory": "./data/",
"EnablePublicLink": false,
"PublicLinkSalt": ""
},
"EmailSettings": {
"EnableSignUpWithEmail": true,
"EnableSignInWithEmail": true,
"EnableSignInWithUsername": true,
"SendEmailNotifications": true,
"UseChannelInEmailNotifications": false,
"RequireEmailVerification": false,
"FeedbackName": "",
"FeedbackEmail": "test@example.com",
"ReplyToAddress": "test@example.com",
"FeedbackOrganization": "",
"EnableSMTPAuth": false,
"SMTPUsername": "",
"SMTPPassword": "",
"SMTPServer": "localhost",
"SMTPPort": "10025",
"SMTPServerTimeout": 10,
"ConnectionSecurity": "",
"SendPushNotifications": true,
"PushNotificationServer": "https://push-test.mattermost.com",
"PushNotificationContents": "generic",
"EnableEmailBatching": false,
"EmailBatchingBufferSize": 256,
"EmailBatchingInterval": 30,
"EnablePreviewModeBanner": true,
"SkipServerCertificateVerification": false,
"EmailNotificationContentsType": "full",
"LoginButtonColor": "#0000",
"LoginButtonBorderColor": "#2389D7",
"LoginButtonTextColor": "#2389D7"
},
"RateLimitSettings": {
"Enable": false
},
"PrivacySettings": {
"ShowEmailAddress": true,
"ShowFullName": true
},
"SupportSettings": {
"TermsOfServiceLink": "https://mattermost.com/terms-of-use/",
"PrivacyPolicyLink": "https://mattermost.com/privacy-policy/",
"AboutLink": "https://mattermost.com/default-about/",
"HelpLink": "https://mattermost.com/default-help/",
"ReportAProblemLink": "https://mattermost.com/default-report-a-problem/",
"SupportEmail": "feedback@mattermost.com",
"CustomTermsOfServiceEnabled": false,
"CustomTermsOfServiceReAcceptancePeriod": 365,
"EnableAskCommunityLink": true
},
"AnnouncementSettings": {
"EnableBanner": false
},
"ThemeSettings": {
"EnableThemeSelection": true,
"DefaultTheme": "default",
"AllowCustomThemes": true,
"AllowedThemes": []
},
"GitLabSettings": {
"Enable": false
},
"GoogleSettings": {
"Enable": false
},
"Office365Settings": {
"Enable": false
},
"LdapSettings": {
"Enable": false
},
"ComplianceSettings": {
"Enable": false
},
"LocalizationSettings": {
"DefaultServerLocale": "en",
"DefaultClientLocale": "en",
"AvailableLocales": ""
},
"SamlSettings": {
"Enable": false
},
"NativeAppSettings": {
"AppDownloadLink": "https://mattermost.com/download/#mattermostApps",
"AndroidAppDownloadLink": "https://mattermost.com/mattermost-android-app/",
"IosAppDownloadLink": "https://mattermost.com/mattermost-ios-app/"
},
"ClusterSettings": {
"Enable": false
},
"MetricsSettings": {
"Enable": false
},
"ExperimentalSettings": {
"ClientSideCertEnable": false,
"ClientSideCertCheck": "secondary",
"LinkMetadataTimeoutMilliseconds": 5000,
"RestrictSystemAdmin": false,
"UseNewSAMLLibrary": false
},
"AnalyticsSettings": {
"MaxUsersForStatistics": 2500
},
"ElasticsearchSettings": {
"ConnectionUrl": "http://localhost:9200",
"Username": "elastic",
"Password": "changeme",
"EnableIndexing": false,
"EnableSearching": false,
"EnableAutocomplete": false,
"Sniff": true
},
"DataRetentionSettings": {
"EnableMessageDeletion": false,
"EnableFileDeletion": false,
"MessageRetentionDays": 365,
"FileRetentionDays": 365,
"DeletionJobStartTime": "02:00"
},
"MessageExportSettings": {
"EnableExport": false
},
"JobSettings": {
"RunJobs": true,
"RunScheduler": true
},
"PluginSettings": {
"Enable": false,
"PluginStates": {
"com.mattermost.calls": {
"Enable": true
}
}
},
"DisplaySettings": {
"CustomUrlSchemes": [],
"ExperimentalTimezone": true
},
"GuestAccountsSettings": {
"Enable": true,
"AllowEmailAccounts": true,
"EnforceMultifactorAuthentication": false,
"RestrictCreationToDomains": ""
},
"ImageProxySettings": {
"Enable": true,
"ImageProxyType": "local",
"RemoteImageProxyURL": "",
"RemoteImageProxyOptions": ""
}
}

View File

@@ -3,13 +3,10 @@
import path from 'path';
import {ldapPort, ldapServer} from '@support/test_config';
import merge from 'deepmerge';
import jestExpect from 'expect';
import client from './client';
import {apiUploadFile, getResponseFromError} from './common';
import defaultServerConfig from './default_config.json';
// ****************************************************************
// System
@@ -152,29 +149,6 @@ export const apiRequireSMTPServer = async (baseUrl: string) => {
jestExpect(status).toEqual(200);
};
/**
* Update configuration.
* See https://api.mattermost.com/#operation/UpdateConfig
* @param {string} baseUrl - the base server URL
* @param {Object} newConfig - specific config to update
* @return {Object} returns {config} on success or {error, status} on error
*/
export const apiUpdateConfig = async (baseUrl: string, newConfig: any = {}): Promise<any> => {
try {
const {config: currentConfig} = await apiGetConfig(baseUrl);
const config = merge.all([currentConfig, getDefaultConfig(baseUrl), newConfig]);
const response = await client.put(
`${baseUrl}/api/v4/config`,
config,
);
return {config: response.data};
} catch (err) {
return getResponseFromError(err);
}
};
/**
* Upload server license with file expected at "/detox/e2e/support/fixtures/mattermost-license.txt"
* See https://api.mattermost.com/#operation/UploadLicenseFile
@@ -209,18 +183,6 @@ export const getClientLicense = async (baseUrl: string): Promise<any> => {
return {license: out.license};
};
export const getDefaultConfig = (siteUrl: string) => {
const fromEnv = {
LdapSettings: {
LdapServer: ldapServer,
LdapPort: ldapPort,
},
ServiceSettings: {SiteURL: siteUrl},
};
return merge(defaultServerConfig, fromEnv);
};
export const System = {
apiCheckSystemHealth,
apiEmailTest,
@@ -230,10 +192,8 @@ export const System = {
apiRequireLicense,
apiRequireLicenseForFeature,
apiRequireSMTPServer,
apiUpdateConfig,
apiUploadLicense,
getClientLicense,
getDefaultConfig,
};
export default System;

View File

@@ -1,7 +1,7 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {isAndroid, timeouts, wait} from '@support/utils';
import {isAndroid, isIos, timeouts, wait} from '@support/utils';
import {expect} from 'detox';
class ServerScreen {
@@ -47,7 +47,12 @@ class ServerScreen {
await this.serverUrlInput.replaceText(serverUrl);
await this.serverUrlInput.tapReturnKey();
await this.serverDisplayNameInput.replaceText(serverDisplayName);
await this.tapConnectButton();
if (isAndroid()) {
await this.serverDisplayNameInput.tapReturnKey();
}
if (isIos()) {
await this.tapConnectButton();
}
};
close = async () => {
@@ -56,10 +61,6 @@ class ServerScreen {
};
tapConnectButton = async () => {
if (isAndroid()) {
await device.pressBack();
await wait(timeouts.ONE_SEC);
}
await this.connectButton.tap();
await wait(timeouts.ONE_SEC);
};

View File

@@ -82,7 +82,6 @@ describe('Channels - Channel List', () => {
// * Verify on first channel
await ChannelScreen.toBeVisible();
await expect(ChannelScreen.headerTitle).toHaveText(testChannel.display_name);
await expect(ChannelScreen.introDisplayName).toHaveText(testChannel.display_name);
// # Go back to channel list screen and tap on a second channel
await ChannelScreen.back();
@@ -92,7 +91,15 @@ describe('Channels - Channel List', () => {
// * Verify on second channel
await ChannelScreen.toBeVisible();
await expect(ChannelScreen.headerTitle).toHaveText('Off-Topic');
await expect(ChannelScreen.introDisplayName).toHaveText('Off-Topic');
// # Go back to channel list screen and tap on a third channel
await ChannelScreen.back();
await ChannelListScreen.toBeVisible();
await ChannelListScreen.getChannelItemDisplayName(channelsCategory, townSquareChannelName).tap();
// * Verify on third channel
await ChannelScreen.toBeVisible();
await expect(ChannelScreen.headerTitle).toHaveText('Town Square');
// # Go back to channel list screen
await ChannelScreen.back();

View File

@@ -8,7 +8,6 @@ beforeAll(async () => {
// Login as sysadmin and reset server configuration
await System.apiCheckSystemHealth(siteOneUrl);
await User.apiAdminLogin(siteOneUrl);
await System.apiUpdateConfig(siteOneUrl);
await Plugin.apiDisableNonPrepackagedPlugins(siteOneUrl);
await device.launchApp({

View File

@@ -79,7 +79,7 @@ describe('Teams - Invite', () => {
await expect(Invite.teamIcon).toBeVisible();
// * Verify default Selection
await expect(Invite.screenSelection).toBeVisible();
await waitFor(Invite.screenSelection).toBeVisible().withTimeout(timeouts.TWO_SEC);
// * Verify Server data
await expect(Invite.serverDisplayName).toHaveText(serverOneDisplayName);
@@ -93,10 +93,9 @@ describe('Teams - Invite', () => {
});
it('MM-T5221 - should be able to share a URL invite to the team', async () => {
// # Tap on Share link
await Invite.shareLinkButton.tap();
if (isIos()) {
// # Tap on Share link
await Invite.shareLinkButton.tap();
const dialog = systemDialog(`Join the ${testTeam.display_name} team`);
// * Verify share dialog is open
@@ -104,28 +103,28 @@ describe('Teams - Invite', () => {
// # Close share dialog
await dialog.swipe('down');
}
} // no support for Android system dialogs by detox yet. See https://github.com/wix/Detox/issues/3227
});
it('MM-T5361 - should show no results item in search list', async () => {
const noUser = 'qwertyuiop';
// # Search for a non existent user
// # Search for a non-existent user
await Invite.searchBarInput.replaceText(noUser);
// * Validate no results item in search list
await expect(Invite.getSearchListNoResults(noUser)).toBeVisible();
await waitFor(Invite.getSearchListNoResults(noUser)).toBeVisible().withTimeout(timeouts.TWO_SEC);
await expect(Invite.getSearchListNoResultsText(noUser)).toHaveText(noUser);
});
it('MM-T5362 - should be able to send email invite', async () => {
const noUserEmailFormat = 'qwerty@ui.op';
// # Search for a non existent user with email format
// # Search for a non-existent user with email format
await Invite.searchBarInput.replaceText(noUserEmailFormat);
// * Validate email invite item in search list
await expect(Invite.getSearchListTextItem(noUserEmailFormat)).toBeVisible();
await waitFor(Invite.getSearchListTextItem(noUserEmailFormat)).toBeVisible().withTimeout(timeouts.TWO_SEC);
await expect(Invite.getSearchListTextItemText(noUserEmailFormat)).toHaveText(noUserEmailFormat);
// # Select email invite item
@@ -139,7 +138,7 @@ describe('Teams - Invite', () => {
await Invite.sendButton.tap();
// * Validate summary report sent
await expect(Invite.screenSummary).toBeVisible();
await waitFor(Invite.screenSummary).toBeVisible().withTimeout(timeouts.TEN_SEC);
await expect(Invite.getSummaryReportSent()).toBeVisible();
await expect(Invite.getSummaryReportNotSent()).not.toExist();
await expect(Invite.getSummaryReportTextItem(noUserEmailFormat)).toBeVisible();
@@ -149,11 +148,11 @@ describe('Teams - Invite', () => {
it('MM-T5363 - should be able to send user invite', async () => {
const username = ` @${testUser1.username}`;
// # Search for a existent user
// # Search for an existent user
await Invite.searchBarInput.replaceText(testUser1.username);
// * Validate user item in search list
await expect(Invite.getSearchListUserItem(testUser1.id)).toBeVisible();
await waitFor(Invite.getSearchListUserItem(testUser1.id)).toBeVisible().withTimeout(timeouts.TWO_SEC);
await expect(Invite.getSearchListUserItemText(testUser1.id)).toHaveText(username);
// # Select user item
@@ -167,7 +166,7 @@ describe('Teams - Invite', () => {
await Invite.sendButton.tap();
// * Validate summary report sent
await expect(Invite.screenSummary).toBeVisible();
await waitFor(Invite.screenSummary).toBeVisible().withTimeout(timeouts.TEN_SEC);
await expect(Invite.getSummaryReportSent()).toBeVisible();
await expect(Invite.getSummaryReportNotSent()).not.toExist();
await expect(Invite.getSummaryReportUserItem(testUser1.id)).toBeVisible();
@@ -177,11 +176,11 @@ describe('Teams - Invite', () => {
it('MM-T5364 - should not be able to send user invite to user already in team', async () => {
const username = ` @${testUser1.username}`;
// # Search for a existent user already in team
// # Search for an existent user already in team
await Invite.searchBarInput.replaceText(testUser1.username);
// * Validate user item in search list
await expect(Invite.getSearchListUserItem(testUser1.id)).toBeVisible();
await waitFor(Invite.getSearchListUserItem(testUser1.id)).toBeVisible().withTimeout(timeouts.TWO_SEC);
// # Select user item
await Invite.getSearchListUserItem(testUser1.id).tap();
@@ -206,11 +205,11 @@ describe('Teams - Invite', () => {
const username1 = ` @${testUser1.username}`;
const username2 = ` @${testUser2.username}`;
// # Search for a existent user
// # Search for an existent user
await Invite.searchBarInput.replaceText(testUser2.username);
// * Validate user item in search list
await expect(Invite.getSearchListUserItem(testUser2.id)).toBeVisible();
await waitFor(Invite.getSearchListUserItem(testUser2.id)).toBeVisible().withTimeout(timeouts.TEN_SEC);
// # Select user item
await Invite.getSearchListUserItem(testUser2.id).tap();
@@ -234,7 +233,7 @@ describe('Teams - Invite', () => {
await Invite.sendButton.tap();
// * Validate summary
await expect(Invite.screenSummary).toBeVisible();
await waitFor(Invite.screenSummary).toBeVisible().withTimeout(timeouts.TEN_SEC);
// * Validate summary report not sent
await expect(Invite.getSummaryReportNotSent()).toBeVisible();
@@ -242,7 +241,7 @@ describe('Teams - Invite', () => {
await expect(Invite.getSummaryReportUserItemText(testUser1.id)).toHaveText(username1);
// * Validate summary report sent
await expect(Invite.getSummaryReportSent()).toBeVisible();
await waitFor(Invite.getSummaryReportSent()).toBeVisible().withTimeout(timeouts.TEN_SEC);
await expect(Invite.getSummaryReportUserItem(testUser2.id)).toBeVisible();
await expect(Invite.getSummaryReportUserItemText(testUser2.id)).toHaveText(username2);
});

View File

@@ -1,23 +1,23 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.5)
CFPropertyList (3.0.6)
rexml
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.695.0)
aws-sdk-core (3.169.0)
aws-partitions (1.721.0)
aws-sdk-core (3.170.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.62.0)
aws-sdk-kms (1.63.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.118.0)
aws-sdk-s3 (1.119.1)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
@@ -36,7 +36,7 @@ GEM
unf (>= 0.0.5, < 1.0.0)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.97.1)
excon (0.99.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
@@ -66,7 +66,7 @@ GEM
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.2.6)
fastlane (2.211.0)
fastlane (2.212.1)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@@ -109,11 +109,11 @@ GEM
fastlane-plugin-android_change_string_app_name (0.1.1)
nokogiri
fastlane-plugin-find_replace_string (0.1.0)
fastlane-plugin-versioning_android (0.1.0)
fastlane-plugin-versioning_android (0.1.1)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.32.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-core (0.9.5)
google-apis-androidpublisher_v3 (0.35.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.0)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
@@ -122,10 +122,10 @@ GEM
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.16.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-playcustomapp_v1 (0.12.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
@@ -133,7 +133,7 @@ GEM
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
@@ -155,7 +155,7 @@ GEM
httpclient (2.8.3)
jmespath (1.6.2)
json (2.6.3)
jwt (2.6.0)
jwt (2.7.0)
memoist (0.16.2)
mini_magick (4.12.0)
mini_mime (1.1.2)
@@ -164,12 +164,12 @@ GEM
multipart-post (2.0.0)
nanaimo (0.3.0)
naturally (2.2.1)
nokogiri (1.14.0)
nokogiri (1.14.2)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
optparse (0.1.1)
os (1.1.4)
plist (3.6.0)
plist (3.7.0)
public_suffix (5.0.1)
racc (1.6.2)
rake (13.0.6)
@@ -188,7 +188,7 @@ GEM
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.8)
simctl (1.6.10)
CFPropertyList
naturally
slack-notifier (2.3.2)
@@ -205,7 +205,7 @@ GEM
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
webrick (1.7.0)
webrick (1.8.1)
word_wrap (1.0.0)
xcodeproj (1.22.0)
CFPropertyList (>= 2.3.3, < 4.0)

View File

@@ -1128,7 +1128,7 @@
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 459;
CURRENT_PROJECT_VERSION = 461;
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
ENABLE_BITCODE = NO;
HEADER_SEARCH_PATHS = (
@@ -1172,7 +1172,7 @@
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 459;
CURRENT_PROJECT_VERSION = 461;
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
ENABLE_BITCODE = NO;
HEADER_SEARCH_PATHS = (
@@ -1315,7 +1315,7 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 459;
CURRENT_PROJECT_VERSION = 461;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
GCC_C_LANGUAGE_STANDARD = gnu11;
@@ -1366,7 +1366,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 459;
CURRENT_PROJECT_VERSION = 461;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
GCC_C_LANGUAGE_STANDARD = gnu11;

View File

@@ -37,7 +37,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>459</string>
<string>461</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>

View File

@@ -21,7 +21,7 @@
<key>CFBundleShortVersionString</key>
<string>2.1.0</string>
<key>CFBundleVersion</key>
<string>459</string>
<string>461</string>
<key>UIAppFonts</key>
<array>
<string>OpenSans-Bold.ttf</string>

View File

@@ -21,7 +21,7 @@
<key>CFBundleShortVersionString</key>
<string>2.1.0</string>
<key>CFBundleVersion</key>
<string>459</string>
<string>461</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>