Skip to content

Commit 3e083d8

Browse files
author
mdolhalo
committed
feat: reportportal integration
Signed-off-by: mdolhalo <mdolhalo@redhat.com>
1 parent a90153c commit 3e083d8

15 files changed

+437
-60
lines changed

tests/e2e/configs/mocharc.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ module.exports = {
2121
timeout: MOCHA_CONSTANTS.MOCHA_DEFAULT_TIMEOUT,
2222
slow: 60000,
2323
reporter: 'mocha-multi-reporters',
24-
reporterOptions: 'configFile=configs/reporters-config.json',
24+
reporterOptions: 'configFile=configs/reporters.config.js',
2525
ui: 'tdd',
26+
extension: ['js', 'cjs', 'mjs'],
2627
require: ['dist/specs/MochaHooks.js', 'ts-node/register'],
2728
bail: MOCHA_CONSTANTS.MOCHA_BAIL,
2829
'full-trace': true,

tests/e2e/configs/reporters-config.json

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/** *******************************************************************
2+
* copyright (c) 2023 Red Hat, Inc.
3+
*
4+
* This program and the accompanying materials are made
5+
* available under the terms of the Eclipse Public License 2.0
6+
* which is available at https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
**********************************************************************/
10+
const { REPORTER_CONSTANTS } = require('../constants/REPORTER_CONSTANTS');
11+
const { BASE_TEST_CONSTANTS } = require('../constants/BASE_TEST_CONSTANTS');
12+
13+
module.exports = {
14+
reporterEnabled: REPORTER_CONSTANTS.REPORTERS_ENABLED(),
15+
allureMochaReporterOptions: {
16+
resultsDir: '.allure-results'
17+
},
18+
reportportalAgentJsMochaReporterOptions: {
19+
apiKey: REPORTER_CONSTANTS.RP_API_KEY,
20+
endpoint: REPORTER_CONSTANTS.RP_ENDPOINT(),
21+
project: REPORTER_CONSTANTS.RP_PROJECT(),
22+
launch: `${REPORTER_CONSTANTS.RP_LAUNCH_NAME}`,
23+
attributes: [
24+
{
25+
key: 'build',
26+
value: `${BASE_TEST_CONSTANTS.TESTING_APPLICATION_VERSION}`
27+
},
28+
{
29+
value: BASE_TEST_CONSTANTS.TESTING_APPLICATION_NAME()
30+
},
31+
{
32+
key: 'url',
33+
value: BASE_TEST_CONSTANTS.TS_SELENIUM_BASE_URL
34+
}
35+
],
36+
rerun: REPORTER_CONSTANTS.RP_RERUN(),
37+
rerunOf: REPORTER_CONSTANTS.RP_RERUN_UUID,
38+
restClientConfig: {
39+
timeout: 1200000
40+
}
41+
}
42+
};

tests/e2e/constants/BASE_TEST_CONSTANTS.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const BASE_TEST_CONSTANTS: {
3030
TS_SELENIUM_PROJECT_ROOT_FILE_NAME: string;
3131
TS_SELENIUM_REQUEST_INTERCEPTOR: boolean;
3232
TS_SELENIUM_RESPONSE_INTERCEPTOR: boolean;
33+
TESTING_APPLICATION_NAME: () => string;
3334
} = {
3435
/**
3536
* base URL of the application which should be checked
@@ -51,6 +52,17 @@ export const BASE_TEST_CONSTANTS: {
5152
*/
5253
TEST_ENVIRONMENT: process.env.TEST_ENVIRONMENT || '',
5354

55+
/**
56+
* application name (DevSpaces or Che)
57+
*/
58+
TESTING_APPLICATION_NAME: (): string => {
59+
return BASE_TEST_CONSTANTS.TS_SELENIUM_BASE_URL.includes('devspaces')
60+
? 'devspaces'
61+
: BASE_TEST_CONSTANTS.TS_SELENIUM_BASE_URL.includes('che')
62+
? 'che'
63+
: 'default';
64+
},
65+
5466
/**
5567
* testing application version
5668
*/

tests/e2e/constants/MOCHA_CONSTANTS.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const MOCHA_CONSTANTS: {
2626

2727
MOCHA_DELAYED_SUITE: process.env.MOCHA_DELAYED_SUITE === 'true',
2828

29-
MOCHA_DEFAULT_TIMEOUT: process.env.MOCHA_DEFAULT_TIMEOUT || 420000,
29+
MOCHA_DEFAULT_TIMEOUT: Number(process.env.MOCHA_DEFAULT_TIMEOUT) || 420000,
3030

3131
MOCHA_RETRIES: process.env.MOCHA_RETRIES || BASE_TEST_CONSTANTS.TEST_ENVIRONMENT === '' ? 0 : 2,
3232

tests/e2e/constants/REPORTER_CONSTANTS.ts

Lines changed: 98 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,28 @@
77
*
88
* SPDX-License-Identifier: EPL-2.0
99
**********************************************************************/
10+
import { BASE_TEST_CONSTANTS } from './BASE_TEST_CONSTANTS';
11+
1012
export const REPORTER_CONSTANTS: {
13+
DELETE_SCREENCAST_IF_TEST_PASS: boolean;
14+
RP_ENDPOINT(): string;
15+
RP_IS_LOCAL_SERVER: boolean;
16+
REPORTERS_ENABLED(): string;
17+
RP_API_KEY: string;
18+
RP_PROJECT(): string;
19+
RP_RERUN(): boolean;
20+
RP_RERUN_UUID: string | undefined;
21+
RP_LAUNCH_NAME: string;
22+
RP_USER: string;
23+
RP_USE_PERSONAL: boolean;
24+
SAVE_ALLURE_REPORT_DATA: boolean;
25+
SAVE_RP_REPORT_DATA: boolean;
1126
TS_SELENIUM_DELAY_BETWEEN_SCREENSHOTS: number;
12-
TS_SELENIUM_REPORT_FOLDER: string;
1327
TS_SELENIUM_EXECUTION_SCREENCAST: boolean;
14-
TS_SELENIUM_PRINT_TIMEOUT_VARIABLES: string | boolean;
1528
TS_SELENIUM_LOAD_TEST_REPORT_FOLDER: string;
1629
TS_SELENIUM_LOG_LEVEL: string;
17-
DELETE_SCREENCAST_IF_TEST_PASS: boolean;
30+
TS_SELENIUM_PRINT_TIMEOUT_VARIABLES: string | boolean;
31+
TS_SELENIUM_REPORT_FOLDER: string;
1832
} = {
1933
/**
2034
* path to folder with load tests execution report.
@@ -44,10 +58,89 @@ export const REPORTER_CONSTANTS: {
4458
/**
4559
* log level settings, possible variants: 'INFO' (by default), 'DEBUG', 'TRACE'.
4660
*/
47-
TS_SELENIUM_LOG_LEVEL: process.env.TS_SELENIUM_LOG_LEVEL || 'INFO',
61+
TS_SELENIUM_LOG_LEVEL: process.env.TS_SELENIUM_LOG_LEVEL || 'TRACE',
4862

4963
/**
5064
* print all timeout variables when tests launch, default to false
5165
*/
52-
TS_SELENIUM_PRINT_TIMEOUT_VARIABLES: process.env.TS_SELENIUM_PRINT_TIMEOUT_VARIABLES || false
66+
TS_SELENIUM_PRINT_TIMEOUT_VARIABLES: process.env.TS_SELENIUM_PRINT_TIMEOUT_VARIABLES === 'true',
67+
68+
/**
69+
* use local Allure reporter, default to false
70+
*/
71+
SAVE_ALLURE_REPORT_DATA: process.env.SAVE_ALLURE_REPORT_DATA === 'true',
72+
73+
/**
74+
* use ReportPortal reporter, default to false
75+
*/
76+
SAVE_RP_REPORT_DATA: process.env.SAVE_RP_REPORT_DATA === 'true',
77+
78+
/**
79+
* list of enabler reporters
80+
*/
81+
REPORTERS_ENABLED: (): string => {
82+
let reporters: string = 'dist/utils/CheReporter.js';
83+
if (REPORTER_CONSTANTS.SAVE_ALLURE_REPORT_DATA) {
84+
reporters += ',allure-mocha';
85+
}
86+
if (REPORTER_CONSTANTS.SAVE_RP_REPORT_DATA) {
87+
reporters += ',@reportportal/agent-js-mocha';
88+
}
89+
return reporters;
90+
},
91+
92+
/**
93+
* reportPortal app key or user token
94+
*/
95+
RP_API_KEY: process.env.RP_API_KEY || '',
96+
97+
/**
98+
* user name on ReportPortal
99+
*/
100+
RP_USER: process.env.RP_USER || process.env.USER || 'superadmin',
101+
102+
/**
103+
* launch name to save report
104+
*/
105+
RP_LAUNCH_NAME: process.env.RP_LAUNCH_NAME || 'Test run',
106+
107+
/**
108+
* launch name to save report
109+
*/
110+
RP_RERUN_UUID: process.env.RP_RERUN_UUID || undefined,
111+
112+
/**
113+
* is launch rerun
114+
*/
115+
RP_RERUN: (): boolean => !!REPORTER_CONSTANTS.RP_RERUN_UUID,
116+
117+
/**
118+
* is local or online server to use
119+
*/
120+
RP_IS_LOCAL_SERVER: process.env.RP_IS_LOCAL_SERVER !== 'false',
121+
122+
/**
123+
* url with endpoints where ReportPortal is
124+
*/
125+
RP_ENDPOINT: (): string => {
126+
return process.env.RP_ENDPOINT || REPORTER_CONSTANTS.RP_IS_LOCAL_SERVER
127+
? 'http://localhost:8080/api/v1'
128+
: 'https://reportportal-crw.apps.ocp-c1.prod.psi.redhat.com/api/v1';
129+
},
130+
131+
/**
132+
* use personal project to save launch, if false launch will be send to devspaces or che project, true by default
133+
*/
134+
RP_USE_PERSONAL: process.env.RP_USE_PERSONAL !== 'false',
135+
136+
/**
137+
* project name to save launch
138+
*/
139+
RP_PROJECT: (): string => {
140+
const project: string =
141+
BASE_TEST_CONSTANTS.TEST_ENVIRONMENT !== '' && REPORTER_CONSTANTS.RP_USE_PERSONAL
142+
? `${REPORTER_CONSTANTS.RP_USER}_personal`
143+
: BASE_TEST_CONSTANTS.TESTING_APPLICATION_NAME();
144+
return process.env.RP_PROJECT || project;
145+
}
53146
};

tests/e2e/constants/TIMEOUT_CONSTANTS.ts

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,23 @@
88
* SPDX-License-Identifier: EPL-2.0
99
**********************************************************************/
1010
export const TIMEOUT_CONSTANTS: {
11-
TS_FIND_EXTENSION_TEST_TIMEOUT: number;
12-
TS_SELENIUM_WORKSPACE_STATUS_POLLING: number;
11+
TS_CLICK_DASHBOARD_ITEM_TIMEOUT: number;
1312
TS_COMMON_DASHBOARD_WAIT_TIMEOUT: number;
14-
TS_EXPAND_PROJECT_TREE_ITEM_TIMEOUT: number;
15-
TS_DIALOG_WINDOW_DEFAULT_TIMEOUT: number;
13+
TS_COMMON_PLUGIN_TEST_TIMEOUT: number;
1614
TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT: number;
15+
TS_DIALOG_WINDOW_DEFAULT_TIMEOUT: number;
16+
TS_EDITOR_TAB_INTERACTION_TIMEOUT: number;
17+
TS_EXPAND_PROJECT_TREE_ITEM_TIMEOUT: number;
18+
TS_FIND_EXTENSION_TEST_TIMEOUT: number;
19+
TS_IDE_LOAD_TIMEOUT: number;
1720
TS_SELENIUM_CLICK_ON_VISIBLE_ITEM: number;
1821
TS_SELENIUM_DEFAULT_ATTEMPTS: number;
19-
TS_SELENIUM_WORKSPACE_STATUS_ATTEMPTS: number;
20-
TS_SELENIUM_WAIT_FOR_URL: number;
2122
TS_SELENIUM_DEFAULT_POLLING: number;
22-
TS_IDE_LOAD_TIMEOUT: number;
23+
TS_SELENIUM_LOAD_PAGE_TIMEOUT: number;
24+
TS_SELENIUM_START_WORKSPACE_TIMEOUT: number;
25+
TS_SELENIUM_WAIT_FOR_URL: number;
2326
TS_WAIT_LOADER_ABSENCE_TIMEOUT: number;
2427
TS_WAIT_LOADER_PRESENCE_TIMEOUT: number;
25-
TS_SELENIUM_START_WORKSPACE_TIMEOUT: number;
26-
TS_SELENIUM_LOAD_PAGE_TIMEOUT: number;
27-
TS_CLICK_DASHBOARD_ITEM_TIMEOUT: number;
28-
TS_COMMON_PLUGIN_TEST_TIMEOUT: number;
29-
TS_EDITOR_TAB_INTERACTION_TIMEOUT: number;
3028
} = {
3129
/**
3230
* default amount of tries, "5" by default.
@@ -45,16 +43,6 @@ export const TIMEOUT_CONSTANTS: {
4543
*/
4644
TS_SELENIUM_WAIT_FOR_URL: Number(process.env.TS_SELENIUM_WAIT_FOR_URL) || 10_000,
4745

48-
/**
49-
* amount of tries for checking workspace status.
50-
*/
51-
TS_SELENIUM_WORKSPACE_STATUS_ATTEMPTS: Number(process.env.TS_SELENIUM_WORKSPACE_STATUS_ATTEMPTS) || 90,
52-
53-
/**
54-
* delay in milliseconds between checking workspace status tries.
55-
*/
56-
TS_SELENIUM_WORKSPACE_STATUS_POLLING: Number(process.env.TS_SELENIUM_WORKSPACE_STATUS_POLLING) || 10000,
57-
5846
/**
5947
* wait between workspace started and IDE ready to be used, "20 000" by default.
6048
*/

0 commit comments

Comments
 (0)