complexqa_frontend_core 1.29.1 → 1.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/publish/api/autotest_case_api.js +78 -0
- package/publish/api/autotest_result_api.js +17 -0
- package/publish/api/autotest_run_api.js +36 -0
- package/publish/api/autotest_step_api.js +88 -0
- package/publish/api/autotest_suite_api.js +17 -0
- package/publish/api/file_app_api.js +76 -0
- package/publish/api/index.js +16 -0
- package/publish/api/object_repository_element_api.js +17 -0
- package/publish/api/object_repository_folder_api.js +17 -0
- package/publish/api/object_repository_page_api.js +17 -0
- package/publish/app_configuration/menu_configuration_main.js +14 -0
- package/publish/app_configuration/table/helpers/table_element_models.js +16 -0
- package/publish/app_configuration/table/sections/autotest_case.js +73 -0
- package/publish/app_configuration/table/sections/autotest_result.js +59 -0
- package/publish/app_configuration/table/sections/autotest_run.js +66 -0
- package/publish/app_configuration/table/sections/autotest_step.js +82 -0
- package/publish/app_configuration/table/sections/autotest_suite.js +42 -0
- package/publish/app_configuration/table/sections/object_repository_element.js +59 -0
- package/publish/app_configuration/table/sections/object_repository_folder.js +41 -0
- package/publish/app_configuration/table/sections/object_repository_page.js +55 -0
- package/publish/app_configuration/table/table_configuration.js +16 -0
- package/publish/index.js +28 -0
- package/publish/services/FileAppService.js +48 -0
- package/publish/types/element_translate/typeAttachment.i18n.js +22 -11
- package/publish/types/element_translate/typeAutotestCase.i18n.js +95 -0
- package/publish/types/element_translate/typeAutotestResult.i18n.js +77 -0
- package/publish/types/element_translate/typeAutotestRun.i18n.js +110 -0
- package/publish/types/element_translate/typeAutotestStep.i18n.js +80 -0
- package/publish/types/element_translate/typeAutotestSuite.i18n.js +40 -0
- package/publish/types/element_translate/typeCustomProperty.i18n.js +21 -6
- package/publish/types/element_translate/typeCustomPropertyValue.i18n.js +21 -6
- package/publish/types/element_translate/typeFile.i18n.js +21 -15
- package/publish/types/element_translate/typeObjectRepositoryElement.i18n.js +92 -0
- package/publish/types/element_translate/typeObjectRepositoryFolder.i18n.js +62 -0
- package/publish/types/element_translate/typeObjectRepositoryPage.i18n.js +43 -0
- package/publish/types/element_translate/typeTagRelation.i18n.js +18 -0
- package/publish/types/family_elements/autotest_step_actions/autotestStepActionCatalog.js +54 -0
- package/publish/types/family_elements/autotest_step_actions/autotestStepLocatorKind.js +56 -0
- package/publish/types/family_elements/autotest_step_actions/autotestStepTargetNormalizer.js +134 -0
- package/publish/types/family_elements/autotest_step_actions/typeAutotestStepAction.js +35 -0
- package/publish/types/family_elements/autotest_step_actions/typeAutotestStepActionVariants.js +148 -0
- package/publish/types/family_elements/autotest_step_actions/typeAutotestStepLocatorAction.js +12 -0
- package/publish/types/family_elements/autotest_step_actions/typeAutotestStepLocatorValueAction.js +13 -0
- package/publish/types/family_elements/typeAttachment.js +1 -1
- package/publish/types/family_elements/typeAutotestCase.js +220 -0
- package/publish/types/family_elements/typeAutotestResult.js +81 -0
- package/publish/types/family_elements/typeAutotestRun.js +165 -0
- package/publish/types/family_elements/typeAutotestStep.js +297 -0
- package/publish/types/family_elements/typeAutotestStepTarget.js +50 -0
- package/publish/types/family_elements/typeAutotestSuite.js +74 -0
- package/publish/types/family_elements/typeCustomProperty.js +1 -1
- package/publish/types/family_elements/typeObjectRepositoryElement.js +88 -0
- package/publish/types/family_elements/typeObjectRepositoryFolder.js +81 -0
- package/publish/types/family_elements/typeObjectRepositoryPage.js +77 -0
- package/publish/types/family_files/familyFile.js +2 -0
- package/publish/types/family_files/typeFileAutotestScreenshot.js +33 -0
- package/publish/types/family_files/typeFileFactory.js +3 -0
- package/publish/types/family_relation/typeCustomPropertyValue.js +7 -2
- package/publish/types/family_relation/typeTagRelation.js +30 -0
package/package.json
CHANGED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class";
|
|
2
|
+
import { typeAutotestCase } from "../types/family_elements/typeAutotestCase";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @version v.1.0 (04/09/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class AutotestCaseApi extends ApiAbstractElementClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'autotest_case';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
this.set_element_class_instance(typeAutotestCase);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @param payload
|
|
21
|
+
* @returns {Promise<{payload, response: Promise<*>}>}
|
|
22
|
+
*/
|
|
23
|
+
async create_from_test_case(payload)
|
|
24
|
+
{
|
|
25
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/create_from_test_case`;
|
|
26
|
+
|
|
27
|
+
payload = this.handle_request_payload(payload);
|
|
28
|
+
let response = this.api_request(url, payload);
|
|
29
|
+
response = this.handle_response(response);
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
response: response,
|
|
33
|
+
payload : payload
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Replace explicit predecessors of one autotest case.
|
|
40
|
+
*
|
|
41
|
+
* @param payload
|
|
42
|
+
* @returns {Promise<{payload, response: Promise<*>}>}
|
|
43
|
+
*/
|
|
44
|
+
async replace_pre_cases(payload)
|
|
45
|
+
{
|
|
46
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/replace_pre_cases`;
|
|
47
|
+
|
|
48
|
+
payload = this.handle_request_payload(payload);
|
|
49
|
+
let response = this.api_request(url, payload);
|
|
50
|
+
response = this.handle_response(response);
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
response: response,
|
|
54
|
+
payload : payload
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Read-only syntax of stored steps. Does not open the target site.
|
|
61
|
+
*
|
|
62
|
+
* @param payload
|
|
63
|
+
* @returns {Promise<{payload, response: Promise<*>}>}
|
|
64
|
+
*/
|
|
65
|
+
async check_syntax(payload)
|
|
66
|
+
{
|
|
67
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/check_syntax`;
|
|
68
|
+
|
|
69
|
+
payload = this.handle_request_payload(payload);
|
|
70
|
+
let response = this.api_request(url, payload);
|
|
71
|
+
response = this.handle_response(response);
|
|
72
|
+
|
|
73
|
+
return {
|
|
74
|
+
response: response,
|
|
75
|
+
payload : payload
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class";
|
|
2
|
+
import { typeAutotestResult } from "../types/family_elements/typeAutotestResult";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @version v.1.0 (04/09/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class AutotestResultApi extends ApiAbstractElementClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'autotest_result';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
this.set_element_class_instance(typeAutotestResult);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class";
|
|
2
|
+
import { typeAutotestRun } from "../types/family_elements/typeAutotestRun";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @version v.1.0 (04/09/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class AutotestRunApi extends ApiAbstractElementClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'autotest_run';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
this.set_element_class_instance(typeAutotestRun);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @param payload
|
|
21
|
+
* @returns {Promise<{payload, response: Promise<*>}>}
|
|
22
|
+
*/
|
|
23
|
+
async cancel(payload)
|
|
24
|
+
{
|
|
25
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/cancel`;
|
|
26
|
+
|
|
27
|
+
payload = this.handle_request_payload(payload);
|
|
28
|
+
let response = this.api_request(url, payload);
|
|
29
|
+
response = this.handle_response(response);
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
response: response,
|
|
33
|
+
payload : payload
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class";
|
|
2
|
+
import { typeAutotestStep } from "../types/family_elements/typeAutotestStep";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @version v.1.0 (04/09/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class AutotestStepApi extends ApiAbstractElementClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'autotest_step';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
this.set_element_class_instance(typeAutotestStep);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @version v.1.0 (05/09/2026)
|
|
21
|
+
*/
|
|
22
|
+
async increase_sort_order(payload)
|
|
23
|
+
{
|
|
24
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/increase_sort_order`;
|
|
25
|
+
|
|
26
|
+
payload = this.handle_request_payload(payload);
|
|
27
|
+
let response = this.api_request(url, payload);
|
|
28
|
+
response = this.handle_response(response);
|
|
29
|
+
|
|
30
|
+
return {
|
|
31
|
+
response: response,
|
|
32
|
+
payload : payload
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @version v.1.0 (05/09/2026)
|
|
38
|
+
*/
|
|
39
|
+
async decrease_sort_order(payload)
|
|
40
|
+
{
|
|
41
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/decrease_sort_order`;
|
|
42
|
+
|
|
43
|
+
payload = this.handle_request_payload(payload);
|
|
44
|
+
let response = this.api_request(url, payload);
|
|
45
|
+
response = this.handle_response(response);
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
response: response,
|
|
49
|
+
payload : payload
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @version v.1.0 (05/09/2026)
|
|
56
|
+
*/
|
|
57
|
+
async save(payload)
|
|
58
|
+
{
|
|
59
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/save`;
|
|
60
|
+
|
|
61
|
+
payload = this.handle_request_payload(payload);
|
|
62
|
+
let response = this.api_request(url, payload);
|
|
63
|
+
response = this.handle_response(response);
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
response: response,
|
|
67
|
+
payload : payload
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @version v.1.0 (05/09/2026)
|
|
74
|
+
*/
|
|
75
|
+
async save_json(payload)
|
|
76
|
+
{
|
|
77
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/save_json`;
|
|
78
|
+
|
|
79
|
+
payload = this.handle_request_payload(payload);
|
|
80
|
+
let response = this.api_request(url, payload);
|
|
81
|
+
response = this.handle_response(response);
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
response: response,
|
|
85
|
+
payload : payload
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class";
|
|
2
|
+
import { typeAutotestSuite } from "../types/family_elements/typeAutotestSuite";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @version v.1.0 (04/09/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class AutotestSuiteApi extends ApiAbstractElementClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'autotest_suite';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
this.set_element_class_instance(typeAutotestSuite);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -116,6 +116,60 @@ export class FileAppApi extends ApiAbstractClass
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
|
|
119
|
+
/**
|
|
120
|
+
* GET /web_api/file_app/list_team_files?project_id=
|
|
121
|
+
*
|
|
122
|
+
* @param {object} payload
|
|
123
|
+
*
|
|
124
|
+
* @returns {Promise<{payload: object, response: object}>}
|
|
125
|
+
*/
|
|
126
|
+
async list_team_files(payload)
|
|
127
|
+
{
|
|
128
|
+
const url = `/${ this.api_prefix }/${ this.module_prefix }/list_team_files`;
|
|
129
|
+
const prev_method = this.method;
|
|
130
|
+
|
|
131
|
+
this.method = 'get';
|
|
132
|
+
|
|
133
|
+
payload = this.handle_request_payload(payload);
|
|
134
|
+
let response = this.api_request(url, payload);
|
|
135
|
+
response = await this.handle_response(response, false);
|
|
136
|
+
|
|
137
|
+
this.method = prev_method;
|
|
138
|
+
|
|
139
|
+
return {
|
|
140
|
+
response: response,
|
|
141
|
+
payload : payload,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* GET /web_api/file_app/team_usage
|
|
148
|
+
*
|
|
149
|
+
* @param {object} [payload]
|
|
150
|
+
*
|
|
151
|
+
* @returns {Promise<{payload: object, response: object}>}
|
|
152
|
+
*/
|
|
153
|
+
async team_usage(payload = {})
|
|
154
|
+
{
|
|
155
|
+
const url = `/${ this.api_prefix }/${ this.module_prefix }/team_usage`;
|
|
156
|
+
const prev_method = this.method;
|
|
157
|
+
|
|
158
|
+
this.method = 'get';
|
|
159
|
+
|
|
160
|
+
payload = this.handle_request_payload(payload);
|
|
161
|
+
let response = this.api_request(url, payload);
|
|
162
|
+
response = await this.handle_response(response, false);
|
|
163
|
+
|
|
164
|
+
this.method = prev_method;
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
response: response,
|
|
168
|
+
payload : payload,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
|
|
119
173
|
/**
|
|
120
174
|
* POST /web_api/file_app/delete_file
|
|
121
175
|
*
|
|
@@ -136,4 +190,26 @@ export class FileAppApi extends ApiAbstractClass
|
|
|
136
190
|
payload : payload,
|
|
137
191
|
};
|
|
138
192
|
}
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* POST /web_api/file_app/delete_files
|
|
197
|
+
*
|
|
198
|
+
* @param {object} payload
|
|
199
|
+
* @param {string[]} payload.file_uuids
|
|
200
|
+
*
|
|
201
|
+
* @returns {Promise<{payload: object, response: object}>}
|
|
202
|
+
*/
|
|
203
|
+
async delete_files(payload)
|
|
204
|
+
{
|
|
205
|
+
const url = `/${ this.api_prefix }/${ this.module_prefix }/delete_files`;
|
|
206
|
+
payload = this.handle_request_payload(payload);
|
|
207
|
+
let response = this.api_request(url, payload);
|
|
208
|
+
response = await this.handle_response(response, false);
|
|
209
|
+
|
|
210
|
+
return {
|
|
211
|
+
response: response,
|
|
212
|
+
payload : payload,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
139
215
|
}
|
package/publish/api/index.js
CHANGED
|
@@ -38,6 +38,14 @@ import { PublicTextDocumentApi } from "./public_text_document_api.js";
|
|
|
38
38
|
import { TextDocumentFolderApi } from "./text_document_folder_api.js";
|
|
39
39
|
import { FileAppApi } from "./file_app_api.js";
|
|
40
40
|
import { EventApi } from "./event_api.js";
|
|
41
|
+
import { AutotestCaseApi } from "./autotest_case_api.js";
|
|
42
|
+
import { AutotestSuiteApi } from "./autotest_suite_api.js";
|
|
43
|
+
import { AutotestStepApi } from "./autotest_step_api.js";
|
|
44
|
+
import { AutotestRunApi } from "./autotest_run_api.js";
|
|
45
|
+
import { AutotestResultApi } from "./autotest_result_api.js";
|
|
46
|
+
import { ObjectRepositoryFolderApi } from "./object_repository_folder_api.js";
|
|
47
|
+
import { ObjectRepositoryPageApi } from "./object_repository_page_api.js";
|
|
48
|
+
import { ObjectRepositoryElementApi } from "./object_repository_element_api.js";
|
|
41
49
|
|
|
42
50
|
/**
|
|
43
51
|
* Обертка над axios
|
|
@@ -184,6 +192,14 @@ export class Api
|
|
|
184
192
|
this.custom_property_value = new CustomPropertyValueApi(payload);
|
|
185
193
|
this.custom_property_option = new CustomPropertyOptionApi(payload);
|
|
186
194
|
this.event = new EventApi(payload);
|
|
195
|
+
this.autotest_case = new AutotestCaseApi(payload);
|
|
196
|
+
this.autotest_suite = new AutotestSuiteApi(payload);
|
|
197
|
+
this.autotest_step = new AutotestStepApi(payload);
|
|
198
|
+
this.autotest_run = new AutotestRunApi(payload);
|
|
199
|
+
this.autotest_result = new AutotestResultApi(payload);
|
|
200
|
+
this.object_repository_folder = new ObjectRepositoryFolderApi(payload);
|
|
201
|
+
this.object_repository_page = new ObjectRepositoryPageApi(payload);
|
|
202
|
+
this.object_repository_element = new ObjectRepositoryElementApi(payload);
|
|
187
203
|
this.execution_context = new ExecutionContextApi(payload);
|
|
188
204
|
this.browser_tools_util_execution = new BrowserToolsUtilExecutionApi(payload);
|
|
189
205
|
this.browser_tools_screenshot_multi = new BrowserToolsScreenshotMultiApi(payload);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class";
|
|
2
|
+
import { typeObjectRepositoryElement } from "../types/family_elements/typeObjectRepositoryElement";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @version v.1.0 (05/09/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class ObjectRepositoryElementApi extends ApiAbstractElementClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'object_repository_element';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
this.set_element_class_instance(typeObjectRepositoryElement);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class";
|
|
2
|
+
import { typeObjectRepositoryFolder } from "../types/family_elements/typeObjectRepositoryFolder";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @version v.1.0 (05/09/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class ObjectRepositoryFolderApi extends ApiAbstractElementClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'object_repository_folder';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
this.set_element_class_instance(typeObjectRepositoryFolder);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class";
|
|
2
|
+
import { typeObjectRepositoryPage } from "../types/family_elements/typeObjectRepositoryPage";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @version v.1.0 (05/09/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class ObjectRepositoryPageApi extends ApiAbstractElementClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'object_repository_page';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
this.set_element_class_instance(typeObjectRepositoryPage);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -107,6 +107,20 @@ export class MenuConfigurationMain extends abstractAppConfiguration
|
|
|
107
107
|
sort_order: 3,
|
|
108
108
|
}));
|
|
109
109
|
|
|
110
|
+
response.push(new typeMenuElement({
|
|
111
|
+
link : `/web/${ locale }/autotest_case/listing`,
|
|
112
|
+
text : 'Autotest Cases',
|
|
113
|
+
icon : '?',
|
|
114
|
+
sort_order: 4,
|
|
115
|
+
}));
|
|
116
|
+
|
|
117
|
+
response.push(new typeMenuElement({
|
|
118
|
+
link : `/web/${ locale }/autotest_run/listing`,
|
|
119
|
+
text : 'Autotest Runs',
|
|
120
|
+
icon : '?',
|
|
121
|
+
sort_order: 5,
|
|
122
|
+
}));
|
|
123
|
+
|
|
110
124
|
/*response.push(new typeMenuElement({
|
|
111
125
|
link : `/web/${ locale }/task/listing`,
|
|
112
126
|
text : 'To Do',
|
|
@@ -20,6 +20,14 @@ import { typeUtilExecutionScreenshotMulti } from '../../../types/family_utils/ty
|
|
|
20
20
|
import { typeUtilExecutionUrlInspect } from '../../../types/family_utils/typeUtilExecutionUrlInspect.js';
|
|
21
21
|
import { typeTextDocument } from '../../../types/family_files/typeTextDocument.js';
|
|
22
22
|
import { typeEvent } from '../../../types/family_events/typeEvent.js';
|
|
23
|
+
import { typeAutotestCase } from '../../../types/family_elements/typeAutotestCase.js';
|
|
24
|
+
import { typeAutotestSuite } from '../../../types/family_elements/typeAutotestSuite.js';
|
|
25
|
+
import { typeAutotestStep } from '../../../types/family_elements/typeAutotestStep.js';
|
|
26
|
+
import { typeAutotestRun } from '../../../types/family_elements/typeAutotestRun.js';
|
|
27
|
+
import { typeAutotestResult } from '../../../types/family_elements/typeAutotestResult.js';
|
|
28
|
+
import { typeObjectRepositoryFolder } from '../../../types/family_elements/typeObjectRepositoryFolder.js';
|
|
29
|
+
import { typeObjectRepositoryPage } from '../../../types/family_elements/typeObjectRepositoryPage.js';
|
|
30
|
+
import { typeObjectRepositoryElement } from '../../../types/family_elements/typeObjectRepositoryElement.js';
|
|
23
31
|
|
|
24
32
|
/**
|
|
25
33
|
* Реестр классов моделей по ключу `element_type`.
|
|
@@ -55,4 +63,12 @@ export const TABLE_ELEMENT_MODELS = {
|
|
|
55
63
|
util_execution : typeUtilExecutionScreenshotMulti,
|
|
56
64
|
util_execution_url_inspect: typeUtilExecutionUrlInspect,
|
|
57
65
|
event : typeEvent,
|
|
66
|
+
autotest_case : typeAutotestCase,
|
|
67
|
+
autotest_suite : typeAutotestSuite,
|
|
68
|
+
autotest_step : typeAutotestStep,
|
|
69
|
+
autotest_run : typeAutotestRun,
|
|
70
|
+
autotest_result : typeAutotestResult,
|
|
71
|
+
object_repository_folder : typeObjectRepositoryFolder,
|
|
72
|
+
object_repository_page : typeObjectRepositoryPage,
|
|
73
|
+
object_repository_element: typeObjectRepositoryElement,
|
|
58
74
|
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { typeAutotestCase } from '../../../types/family_elements/typeAutotestCase.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import { createColumn, createGoToColumn, createPrimaryKeyColumn, createRowSelectColumn } from '../helpers/column_factory.js';
|
|
4
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
function build_autotest_case_listing_columns(locale, { include_select = true, include_goto = true, include_kind = false } = {})
|
|
8
|
+
{
|
|
9
|
+
const model = new typeAutotestCase();
|
|
10
|
+
const columns = [];
|
|
11
|
+
|
|
12
|
+
if (include_select)
|
|
13
|
+
{
|
|
14
|
+
columns.push(createRowSelectColumn());
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
columns.push(createPrimaryKeyColumn(model, locale));
|
|
18
|
+
columns.push(createColumn(model, locale, 'autotest_case_title', {
|
|
19
|
+
width : '480',
|
|
20
|
+
is_editable: true,
|
|
21
|
+
is_required: true,
|
|
22
|
+
is_title : true,
|
|
23
|
+
}));
|
|
24
|
+
columns.push(createColumn(model, locale, 'autotest_case_status', {
|
|
25
|
+
width : '150',
|
|
26
|
+
is_editable: true,
|
|
27
|
+
is_required: true,
|
|
28
|
+
}));
|
|
29
|
+
if (include_kind)
|
|
30
|
+
{
|
|
31
|
+
columns.push(createColumn(model, locale, 'autotest_case_kind', {
|
|
32
|
+
width : '140',
|
|
33
|
+
is_editable: false,
|
|
34
|
+
is_required: true,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
columns.push(createColumn(model, locale, 'tags', {
|
|
38
|
+
width : '220',
|
|
39
|
+
is_editable: false,
|
|
40
|
+
is_sortable: false,
|
|
41
|
+
is_required: false,
|
|
42
|
+
}));
|
|
43
|
+
columns.push(createColumn(model, locale, 'created_at', { width: '170', is_required: true }));
|
|
44
|
+
if (include_goto)
|
|
45
|
+
{
|
|
46
|
+
columns.push(createGoToColumn(model, locale));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return columns;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Секции `autotest_case`: `listing`.
|
|
55
|
+
*
|
|
56
|
+
* @param {Object} config
|
|
57
|
+
* @returns {void}
|
|
58
|
+
*/
|
|
59
|
+
export function bootstrap_autotest_case(config)
|
|
60
|
+
{
|
|
61
|
+
const locale = UserService.get_current_language();
|
|
62
|
+
|
|
63
|
+
registerSection(config, 'autotest_case', 'listing', build_autotest_case_listing_columns(locale), {
|
|
64
|
+
for: createListingFor([ 'project_id' ], { add: [ 'tags', 'pre_autotest_case_ids' ] }),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
registerSection(config, 'autotest_case', 'picker', build_autotest_case_listing_columns(locale, {
|
|
68
|
+
include_goto: false,
|
|
69
|
+
include_kind: true,
|
|
70
|
+
}), {
|
|
71
|
+
for: createListingFor([ 'project_id' ]),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { typeAutotestResult } from '../../../types/family_elements/typeAutotestResult.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import { createColumn, createGoToColumn, createPrimaryKeyColumn } from '../helpers/column_factory.js';
|
|
4
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
function build_autotest_result_listing_columns(locale)
|
|
8
|
+
{
|
|
9
|
+
const model = new typeAutotestResult();
|
|
10
|
+
|
|
11
|
+
return [
|
|
12
|
+
createPrimaryKeyColumn(model, locale),
|
|
13
|
+
createColumn(model, locale, 'autotest_run_id', { width: '120', is_required: true }),
|
|
14
|
+
createColumn(model, locale, 'autotest_case_id', { width: '140', is_required: true }),
|
|
15
|
+
createColumn(model, locale, 'autotest_result_status', {
|
|
16
|
+
width : '150',
|
|
17
|
+
is_editable: false,
|
|
18
|
+
is_required: true,
|
|
19
|
+
}),
|
|
20
|
+
createColumn(model, locale, 'finished_at', { width: '170', is_required: true }),
|
|
21
|
+
createGoToColumn(model, locale),
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
function build_autotest_result_embedded_columns(locale)
|
|
27
|
+
{
|
|
28
|
+
const model = new typeAutotestResult();
|
|
29
|
+
|
|
30
|
+
return [
|
|
31
|
+
createPrimaryKeyColumn(model, locale),
|
|
32
|
+
createColumn(model, locale, 'autotest_case_id', { width: '140', is_required: true }),
|
|
33
|
+
createColumn(model, locale, 'autotest_result_status', {
|
|
34
|
+
width : '150',
|
|
35
|
+
is_editable: false,
|
|
36
|
+
is_required: true,
|
|
37
|
+
}),
|
|
38
|
+
createColumn(model, locale, 'finished_at', { width: '170', is_required: true }),
|
|
39
|
+
createGoToColumn(model, locale),
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @param {Object} config
|
|
46
|
+
* @returns {void}
|
|
47
|
+
*/
|
|
48
|
+
export function bootstrap_autotest_result(config)
|
|
49
|
+
{
|
|
50
|
+
const locale = UserService.get_current_language();
|
|
51
|
+
|
|
52
|
+
registerSection(config, 'autotest_result', 'listing', build_autotest_result_listing_columns(locale), {
|
|
53
|
+
for: createListingFor([ 'autotest_run_id' ]),
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
registerSection(config, 'autotest_result', 'embedded', build_autotest_result_embedded_columns(locale), {
|
|
57
|
+
for: createListingFor([ 'autotest_run_id' ]),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { typeAutotestRun } from '../../../types/family_elements/typeAutotestRun.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import { createColumn, createGoToColumn, createPrimaryKeyColumn, createRowSelectColumn } from '../helpers/column_factory.js';
|
|
4
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
function build_autotest_run_listing_columns(locale, { include_select = true } = {})
|
|
8
|
+
{
|
|
9
|
+
const model = new typeAutotestRun();
|
|
10
|
+
const columns = [];
|
|
11
|
+
|
|
12
|
+
if (include_select)
|
|
13
|
+
{
|
|
14
|
+
columns.push(createRowSelectColumn());
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
columns.push(createPrimaryKeyColumn(model, locale));
|
|
18
|
+
columns.push(createColumn(model, locale, 'autotest_run_status', {
|
|
19
|
+
width : '150',
|
|
20
|
+
is_editable: false,
|
|
21
|
+
is_required: true,
|
|
22
|
+
}));
|
|
23
|
+
columns.push(createColumn(model, locale, 'pass_percent', {
|
|
24
|
+
width : '180',
|
|
25
|
+
is_editable: false,
|
|
26
|
+
is_filter : false,
|
|
27
|
+
is_required: false,
|
|
28
|
+
}));
|
|
29
|
+
columns.push(createColumn(model, locale, 'execution_context_id', {
|
|
30
|
+
width : '220',
|
|
31
|
+
is_editable: false,
|
|
32
|
+
is_required: true,
|
|
33
|
+
}));
|
|
34
|
+
columns.push(createColumn(model, locale, 'team_domain_id', {
|
|
35
|
+
width : '180',
|
|
36
|
+
is_editable: false,
|
|
37
|
+
is_required: true,
|
|
38
|
+
}));
|
|
39
|
+
columns.push(createColumn(model, locale, 'tags', {
|
|
40
|
+
width : '220',
|
|
41
|
+
is_editable: false,
|
|
42
|
+
is_sortable: false,
|
|
43
|
+
is_required: false,
|
|
44
|
+
}));
|
|
45
|
+
columns.push(createColumn(model, locale, 'started_at', { width: '170', is_required: true }));
|
|
46
|
+
columns.push(createColumn(model, locale, 'finished_at', { width: '170', is_required: true }));
|
|
47
|
+
columns.push(createGoToColumn(model, locale));
|
|
48
|
+
|
|
49
|
+
return columns;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Секции `autotest_run`: `listing` — отдельный listing от `test_run`.
|
|
55
|
+
*
|
|
56
|
+
* @param {Object} config
|
|
57
|
+
* @returns {void}
|
|
58
|
+
*/
|
|
59
|
+
export function bootstrap_autotest_run(config)
|
|
60
|
+
{
|
|
61
|
+
const locale = UserService.get_current_language();
|
|
62
|
+
|
|
63
|
+
registerSection(config, 'autotest_run', 'listing', build_autotest_run_listing_columns(locale), {
|
|
64
|
+
for: createListingFor([ 'project_id' ], { add: [ 'tags' ] }),
|
|
65
|
+
});
|
|
66
|
+
}
|