diff --git a/detox/e2e/init.js b/detox/e2e/init.js index 5e60f7b72..535a0248f 100644 --- a/detox/e2e/init.js +++ b/detox/e2e/init.js @@ -5,6 +5,7 @@ import {System, User} from '@support/server_api'; beforeAll(async () => { // Login as sysadmin and reset server configuration + await System.apiCheckSystemHealth(); await User.apiAdminLogin(); await System.apiUpdateConfig(); diff --git a/detox/e2e/support/server_api/common.js b/detox/e2e/support/server_api/common.js index 01ee9bc46..8cf96f766 100644 --- a/detox/e2e/support/server_api/common.js +++ b/detox/e2e/support/server_api/common.js @@ -2,7 +2,20 @@ // See LICENSE.txt for license information. export const getResponseFromError = (err) => { - const {response: {data, status}} = err; + const {response} = err; + if (!response) { + const message = `No response from server at "${err.config.baseURL}". +If testing against a server other than the default local instance, you may set the server URL via "SITE_URL" environment variable. +`; + + // Throw an error instead of failing silently + throw new Error(message); + } + + const {data, status} = response; + + // Explicitly print out response data from server for ease of debugging + console.warn(data); // eslint-disable-line no-console return {error: data, status}; }; diff --git a/detox/e2e/support/server_api/setup.js b/detox/e2e/support/server_api/setup.js index d6696988b..63f48afd6 100644 --- a/detox/e2e/support/server_api/setup.js +++ b/detox/e2e/support/server_api/setup.js @@ -4,7 +4,6 @@ import Channel from './channel'; import Team from './team'; import User from './user'; -import {getResponseFromError} from './common'; /** * Creates new user, channel and team for test isolation. @@ -16,22 +15,18 @@ export const apiInit = async ({ teamOptions = {type: 'O', prefix: 'team'}, userOptions = {prefix: 'user'}, } = {}) => { - try { - const {team} = await Team.apiCreateTeam(teamOptions); - const {channel} = await Channel.apiCreateChannel({...channelOptions, teamId: team.id}); - const {user} = await User.apiCreateUser(userOptions); + const {team} = await Team.apiCreateTeam(teamOptions); + const {channel} = await Channel.apiCreateChannel({...channelOptions, teamId: team.id}); + const {user} = await User.apiCreateUser(userOptions); - await Team.apiAddUserToTeam(user.id, team.id); - await Channel.apiAddUserToChannel(user.id, channel.id); + await Team.apiAddUserToTeam(user.id, team.id); + await Channel.apiAddUserToChannel(user.id, channel.id); - return { - channel, - team, - user, - }; - } catch (err) { - return getResponseFromError(err); - } + return { + channel, + team, + user, + }; }; export const Setup = { diff --git a/detox/e2e/support/server_api/system.js b/detox/e2e/support/server_api/system.js index 97c55e268..3fe93ad12 100644 --- a/detox/e2e/support/server_api/system.js +++ b/detox/e2e/support/server_api/system.js @@ -21,6 +21,20 @@ import defaultServerConfig from './default_config.json'; // - return value defined by `@return` // **************************************************************** +/** + * Check system health. + * See https://api.mattermost.com/#tag/system/paths/~1system~1ping/get + * @return {Object} returns {data} on success or {error, status} on error + */ +export const apiCheckSystemHealth = async () => { + try { + const response = await client.get('/api/v4/system/ping?get_server_status=true'); + return {data: response.data}; + } catch (err) { + return getResponseFromError(err); + } +}; + /** * Get configuration. * See https://api.mattermost.com/#tag/system/paths/~1config/get @@ -65,6 +79,7 @@ const getDefaultConfig = () => { }; export const System = { + apiCheckSystemHealth, apiGetConfig, apiUpdateConfig, };