complexqa_frontend_core 1.28.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/api_abstract_element_class.js +35 -0
- 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/sections/test_case_step.js +66 -66
- 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/core/0_familyGeneralElement.js +43 -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/element_translate/typeTestCase.i18n.js +414 -414
- package/publish/types/element_translate/typeTestCaseStep.i18n.js +179 -179
- package/publish/types/family_elements/0_familyGeneralElement.js +43 -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_elements/typeTestCase.js +5 -6
- package/publish/types/family_elements/typeTestCaseStep.js +2 -2
- 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
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { typeAutotestStep } from '../../../types/family_elements/typeAutotestStep.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import { createColumn, createGoToColumn } from '../helpers/column_factory.js';
|
|
4
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
5
|
+
import { typeTableColumn } from '../../../types/family_service/typeTableColumn.js';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
function build_autotest_step_listing_columns(locale)
|
|
9
|
+
{
|
|
10
|
+
const model = new typeAutotestStep();
|
|
11
|
+
|
|
12
|
+
return [
|
|
13
|
+
createColumn(model, locale, 'sort_order', {
|
|
14
|
+
width : '120',
|
|
15
|
+
sort_order : '0',
|
|
16
|
+
default_sort: 'asc',
|
|
17
|
+
is_editable : true,
|
|
18
|
+
is_filter : false,
|
|
19
|
+
}),
|
|
20
|
+
createColumn(model, locale, 'action_name', {
|
|
21
|
+
width : '180',
|
|
22
|
+
is_editable: true,
|
|
23
|
+
is_required: true,
|
|
24
|
+
is_filter : false,
|
|
25
|
+
is_sortable: false,
|
|
26
|
+
}),
|
|
27
|
+
createColumn(model, locale, 'target', {
|
|
28
|
+
width : '280',
|
|
29
|
+
is_editable: true,
|
|
30
|
+
is_filter : false,
|
|
31
|
+
is_sortable: false,
|
|
32
|
+
}),
|
|
33
|
+
createColumn(model, locale, 'value_text', {
|
|
34
|
+
width : '360',
|
|
35
|
+
is_editable: true,
|
|
36
|
+
is_title : true,
|
|
37
|
+
is_filter : false,
|
|
38
|
+
is_sortable: false,
|
|
39
|
+
}),
|
|
40
|
+
createColumn(model, locale, 'timeout_ms', {
|
|
41
|
+
width : '140',
|
|
42
|
+
is_editable: true,
|
|
43
|
+
is_filter : false,
|
|
44
|
+
is_sortable: false,
|
|
45
|
+
}),
|
|
46
|
+
new typeTableColumn({
|
|
47
|
+
header_name : '',
|
|
48
|
+
field : 'autotest_step_id',
|
|
49
|
+
width : '80',
|
|
50
|
+
sort_order : '99',
|
|
51
|
+
is_sortable : false,
|
|
52
|
+
is_filter : false,
|
|
53
|
+
is_editable : false,
|
|
54
|
+
column_kind : 'sort_action',
|
|
55
|
+
}),
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Секции `autotest_step`: `listing` - шаги на карточке автотеста.
|
|
62
|
+
*
|
|
63
|
+
* @param {Object} config
|
|
64
|
+
* @returns {void}
|
|
65
|
+
*/
|
|
66
|
+
export function bootstrap_autotest_step(config)
|
|
67
|
+
{
|
|
68
|
+
const locale = UserService.get_current_language();
|
|
69
|
+
const model = new typeAutotestStep();
|
|
70
|
+
|
|
71
|
+
registerSection(config, 'autotest_step', 'listing', build_autotest_step_listing_columns(locale), {
|
|
72
|
+
for: createListingFor([ 'autotest_case_id' ]),
|
|
73
|
+
});
|
|
74
|
+
registerSection(config, 'autotest_step', 'where_used', [
|
|
75
|
+
createColumn(model, locale, 'autotest_case_id', { width: '140' }),
|
|
76
|
+
createColumn(model, locale, 'action_name', { width: '180' }),
|
|
77
|
+
createColumn(model, locale, 'sort_order', { width: '120' }),
|
|
78
|
+
createGoToColumn(model, locale),
|
|
79
|
+
], {
|
|
80
|
+
for: createListingFor([ 'object_repository_page_id', 'object_repository_element_id' ], { add: [ 'autotest_case' ] }),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { typeAutotestSuite } from '../../../types/family_elements/typeAutotestSuite.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_suite_listing_columns(locale, { include_select = true } = {})
|
|
8
|
+
{
|
|
9
|
+
const model = new typeAutotestSuite();
|
|
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_suite_title', {
|
|
19
|
+
width : '480',
|
|
20
|
+
is_editable: true,
|
|
21
|
+
is_required: true,
|
|
22
|
+
is_title : true,
|
|
23
|
+
}));
|
|
24
|
+
columns.push(createColumn(model, locale, 'created_at', { width: '170', is_required: true }));
|
|
25
|
+
columns.push(createGoToColumn(model, locale));
|
|
26
|
+
|
|
27
|
+
return columns;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @param {Object} config
|
|
33
|
+
* @returns {void}
|
|
34
|
+
*/
|
|
35
|
+
export function bootstrap_autotest_suite(config)
|
|
36
|
+
{
|
|
37
|
+
const locale = UserService.get_current_language();
|
|
38
|
+
|
|
39
|
+
registerSection(config, 'autotest_suite', 'listing', build_autotest_suite_listing_columns(locale), {
|
|
40
|
+
for: createListingFor([ 'project_id' ]),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { typeObjectRepositoryElement } from '../../../types/family_elements/typeObjectRepositoryElement.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_object_repository_element_listing_columns(locale, { include_select = true } = {})
|
|
8
|
+
{
|
|
9
|
+
const model = new typeObjectRepositoryElement();
|
|
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, 'object_repository_element_title', {
|
|
19
|
+
width : '280',
|
|
20
|
+
is_editable: true,
|
|
21
|
+
is_required: true,
|
|
22
|
+
is_title : true,
|
|
23
|
+
}));
|
|
24
|
+
columns.push(createColumn(model, locale, 'locator_kind', {
|
|
25
|
+
width : '140',
|
|
26
|
+
is_editable: true,
|
|
27
|
+
}));
|
|
28
|
+
columns.push(createColumn(model, locale, 'locator_value', {
|
|
29
|
+
width : '220',
|
|
30
|
+
is_editable: true,
|
|
31
|
+
}));
|
|
32
|
+
columns.push(createColumn(model, locale, 'tags', {
|
|
33
|
+
width : '220',
|
|
34
|
+
is_editable: false,
|
|
35
|
+
is_sortable: false,
|
|
36
|
+
is_required: false,
|
|
37
|
+
}));
|
|
38
|
+
columns.push(createColumn(model, locale, 'created_at', { width: '170', is_required: true }));
|
|
39
|
+
columns.push(createGoToColumn(model, locale));
|
|
40
|
+
|
|
41
|
+
return columns;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @param {Object} config
|
|
47
|
+
* @returns {void}
|
|
48
|
+
*/
|
|
49
|
+
export function bootstrap_object_repository_element(config)
|
|
50
|
+
{
|
|
51
|
+
const locale = UserService.get_current_language();
|
|
52
|
+
|
|
53
|
+
registerSection(config, 'object_repository_element', 'listing', build_object_repository_element_listing_columns(locale), {
|
|
54
|
+
for: createListingFor([ 'project_id', 'object_repository_folder_id' ], { add: [ 'tags' ] }),
|
|
55
|
+
});
|
|
56
|
+
registerSection(config, 'object_repository_element', 'picker', build_object_repository_element_listing_columns(locale, { include_select: true }), {
|
|
57
|
+
for: createListingFor([ 'project_id' ]),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { typeObjectRepositoryFolder } from '../../../types/family_elements/typeObjectRepositoryFolder.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import { createColumn, createPrimaryKeyColumn, createRowSelectColumn } from '../helpers/column_factory.js';
|
|
4
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
function build_object_repository_folder_listing_columns(locale, { include_select = true } = {})
|
|
8
|
+
{
|
|
9
|
+
const model = new typeObjectRepositoryFolder();
|
|
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, 'object_repository_folder_title', {
|
|
19
|
+
width : '480',
|
|
20
|
+
is_editable: true,
|
|
21
|
+
is_required: true,
|
|
22
|
+
is_title : true,
|
|
23
|
+
}));
|
|
24
|
+
columns.push(createColumn(model, locale, 'created_at', { width: '170', is_required: true }));
|
|
25
|
+
|
|
26
|
+
return columns;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param {Object} config
|
|
32
|
+
* @returns {void}
|
|
33
|
+
*/
|
|
34
|
+
export function bootstrap_object_repository_folder(config)
|
|
35
|
+
{
|
|
36
|
+
const locale = UserService.get_current_language();
|
|
37
|
+
|
|
38
|
+
registerSection(config, 'object_repository_folder', 'listing', build_object_repository_folder_listing_columns(locale), {
|
|
39
|
+
for: createListingFor([ 'project_id', 'parent_object_repository_folder_id', 'object_repository_folder_kind' ], { add: [ 'tags' ] }),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { typeObjectRepositoryPage } from '../../../types/family_elements/typeObjectRepositoryPage.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_object_repository_page_listing_columns(locale, { include_select = true } = {})
|
|
8
|
+
{
|
|
9
|
+
const model = new typeObjectRepositoryPage();
|
|
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, 'object_repository_page_title', {
|
|
19
|
+
width : '320',
|
|
20
|
+
is_editable: true,
|
|
21
|
+
is_required: true,
|
|
22
|
+
is_title : true,
|
|
23
|
+
}));
|
|
24
|
+
columns.push(createColumn(model, locale, 'path', {
|
|
25
|
+
width : '280',
|
|
26
|
+
is_editable: true,
|
|
27
|
+
}));
|
|
28
|
+
columns.push(createColumn(model, locale, 'tags', {
|
|
29
|
+
width : '220',
|
|
30
|
+
is_editable: false,
|
|
31
|
+
is_sortable: false,
|
|
32
|
+
is_required: false,
|
|
33
|
+
}));
|
|
34
|
+
columns.push(createColumn(model, locale, 'created_at', { width: '170', is_required: true }));
|
|
35
|
+
columns.push(createGoToColumn(model, locale));
|
|
36
|
+
|
|
37
|
+
return columns;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @param {Object} config
|
|
43
|
+
* @returns {void}
|
|
44
|
+
*/
|
|
45
|
+
export function bootstrap_object_repository_page(config)
|
|
46
|
+
{
|
|
47
|
+
const locale = UserService.get_current_language();
|
|
48
|
+
|
|
49
|
+
registerSection(config, 'object_repository_page', 'listing', build_object_repository_page_listing_columns(locale), {
|
|
50
|
+
for: createListingFor([ 'project_id', 'object_repository_folder_id' ], { add: [ 'tags' ] }),
|
|
51
|
+
});
|
|
52
|
+
registerSection(config, 'object_repository_page', 'picker', build_object_repository_page_listing_columns(locale, { include_select: true }), {
|
|
53
|
+
for: createListingFor([ 'project_id' ]),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import { typeTestCaseStep } from '../../../types/family_elements/typeTestCaseStep.js';
|
|
2
|
-
import { UserService } from '../../../services/UserService.js';
|
|
3
|
-
import { createColumn } from '../helpers/column_factory.js';
|
|
4
|
-
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
5
|
-
import { typeTableColumn } from '../../../types/family_service/typeTableColumn.js';
|
|
6
|
-
|
|
7
|
-
function build_test_case_step_shared_columns(locale)
|
|
8
|
-
{
|
|
9
|
-
const model = new typeTestCaseStep();
|
|
10
|
-
|
|
11
|
-
return [
|
|
12
|
-
createColumn(model, locale, 'sort_order', {
|
|
13
|
-
width : '150',
|
|
14
|
-
sort_order : '0',
|
|
15
|
-
default_sort: 'asc',
|
|
16
|
-
is_editable : true,
|
|
17
|
-
}),
|
|
18
|
-
createColumn(model, locale, 'step_element', { width: '200', is_editable: true }),
|
|
19
|
-
createColumn(model, locale, 'step_element_action', { width: '200', is_editable: true }),
|
|
20
|
-
createColumn(model, locale, '
|
|
21
|
-
width : '480',
|
|
22
|
-
is_editable: true,
|
|
23
|
-
is_title : true,
|
|
24
|
-
}),
|
|
25
|
-
new typeTableColumn({
|
|
26
|
-
header_name : '',
|
|
27
|
-
field : 'test_case_step_id',
|
|
28
|
-
width : '80',
|
|
29
|
-
sort_order : '99',
|
|
30
|
-
is_sortable : false,
|
|
31
|
-
is_filter : false,
|
|
32
|
-
is_editable : false,
|
|
33
|
-
column_kind : 'sort_action',
|
|
34
|
-
}),
|
|
35
|
-
];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function build_test_case_steps_columns(locale)
|
|
39
|
-
{
|
|
40
|
-
return build_test_case_step_shared_columns(locale);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function build_test_case_presteps_columns(locale)
|
|
44
|
-
{
|
|
45
|
-
return build_test_case_step_shared_columns(locale);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Секции `test_case_step`: `steps`, `presteps` (шаги и престепы тест-кейса).
|
|
50
|
-
*
|
|
51
|
-
* @param {Object<string, Object<string, { config: import('../../../types/family_service/typeTableConfiguration.js').typeTableConfiguration }>>} config
|
|
52
|
-
* @returns {void}
|
|
53
|
-
*/
|
|
54
|
-
export function bootstrap_test_case_step(config)
|
|
55
|
-
{
|
|
56
|
-
const locale = UserService.get_current_language();
|
|
57
|
-
const embedded_for = createListingFor([ 'test_case_id', 'test_case_step_type' ]);
|
|
58
|
-
|
|
59
|
-
registerSection(config, 'test_case_step', 'steps', build_test_case_steps_columns(locale), {
|
|
60
|
-
for: embedded_for,
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
registerSection(config, 'test_case_step', 'presteps', build_test_case_presteps_columns(locale), {
|
|
64
|
-
for: embedded_for,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
1
|
+
import { typeTestCaseStep } from '../../../types/family_elements/typeTestCaseStep.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import { createColumn } from '../helpers/column_factory.js';
|
|
4
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
5
|
+
import { typeTableColumn } from '../../../types/family_service/typeTableColumn.js';
|
|
6
|
+
|
|
7
|
+
function build_test_case_step_shared_columns(locale)
|
|
8
|
+
{
|
|
9
|
+
const model = new typeTestCaseStep();
|
|
10
|
+
|
|
11
|
+
return [
|
|
12
|
+
createColumn(model, locale, 'sort_order', {
|
|
13
|
+
width : '150',
|
|
14
|
+
sort_order : '0',
|
|
15
|
+
default_sort: 'asc',
|
|
16
|
+
is_editable : true,
|
|
17
|
+
}),
|
|
18
|
+
createColumn(model, locale, 'step_element', { width: '200', is_editable: true }),
|
|
19
|
+
createColumn(model, locale, 'step_element_action', { width: '200', is_editable: true }),
|
|
20
|
+
createColumn(model, locale, 'step_expected_result', {
|
|
21
|
+
width : '480',
|
|
22
|
+
is_editable: true,
|
|
23
|
+
is_title : true,
|
|
24
|
+
}),
|
|
25
|
+
new typeTableColumn({
|
|
26
|
+
header_name : '',
|
|
27
|
+
field : 'test_case_step_id',
|
|
28
|
+
width : '80',
|
|
29
|
+
sort_order : '99',
|
|
30
|
+
is_sortable : false,
|
|
31
|
+
is_filter : false,
|
|
32
|
+
is_editable : false,
|
|
33
|
+
column_kind : 'sort_action',
|
|
34
|
+
}),
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function build_test_case_steps_columns(locale)
|
|
39
|
+
{
|
|
40
|
+
return build_test_case_step_shared_columns(locale);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function build_test_case_presteps_columns(locale)
|
|
44
|
+
{
|
|
45
|
+
return build_test_case_step_shared_columns(locale);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Секции `test_case_step`: `steps`, `presteps` (шаги и престепы тест-кейса).
|
|
50
|
+
*
|
|
51
|
+
* @param {Object<string, Object<string, { config: import('../../../types/family_service/typeTableConfiguration.js').typeTableConfiguration }>>} config
|
|
52
|
+
* @returns {void}
|
|
53
|
+
*/
|
|
54
|
+
export function bootstrap_test_case_step(config)
|
|
55
|
+
{
|
|
56
|
+
const locale = UserService.get_current_language();
|
|
57
|
+
const embedded_for = createListingFor([ 'test_case_id', 'test_case_step_type' ]);
|
|
58
|
+
|
|
59
|
+
registerSection(config, 'test_case_step', 'steps', build_test_case_steps_columns(locale), {
|
|
60
|
+
for: embedded_for,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
registerSection(config, 'test_case_step', 'presteps', build_test_case_presteps_columns(locale), {
|
|
64
|
+
for: embedded_for,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
@@ -19,6 +19,14 @@ import { bootstrap_user } from './sections/user.js';
|
|
|
19
19
|
import { bootstrap_team } from './sections/team.js';
|
|
20
20
|
import { bootstrap_project } from './sections/project.js';
|
|
21
21
|
import { bootstrap_text_document } from './sections/text_document.js';
|
|
22
|
+
import { bootstrap_autotest_case } from './sections/autotest_case.js';
|
|
23
|
+
import { bootstrap_autotest_suite } from './sections/autotest_suite.js';
|
|
24
|
+
import { bootstrap_autotest_run } from './sections/autotest_run.js';
|
|
25
|
+
import { bootstrap_autotest_result } from './sections/autotest_result.js';
|
|
26
|
+
import { bootstrap_autotest_step } from './sections/autotest_step.js';
|
|
27
|
+
import { bootstrap_object_repository_folder } from './sections/object_repository_folder.js';
|
|
28
|
+
import { bootstrap_object_repository_page } from './sections/object_repository_page.js';
|
|
29
|
+
import { bootstrap_object_repository_element } from './sections/object_repository_element.js';
|
|
22
30
|
import { localizeTableSection } from './helpers/column_locale.js';
|
|
23
31
|
|
|
24
32
|
/**
|
|
@@ -134,6 +142,14 @@ export class TableConfiguration extends abstractAppConfiguration
|
|
|
134
142
|
bootstrap_team(this.config);
|
|
135
143
|
bootstrap_project(this.config);
|
|
136
144
|
bootstrap_text_document(this.config);
|
|
145
|
+
bootstrap_autotest_case(this.config);
|
|
146
|
+
bootstrap_autotest_suite(this.config);
|
|
147
|
+
bootstrap_autotest_run(this.config);
|
|
148
|
+
bootstrap_autotest_result(this.config);
|
|
149
|
+
bootstrap_autotest_step(this.config);
|
|
150
|
+
bootstrap_object_repository_folder(this.config);
|
|
151
|
+
bootstrap_object_repository_page(this.config);
|
|
152
|
+
bootstrap_object_repository_element(this.config);
|
|
137
153
|
|
|
138
154
|
this.state.loaded = true;
|
|
139
155
|
}
|
package/publish/index.js
CHANGED
|
@@ -14,6 +14,33 @@ export { typeTestCase } from './types/family_elements/typeTestCase.js';
|
|
|
14
14
|
export { typeTestCaseStep } from './types/family_elements/typeTestCaseStep.js';
|
|
15
15
|
export { typeTestRun } from './types/family_elements/typeTestRun.js'
|
|
16
16
|
export { typeTestRunResult } from './types/family_elements/typeTestRunResult.js'
|
|
17
|
+
export { typeAutotestCase } from './types/family_elements/typeAutotestCase.js';
|
|
18
|
+
export { typeAutotestSuite } from './types/family_elements/typeAutotestSuite.js';
|
|
19
|
+
export { typeAutotestStep } from './types/family_elements/typeAutotestStep.js';
|
|
20
|
+
export { typeAutotestStepTarget } from './types/family_elements/typeAutotestStepTarget.js';
|
|
21
|
+
export { typeAutotestStepAction } from './types/family_elements/autotest_step_actions/typeAutotestStepAction.js';
|
|
22
|
+
export { typeAutotestStepLocatorAction } from './types/family_elements/autotest_step_actions/typeAutotestStepLocatorAction.js';
|
|
23
|
+
export { typeAutotestStepLocatorValueAction } from './types/family_elements/autotest_step_actions/typeAutotestStepLocatorValueAction.js';
|
|
24
|
+
export {
|
|
25
|
+
list_autotest_step_actions,
|
|
26
|
+
get_autotest_step_action_entry,
|
|
27
|
+
get_autotest_step_action_class,
|
|
28
|
+
is_autotest_step_action_known,
|
|
29
|
+
} from './types/family_elements/autotest_step_actions/autotestStepActionCatalog.js';
|
|
30
|
+
export {
|
|
31
|
+
AUTOTEST_STEP_LOCATOR_KINDS,
|
|
32
|
+
AUTOTEST_STEP_PLAYWRIGHT_ROLES,
|
|
33
|
+
is_autotest_step_locator_kind,
|
|
34
|
+
} from './types/family_elements/autotest_step_actions/autotestStepLocatorKind.js';
|
|
35
|
+
export {
|
|
36
|
+
hydrate_autotest_step_target,
|
|
37
|
+
build_autotest_step_target_storage,
|
|
38
|
+
} from './types/family_elements/autotest_step_actions/autotestStepTargetNormalizer.js';
|
|
39
|
+
export { typeAutotestRun } from './types/family_elements/typeAutotestRun.js';
|
|
40
|
+
export { typeAutotestResult } from './types/family_elements/typeAutotestResult.js';
|
|
41
|
+
export { typeObjectRepositoryFolder } from './types/family_elements/typeObjectRepositoryFolder.js';
|
|
42
|
+
export { typeObjectRepositoryPage } from './types/family_elements/typeObjectRepositoryPage.js';
|
|
43
|
+
export { typeObjectRepositoryElement } from './types/family_elements/typeObjectRepositoryElement.js';
|
|
17
44
|
export { typeTestAccount } from './types/family_elements/typeTestAccount.js'
|
|
18
45
|
export {typeBug} from './types/family_elements/typeBug.js';
|
|
19
46
|
export { typeTag } from './types/family_elements/typeTag.js';
|
|
@@ -50,6 +77,7 @@ export { typeEvent } from './types/family_events/typeEvent.js';
|
|
|
50
77
|
export { familyFile } from './types/family_files/familyFile.js';
|
|
51
78
|
export { typeFile } from './types/family_files/typeFile.js';
|
|
52
79
|
export { typeFileScreenshot } from './types/family_files/typeFileScreenshot.js';
|
|
80
|
+
export { typeFileAutotestScreenshot } from './types/family_files/typeFileAutotestScreenshot.js';
|
|
53
81
|
export { typeFileHtml } from './types/family_files/typeFileHtml.js';
|
|
54
82
|
export { typeFilePostman } from './types/family_files/typeFilePostman.js';
|
|
55
83
|
export { typeFileVideo } from './types/family_files/typeFileVideo.js';
|
|
@@ -355,4 +355,52 @@ export class FileAppService extends abstractService
|
|
|
355
355
|
|
|
356
356
|
return result;
|
|
357
357
|
}
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Team / project Files listing.
|
|
362
|
+
*
|
|
363
|
+
* @param {object} [payload]
|
|
364
|
+
* @param {number} [payload.project_id]
|
|
365
|
+
*
|
|
366
|
+
* @returns {Promise<object>}
|
|
367
|
+
*/
|
|
368
|
+
static async list_team_files(payload = {})
|
|
369
|
+
{
|
|
370
|
+
const api = FileAppService.#get_api_service();
|
|
371
|
+
const wrap = await api.file_app.list_team_files(payload);
|
|
372
|
+
const row = await wrap?.response;
|
|
373
|
+
|
|
374
|
+
return row && typeof row === 'object' ? row : { items: [] };
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Soft-delete many files (also clears attachment links on Main).
|
|
380
|
+
*
|
|
381
|
+
* @param {string[]} file_uuids
|
|
382
|
+
*
|
|
383
|
+
* @returns {Promise<object>}
|
|
384
|
+
*/
|
|
385
|
+
static async delete_files(file_uuids)
|
|
386
|
+
{
|
|
387
|
+
const api = FileAppService.#get_api_service();
|
|
388
|
+
const wrap = await api.file_app.delete_files({ file_uuids });
|
|
389
|
+
|
|
390
|
+
return await wrap?.response;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* @param {string} file_uuid
|
|
396
|
+
*
|
|
397
|
+
* @returns {Promise<object>}
|
|
398
|
+
*/
|
|
399
|
+
static async delete_file(file_uuid)
|
|
400
|
+
{
|
|
401
|
+
const api = FileAppService.#get_api_service();
|
|
402
|
+
const wrap = await api.file_app.delete_file({ file_uuid });
|
|
403
|
+
|
|
404
|
+
return await wrap?.response;
|
|
405
|
+
}
|
|
358
406
|
}
|
|
@@ -418,6 +418,49 @@ export class familyGeneralElement
|
|
|
418
418
|
}
|
|
419
419
|
|
|
420
420
|
|
|
421
|
+
/**
|
|
422
|
+
* Mass create. Payload: `{ items: object[] }`.
|
|
423
|
+
*
|
|
424
|
+
* @param {object} payload
|
|
425
|
+
* @param {array} payload.items
|
|
426
|
+
* @param {typeFunctionCallback|object|false} callback
|
|
427
|
+
* @version v.1.0 (29/08/2026)
|
|
428
|
+
*/
|
|
429
|
+
async create_mass(payload, callback)
|
|
430
|
+
{
|
|
431
|
+
if (!this.api_key)
|
|
432
|
+
{
|
|
433
|
+
throw new Error('Error #249-2215 - element has no api_key');
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
if (typeof callback?.before === 'function')
|
|
437
|
+
{
|
|
438
|
+
callback?.before({ payload });
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
return ApiService[ this.api_key ].create_mass(payload).then((response) =>
|
|
442
|
+
{
|
|
443
|
+
if (typeof callback?.success === 'function')
|
|
444
|
+
{
|
|
445
|
+
callback?.success({ response, payload })
|
|
446
|
+
}
|
|
447
|
+
}).catch((error) =>
|
|
448
|
+
{
|
|
449
|
+
echo({ error });
|
|
450
|
+
if (typeof callback?.error === 'function')
|
|
451
|
+
{
|
|
452
|
+
callback?.error({ error, payload })
|
|
453
|
+
}
|
|
454
|
+
}).finally((response) =>
|
|
455
|
+
{
|
|
456
|
+
if (typeof callback?.final === 'function')
|
|
457
|
+
{
|
|
458
|
+
callback?.final({ response, payload })
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
|
|
421
464
|
/**
|
|
422
465
|
* Обновление целой модели элемента
|
|
423
466
|
*
|